fix(bot): 防递归重连 guard - 防止 on_disconnect → reconnect → disconnect 无限递归导致栈溢出
This commit is contained in:
@@ -154,6 +154,7 @@ class XmppAgent(slixmpp.ClientXMPP):
|
||||
self._nick = nick
|
||||
self._muc_joined = False
|
||||
self._recent_sent = []
|
||||
self._reconnecting = False # 防递归重连
|
||||
self.add_event_handler('session_start', self.on_start)
|
||||
self.add_event_handler('message', self.on_msg)
|
||||
self.add_event_handler('disconnected', self.on_disconnect)
|
||||
@@ -174,11 +175,16 @@ class XmppAgent(slixmpp.ClientXMPP):
|
||||
def on_disconnect(self, event):
|
||||
self._muc_joined = False
|
||||
log.info(f"{AGENT_NAME} XMPP 断开")
|
||||
# 自动重连:slixmpp 1.15.0 没有 auto_reconnect 属性,需手动
|
||||
if self._reconnecting:
|
||||
log.warning(f"{AGENT_NAME} 已在重连中,跳过递归重连")
|
||||
return
|
||||
self._reconnecting = True
|
||||
try:
|
||||
self.reconnect(wait=5.0, reason="断线自动重连")
|
||||
except Exception as e:
|
||||
log.warning(f"{AGENT_NAME} 重连失败: {e}")
|
||||
finally:
|
||||
self._reconnecting = False
|
||||
|
||||
def on_msg(self, msg):
|
||||
if msg['type'] in ('chat', 'groupchat'):
|
||||
|
||||
Reference in New Issue
Block a user