# Документация по 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-а интересным То, что реализовывать дополнительные сервисы можно на любом ЯП. + добавить простенькую логику по отлову и направлению сообщения в рооутере (Впрочем, это не сложно и даже питонист сможет по образу и подобию реализованного, написать свой роут).