This commit is contained in:
bvn13 2026-03-22 19:41:55 +03:00
parent 1d0c3b2e6e
commit 2849e593bf

View File

@ -28,7 +28,8 @@ class JabberConnection(ClientXMPP, JabberRoomJoiner, JabberRoomLeaver, MucJidRes
self.register_plugin("xep_0199") # XMPP Ping
self.add_event_handler("session_start", self._on_session_start)
self.add_event_handler("message", self._on_message)
self.add_event_handler("message", self._on_chat_message)
self.add_event_handler("groupchat_message", self._on_groupchat_message)
self.add_event_handler("failed_auth", self._on_failed_auth)
def set_message_callback(self, callback: MessageCallback) -> None:
@ -51,18 +52,28 @@ class JabberConnection(ClientXMPP, JabberRoomJoiner, JabberRoomLeaver, MucJidRes
except Exception:
logger.exception("Не удалось зайти в комнату %s при старте", room_jid)
async def _on_message(self, msg) -> None:
# Игнорируем собственные сообщения (1:1 чат)
if msg["from"].bare == self.boundjid.bare:
async def _on_chat_message(self, msg) -> None:
"""Обрабатывает только личные сообщения (type=chat)."""
if msg["type"] != "chat":
return
# Игнорируем собственные сообщения в MUC (отражённые сервером)
if msg["type"] == "groupchat" and msg["from"].resource == self._nick:
if msg["from"].bare == self.boundjid.bare:
return
if self._message_callback is not None:
try:
await self._message_callback(msg)
except Exception:
logger.exception("Ошибка в обработчике сообщений")
logger.exception("Ошибка в обработчике личных сообщений")
async def _on_groupchat_message(self, msg) -> None:
"""Обрабатывает сообщения в конференции (type=groupchat)."""
# Игнорируем собственные сообщения, отражённые сервером
if msg["from"].resource == self._nick:
return
if self._message_callback is not None:
try:
await self._message_callback(msg)
except Exception:
logger.exception("Ошибка в обработчике сообщений конференции")
async def _on_failed_auth(self, event) -> None:
logger.error("Ошибка аутентификации XMPP")