Files
aleesa-doc/Message Format.md
2024-08-03 12:48:12 +03:00

4.5 KiB

Формат сообщений

Обмен сообщениями происходит по протоколу redis pubsub.

Сообщения передаются в формате JSON.

Имя поля Тип Примечание
from string Имя отправителя сообщения. Может быть как chat display name так и user display name, в зависимости от того, кто отправил сообщение.
chatid string Уникальный идентификатор чата, из которого было отправлено сообщение. Если чат приватный, это может быть userid отправителя.
userid string Уникальный идентификатор отправителя. Или чата, если сообщение отправляется анонимно.
threadid string Если чат поддерживает тредики, уникальный идентификатор треда, в котором ведётся беседа. Если тредики не поддерживаются, поле отсутствует или пустое.
message string Тело сообщения.
plugin string Идентификатор плагина, от которого изначально пришло сообщение. Например, IRC или Telegram или Jabber. Должно сохраняться на протяжении всей цепочки обработки сообщения - в этот redis-pubsub канал отвечает последний из обработчиков/генераторов сообщения.
mode string Режим, в котором происходит общение. Обычно либо public, либо private.
misc struct Структурка с дополнительными полями.
Имя поля misc Тип Примечание
answer int Может быть 0 или 1. Если поле отсутствует, подразумевается 0. 0, если ответ не требуется и 1, если требуется.
bot_nick string Человекочитаемое имя (display name) бота в чяте. Проставляется по необходимости. (если в процессе генерации ответа требуется имя бота)
csign csign Символ команды в чате. Это может быть ! / . или что-либо иное. С этого символа начинаются простые команды.
fwd_cnt int Количество пересылок сообщений. Необходим для разрыва петель бесконечной пересылки сообщений. Выставляется в 0 демоном-генератором сообщения (например, IRC, Telegram, Jabber), инкрементируется каждым обработчиком, по достижении максимального значения (обычно 5) сообщение должно быть сброшено, а в лог должен упасть варнинг об этом событии.
good_morning int Выставляется в 1, если это утреннее приветствие (message of the day). 0 в противном случае.
msg_format int Выставляется в 1, если требуется/возможно произвести форматирование сообщения.
user_name string Имя пользователя (display name) к которому производится обращение в ответной фразе. Зополняется по необходимости.

Крайне желательно явно заполнять все поля в json-е, чтобы не нагружать логику "угадывания" в соответствующих демонах.

JSON-чики могут быть как в одну строку, так и форматироованы. Кроме наличия всех полей с корректными данными, крайне желательно, чтобы сами json-ы были валидными. loose json и human json здесь недопустимы.