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

52 lines
4.0 KiB
Markdown

# Документация по Aleesa-bot
Documentation is in Russian language because of project intended for use and develop by russian speaking community.
## Что такое Aleesa-bot
Многосервисный бот. Сервисы для которого достаточно просто реализовывать на различных ЯП, потому что используются
универсальные форматы общения между различными компонентами системы.
## Зачем это нужно
Пока, как концепт бота, который умеет в несколько разных протоколов.
## Архитектура проекта
Архитектура бота предполагает наличие роутера, фронтэнда и бэкэнда.
В текущей схеме реализованы фронтэнды для telegram, irc, jabber и cli протоколов. А также для бэкэнда реализованы
бредогенератор, простые веб-клиенты для разных сервисов, и некоторые другие бэкэнд-обработчики.
### Роутер
Во главе угла стоит роутер сообщений. Он принимает сообщения от фронт-энд-ов (если требуется, обрабатывает их)
и направляет их в соответствующие обработчики на бэкэнде. Взаимодействие происходит по каналам redis pub-sub.
N.B. Поскольку обмен сообщениями между компонентами происходит в формате json, необходимо, чтобы этот json был
валидным: числа были числами, а не строками. По соображениям совместимости не используются значения true и false, т.к.
в некоторых яп при формировании json-а они могут стать 1 и 0, "true" и "false", "ok" и "false", "yes" и "no", что не
является валидным с точки зрения json-а.
### Фронт-энд
Фронт-энд части реализуют протоколы чатиков - irc, telegram, jabber итд. Принятые из чятиков сообщения всегда
отправляются в redis-канал роутера, по протоколу redis pubsub.
### Бэк-энд
Бэкэнд принимает в свой канал сообщения и обрабатывает их. В зависимости от того, требуется ли ответ, отвечает в канал
из поля From.
Предполагается, что входное сообщение бэк-энд обработчик получает от роутера, но это не обязательно так (на текущий
момент все бэк-энд-обработчики получают входящие сообщения от роутера).
Предполагается, что бэкэнд отвечает непосредственно отправителю (то есть фронтэнду), но это не обязаетельно так (на
текущий момент все бэк-энд-обработчики отвечают изначальному отправителю сообщения).
## Что делает Aleesa-bot-а интересным
То, что реализовывать дополнительные сервисы можно на любом ЯП. + добавить простенькую логику по отлову и направлению
сообщения в рооутере (Впрочем, это не сложно и даже питонист сможет по образу и подобию реализованного, написать свой
роут).