-
-
Notifications
You must be signed in to change notification settings - Fork 17
Description
Line 289 in b325c95
| async def _send_notification_response(self, chat_id: int, message_id: str) -> None: |
Описание:
Проблема
При использовании MaxClient (WebSocket режим) соединение разрывалось сразу после получения входящего сообщения. Обработчики сообщений (on_message) не вызывались.
Причина
В методе _send_notification_response в файле interfaces.py была инвертирована логика проверки:
Было:
if self._socket is not None and self.is_connected:
return
await self._send_and_wait(opcode=Opcode.NOTIF_MESSAGE, ...)
В WebSocket режиме self._socket = None, поэтому условие всегда было False, и код пытался отправить NOTIF_MESSAGE подтверждение на WebSocket сервер. WebSocket сервер не принимает такие ответы и закрывает соединение.
Решение
Исправить:
if self._socket is None: # WebSocket режим - не отправляем подтверждение
return
if not self.is_connected:
return
await self._send_and_wait(opcode=Opcode.NOTIF_MESSAGE, ...)
Подтверждение NOTIF_MESSAGE нужно отправлять только в Socket режиме (SocketMaxClient). В WebSocket режиме сервер обрабатывает подтверждения иначе.
Затронутые файлы
- src/pymax/interfaces.py — метод _send_notification_response
У меня после исправления заработало корректно.