mirror of
https://github.com/openmax-server/server.git
synced 2026-05-23 03:51:43 +03:00
fix(chat history): фикс
This commit is contained in:
@@ -20,6 +20,7 @@ class HistoryProcessors(BaseProcessor):
|
|||||||
backward = payload.get("backward", 0)
|
backward = payload.get("backward", 0)
|
||||||
from_time = payload.get("from", 0)
|
from_time = payload.get("from", 0)
|
||||||
getMessages = payload.get("getMessages", True)
|
getMessages = payload.get("getMessages", True)
|
||||||
|
getChat = payload.get("getChat", False)
|
||||||
messages = []
|
messages = []
|
||||||
backward_count = 0
|
backward_count = 0
|
||||||
forward_count = 0
|
forward_count = 0
|
||||||
@@ -79,19 +80,21 @@ class HistoryProcessors(BaseProcessor):
|
|||||||
messages.sort(key=lambda x: x["time"])
|
messages.sort(key=lambda x: x["time"])
|
||||||
|
|
||||||
# Формируем ответ.
|
# Формируем ответ.
|
||||||
# Парсер a23 в MAX-клиенте ждёт ВСЕГДА все 5 полей (messages,
|
# Реальный парсер ответа CHAT_HISTORY в MAX 26.15.x — это az2.j(),
|
||||||
# forward, backward, pos, total). Если каких-то нет — клиент
|
# который ждёт всего 3 поля:
|
||||||
# бросает соединение и история не отображается.
|
# chat — qs2-объект чата (опционально, если getChat=False)
|
||||||
# ВАЖНО: forward/backward здесь = СКОЛЬКО СООБЩЕНИЙ ВЕРНУЛИ
|
# messages — массив сообщений (jr4.a → u6h.Q для каждого)
|
||||||
# (а не "сколько ещё осталось"). Если 0 — клиент игнорирует
|
# messageIds — Set<Long> списка id сообщений в этом ответе
|
||||||
# массив messages и считает что "ничего нет".
|
# Поля forward/backward/pos/total — это парсер a23 для CHAT_MEDIA,
|
||||||
|
# к chat_history они не имеют отношения.
|
||||||
payload = {
|
payload = {
|
||||||
"messages": messages,
|
"messages": messages,
|
||||||
"forward": forward_count, # сколько вернули вперёд
|
"messageIds": [m["id"] for m in messages],
|
||||||
"backward": backward_count, # сколько вернули назад
|
|
||||||
"pos": 0, # позиция курсора (offset)
|
|
||||||
"total": len(messages), # всего в этой пачке
|
|
||||||
}
|
}
|
||||||
|
# chat-объект включается только если клиент просил его (getChat=True).
|
||||||
|
# Структура qs2 огромная (десятки полей), поэтому пока пустой dict.
|
||||||
|
if getChat:
|
||||||
|
payload["chat"] = {}
|
||||||
|
|
||||||
# Собираем пакет
|
# Собираем пакет
|
||||||
packet = self.proto.pack_packet(
|
packet = self.proto.pack_packet(
|
||||||
|
|||||||
Reference in New Issue
Block a user