fix(chat history): фикс

This commit is contained in:
zavolo
2026-05-11 00:11:24 +03:00
parent 0d91f6542e
commit 9b60b15538
3 changed files with 7 additions and 12 deletions

View File

@@ -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),
}

View File

@@ -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
)
# Отправялем

View File

@@ -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,