fix: 私聊回复去重(去掉send_stanza双发)

This commit is contained in:
知微
2026-06-26 23:23:38 +08:00
parent 40d74f89ff
commit 8b5705beae
+1 -12
View File
@@ -230,19 +230,8 @@ class AgentBot(ClientXMPP):
if msg_type == 'groupchat': if msg_type == 'groupchat':
self.send_message(mto=sender, mbody=reply, mtype='groupchat') self.send_message(mto=sender, mbody=reply, mtype='groupchat')
else: else:
# 私聊回复:发到Dad发消息时的具体resource,确保同一客户端收到 # 私聊:发到具体resourceDad发消息时绑定的客户端
# 不用裸JID(避免ejabberd路由到处于stream management pending的旧会话)
self.send_message(mto=sender, mbody=reply, mtype='chat') self.send_message(mto=sender, mbody=reply, mtype='chat')
# 备用也发裸JID(兼容resource可能变化的情况)
bare_jid = sender.split('/')[0] if '/' in sender else sender
import subprocess as sp
from xml.sax.saxutils import escape
safe = escape(reply)
sp.run([
"docker", "exec", "ejabberd", "ejabberdctl", "send_stanza",
AGENT_JID, bare_jid,
f"<message from='{AGENT_JID}' to='{bare_jid}' type='chat' xml:lang='en'><body>{safe}</body></message>"
], capture_output=True, timeout=10)
sent_norm = reply[:100] sent_norm = reply[:100]
self._recent_sent.append(sent_norm) self._recent_sent.append(sent_norm)