diff --git a/src/common/tools.py b/src/common/tools.py index 7630023..4174951 100644 --- a/src/common/tools.py +++ b/src/common/tools.py @@ -34,12 +34,14 @@ class Tools: # id, cid, chatId, time, type, sender, text, attaches, elements, # link, reactionInfo, updateTime, status, options # Список вытащен дизассемблированием Q() через dexdump. + # type — int-enum для разновидности сообщения (0 = обычное text); + # status — int-enum (1 = ACTIVE/доставлено, 0 часто означает REMOVED). message = { "id": row.get("id") if protocol_type == "mobile" else str(row.get("id")), "cid": int(row.get("cid") or 0), "chatId": int(row.get("chat_id") or 0), "time": int(row.get("time")), - "type": row.get("type") or "USER", # ENUM: USER/CHANNEL/CHANNEL_ADMIN/GROUP + "type": row.get("type") or "USER", # ENUM-строка: USER/CHANNEL/CHANNEL_ADMIN/GROUP "sender": row.get("sender"), "text": row.get("text") or "", "attaches": attaches if isinstance(attaches, list) else [], @@ -47,7 +49,7 @@ class Tools: "reactionInfo": {}, "link": {}, "updateTime": int(row.get("update_time") or row.get("time") or 0), - "status": int(row.get("status") or 0), + "status": int(row.get("status") or 1), # 1 = ACTIVE "options": int(row.get("options") or 0), } diff --git a/src/oneme/processors/history.py b/src/oneme/processors/history.py index 850efdc..9df6450 100644 --- a/src/oneme/processors/history.py +++ b/src/oneme/processors/history.py @@ -93,14 +93,9 @@ 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=51, payload=payload + cmd=self.proto.CMD_OK, seq=seq, opcode=self.opcodes.CHAT_HISTORY, payload=payload ) # Отправялем diff --git a/src/oneme/socket.py b/src/oneme/socket.py index b286e5a..2945ca3 100644 --- a/src/oneme/socket.py +++ b/src/oneme/socket.py @@ -223,9 +223,7 @@ class OnemeMobile: writer, userId, ) - case 49 | 51: - # MAX 26.15.x шлёт CHAT_HISTORY на opcode 51 (раньше был CHAT_MEDIA), - # некоторые билды ещё шлют 49. Поддерживаем оба. + case self.opcodes.CHAT_HISTORY: await self.auth_required( userPhone, self.processors.chat_history,