fix: 私聊回复去重(去掉send_stanza双发)
This commit is contained in:
@@ -230,19 +230,8 @@ class AgentBot(ClientXMPP):
|
||||
if msg_type == 'groupchat':
|
||||
self.send_message(mto=sender, mbody=reply, mtype='groupchat')
|
||||
else:
|
||||
# 私聊回复:发到Dad发消息时的具体resource,确保同一客户端收到
|
||||
# 不用裸JID(避免ejabberd路由到处于stream management pending的旧会话)
|
||||
# 私聊:发到具体resource(Dad发消息时绑定的客户端)
|
||||
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]
|
||||
self._recent_sent.append(sent_norm)
|
||||
|
||||
Reference in New Issue
Block a user