73 lines
6.6 KiB
Plaintext
73 lines
6.6 KiB
Plaintext
aleesa-misc
|
|
-----------------------------------------------------------------------------------------------------------------------
|
|
Основной роутер команд. Все протокольные плагины шлют команды сюда, а отсюда команды разлетаются в модули-исполнители и
|
|
ответ от исполнителей идёт обратно заказчику.
|
|
Работает по протоколу Redis pubsub.
|
|
|
|
|
|
Механика работы
|
|
-----------------------------------------------------------------------------------------------------------------------
|
|
Роутер подписан на канал misc.
|
|
|
|
Модули, реализующие "клиентские протоколы" - telegram, irc, jabber и проч, подписаны на канал своего протокола. Входящие
|
|
сообщения они получают только через этот канал.
|
|
|
|
Модули, реализующие иную функциональность также подписаны каждый на свой канал. Кроме того, для реализации
|
|
дополнительных синхронных возможностей, они могут слушать например http запросы на отдельных - ip:портах. Но это уже
|
|
модуль-специфичная настройка.
|
|
|
|
Формат протокола - это json с полями:
|
|
from - модуль (по сути, redis-канал), в который надо ответить
|
|
chatid - чат, из которого прилетело сообщение
|
|
userid - пользователь, на чью фразу мы отвечаем, или пользователь, для которого предназначается ответ
|
|
message - текст сообщения
|
|
plugin - первоначальный источник (по сути, redis-канал) сообщения.
|
|
mode - public или private
|
|
|
|
misc - объект с дополнительными полями:
|
|
|
|
misc->answer - 0 если ответ не требуется и 1 если ответ требуется (использован в модуле craniac), значение
|
|
по-умолчанию 1, если поля нет.
|
|
|
|
misc->bot_nick - ник бота. Типа как, для разных чятов он может быть разный. (Использовано в модуле craniac.) Если
|
|
поле отсутствует, проверка на обращение к боту по нику не происходит.
|
|
|
|
misc->csign - command sign - значок, которым предваряется команда в чятике.Исторически сложилось так, что для
|
|
разных ботов этот символ был разный, например, eggdrop использовал точку, а sulci - восклицательный
|
|
знак. По-умолчанию, aleesa-bot вездепроставляет восклицательный знак, если во входящем сообщении
|
|
такой настройки нету. Изначально настройка задаётся в конфиге чат-модуля (aleesa-telegram,
|
|
например).
|
|
|
|
misc->fwd_cnt - количество пересылок сообщения. Значение по-умолчанию 5. Предполагается, что при пересылке
|
|
сообщения,модуль будет инкрементировать это значение и заодно проверять, что оно не превышает
|
|
настройку forwards_max в конфиге или 5, если в конфиге такой настройки нету.
|
|
|
|
misc->msg_format - Использовать форматирование в сообщении. На текущий момент этот флажок выставляется в модуле
|
|
telegram и благополучно проходит через модуль misc, далее попадает в модуль phrases, и, наконец,
|
|
возвращается в модуль telegram, чтобы выходное сообщение было отослано как отформатированное.
|
|
|
|
misc->username - имя пользователя, по которому к нему надо обратиться в ответе (используется в модуле games). Для
|
|
telegram это фактически ссылка на пользователя, как правило с его firstname и lastname (или
|
|
@username, если firstname и lastname у него нету), чтобы его можно было захайлатить.
|
|
|
|
|
|
Как это запустить?
|
|
-----------------------------------------------------------------------------------------------------------------------
|
|
Понадобится perl, cpanm и local::lib, а также несколько разных devel-пакетов для разных библиотек. Как правило, это
|
|
находится методом тыка, но точно понадобятся zlib-devel, openssl-devel, hiredis-devel. Кроме того, понадобятся
|
|
development tools - gcc, gcc-g++, perl-devel, make, cmake и так далее.
|
|
|
|
Приложение тестировалось на alpine linux x86_64 3.12, со встроенным perl-5.32.1
|
|
|
|
В каталоге с приложением под целевым пользователем запускаем bash bootstrap.sh Ждём с надеждой, что оно не обломится в
|
|
пути.
|
|
|
|
Если всё хорошо, то после создания data/config.json из data/config_sample.json и можно запускать приложение. Оно
|
|
запустится как unix daemon.
|
|
|
|
В каталоге contrib находится скрипт для alpine linux, системы инициализации openrc. Этот скрипт достаточно положить В
|
|
/etc/init.d/aleesa-misc сконфигурить сервис по инструкции выше и после этого сервис запускается командой:
|
|
service aleesa-misc start
|
|
в автозагрузку его можно прописать через команду
|
|
rc-update add aleesa-misc default
|