From 0d91f6542e0389c3c2a7eff100801d0b99a84ce1 Mon Sep 17 00:00:00 2001 From: zavolo Date: Sun, 10 May 2026 23:39:08 +0300 Subject: [PATCH] =?UTF-8?q?fix(chat=20history):=20=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/oneme/processors/history.py | 9 +++++++-- src/oneme/socket.py | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/oneme/processors/history.py b/src/oneme/processors/history.py index 9df6450..850efdc 100644 --- a/src/oneme/processors/history.py +++ b/src/oneme/processors/history.py @@ -93,9 +93,14 @@ class HistoryProcessors(BaseProcessor): "total": len(messages), # всего в этой пачке } - # Собираем пакет + # Собираем пакет. + # MAX 26.15.x: в switch-парсере cwb.c() (диспатч по полю u4d.d=short opcode) + # обработчик CHAT_HISTORY (создание a23) висит на #int 51, а не 49. + # opcode 49 в этом switch вообще отсутствует — пакет с ним игнорируется. + # Поэтому отвечаем opcode=51 несмотря на то, что в нашем opcodes.py + # CHAT_HISTORY=49 (это для роутинга запросов, а не для ответов). packet = self.proto.pack_packet( - cmd=self.proto.CMD_OK, seq=seq, opcode=self.opcodes.CHAT_HISTORY, payload=payload + cmd=self.proto.CMD_OK, seq=seq, opcode=51, payload=payload ) # Отправялем diff --git a/src/oneme/socket.py b/src/oneme/socket.py index 2945ca3..b286e5a 100644 --- a/src/oneme/socket.py +++ b/src/oneme/socket.py @@ -223,7 +223,9 @@ class OnemeMobile: writer, userId, ) - case self.opcodes.CHAT_HISTORY: + case 49 | 51: + # MAX 26.15.x шлёт CHAT_HISTORY на opcode 51 (раньше был CHAT_MEDIA), + # некоторые билды ещё шлют 49. Поддерживаем оба. await self.auth_required( userPhone, self.processors.chat_history,