Описание
Сервер не присылает кадр NOTIF_MSG_REACTIONS_CHANGED (opcode 155), когда
собеседник ставит реакцию. Из-за этого on_reaction_update не срабатывает
никогда, хотя подписка и маппинг в библиотеке есть.
Что видно
Включил логирование каждого входящего кадра через on_raw. Пока собеседник
ставил реакцию на моё сообщение, пришло вот что:
opcode=128 поля=['chatId','mark','message','prevMessageId','ttl','unread'] новое сообщение
opcode=129 поля=['chatId','userId'] печатает
opcode=130 поля=['chatId','mark','setAsUnread','userId'] прочитано
opcode=132 поля=['presence','userId'] присутствие
opcode=135 поля=['chat'] чат изменился
Кадра 155 нет. Проверял на TCP-сессии (вход по SMS, Client) и на веб-сессии
(WebClient с QR) — одинаково.
Что интересно
Один раз событие всё же пришло, и разобралось после обхода несовпадения типов:
ValidationError: ReactionUpdateEvent.messageId
Input should be a valid string, input_value=117174623371807158, input_type=int
Max присылает messageId числом, а модель объявляет его строкой — это,
кстати, отдельная мелкая проблема, из-за неё событие падает на разборе и не
доходит до обработчиков. У себя обошёл приведением типа перед валидацией.
Поля того единственного события: ['chat_id', 'counters', 'message_id', 'total_count'].
То есть кадр существует и формат известен, но приходит он в каких-то редких
условиях, которые я нащупать не смог.
Вопрос
Нужно ли что-то дополнительно запрашивать у сервера, чтобы он начал слать
обновления реакций — подписку на чат, флаг в конфигурации сессии, что-то
в handshake? Или это ограничение на стороне Max?
Окружение: maxapi-python 2.4.1, Python 3.12, соединение через SOCKS5-прокси,
проверено и на Client, и на WebClient.
Описание
Сервер не присылает кадр
NOTIF_MSG_REACTIONS_CHANGED(opcode 155), когдасобеседник ставит реакцию. Из-за этого
on_reaction_updateне срабатываетникогда, хотя подписка и маппинг в библиотеке есть.
Что видно
Включил логирование каждого входящего кадра через
on_raw. Пока собеседникставил реакцию на моё сообщение, пришло вот что:
Кадра 155 нет. Проверял на TCP-сессии (вход по SMS,
Client) и на веб-сессии(
WebClientс QR) — одинаково.Что интересно
Один раз событие всё же пришло, и разобралось после обхода несовпадения типов:
Max присылает
messageIdчислом, а модель объявляет его строкой — это,кстати, отдельная мелкая проблема, из-за неё событие падает на разборе и не
доходит до обработчиков. У себя обошёл приведением типа перед валидацией.
Поля того единственного события:
['chat_id', 'counters', 'message_id', 'total_count'].То есть кадр существует и формат известен, но приходит он в каких-то редких
условиях, которые я нащупать не смог.
Вопрос
Нужно ли что-то дополнительно запрашивать у сервера, чтобы он начал слать
обновления реакций — подписку на чат, флаг в конфигурации сессии, что-то
в handshake? Или это ограничение на стороне Max?
Окружение: maxapi-python 2.4.1, Python 3.12, соединение через SOCKS5-прокси,
проверено и на
Client, и наWebClient.