This repository has been archived on 2025-07-01. You can view files and clone it, but cannot push or open issues or pull requests.
2022-01-07 18:59:09 +03:00
2022-01-07 18:58:40 +03:00
2022-01-05 20:06:53 +03:00
2022-01-05 20:06:53 +03:00
2022-01-07 18:59:09 +03:00
2022-01-05 20:06:53 +03:00
2022-01-05 20:06:53 +03:00
2022-01-05 20:06:53 +03:00
2022-01-07 18:59:09 +03:00
2022-01-05 20:06:53 +03:00
2022-01-05 20:06:53 +03:00
2022-01-05 20:06:53 +03:00

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, чтобы выходное сообщение было отослано как отформатированное.

Как это запустить?
-----------------------------------------------------------------------------------------------------------------------
Понадобится 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
Description
No description provided
Readme 50 KiB
Languages
Perl 97.9%
Shell 2.1%