fix: 私聊回复去重(去掉send_stanza双发)
This commit is contained in:
@@ -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,确保同一客户端收到
|
# 私聊:发到具体resource(Dad发消息时绑定的客户端)
|
||||||
# 不用裸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)
|
||||||
|
|||||||
Reference in New Issue
Block a user