/alert-tg-bot

Primary LanguageJavaApache License 2.0Apache-2.0

alert-tg-bot

Телеграм бот, представляющий собой интерфейс для взаимодействия пользователя с mayday. Позволяет добавлять пользователям необходимые алерты и получать нотификации от mayday.

Описание работы сервиса

Бот работает взаимодействуя с Telegram Bot Api. Для взаимодествия с Telegram Bot Api используется polling. Взаимодействие с ботом разрешается только для пользователей, состоящих в общем приватном чате.

Для работы бота необходимо указать параметры:

bot:
token: ${botToken}
name: botName
chatId: ${chatId}
  • Для получения botToken и botName необходимо использовать телеграм бота @BotFather, там же ему необходимо установить инлайн-режим командой /setinline.
  • chatId - приватный чат, пользователи которого смогут иметь доступ к боту. Бота необходимо добавить в приватный чат и дать ему права администратора. Узнать chatId можно, например, отправив любое сообщение в чат и посмотрев пришедшее событие.

При старте бота либо отправки любого сообщения в бот пользователем в первую очередь проверяется, есть ли у пользователя доступ к боту, для чего проверяется является ли пользователь участником в приватном чате. В случае если участник не состоит в чате либо у него изменился статус (например, пользователь был удален из чата), доступ к боту не разрешается, ранее созданные алерты удаляются.

Хендлеры

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

  • MessageHandler - при получении команды /start либо при отправке любого сообщения в бот формирует главное меню. При формировании главного меню к клавиатуре добавляется callbackData, которая возвращается в событиях боту при нажатии кнопок пользователем.

  • CallbackHandler - обрабатывает сообщения, содержащие callbackData. В обработчике маппятся коллбэки каждой кнопки с действиями, которые необходимо выполнить при нажатии кнопок главного меню, либо после выбора параметра, для которого будет конфигурироваться алерт.

  • InlineHandler - обрабатывает события, которые приходят когда пользователь вводит данные для быстрого поиска из списка. Обработчик формирует список для поиска по введенным символам и показывает список пользователю.

  • ViaBotReplyHandler - обрабатывает событие, которое происходит после того как пользователь выбрал значение из списка.

  • ForceReplyHandler - обрабатывает сообщение, являющееся ответом на вопрос при создании алерта, которое пользователь вводит с клавиатуры вручную.

    • ViaBotReplyHandler и ForceReplyHandler после получения значения от пользователя проверяют корректно ли введено значение пользователем и все ли значения конфигурации алерта заполнены. В случае если заполнены все, то формируется запрос в mayday на создание алерта, иначе запрашивается следующее значение для заполнения.
  • MyChatMemberHandler - обрабатывает событие, которое приходит, если пользователь самостоятельно заблокировал бота. В таком случае все алерты, ранее созданные пользователем, удаляются.

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

Mayday

Обращение к mayday происходит в случае, когда необходимо сконфигурировать новые алерты, проверить существующие, либо удалить существующие алерты по протоколу

Mayday также обращается к alert-tg-bot по протоколу, когда необходимо отправить юзеру нотификацию в случае срабатывания алерта. Бот отправит нотификацию в чат с пользователем.

##Postgres

db

База используется для сохранения текущих параметров алерта и стейта пользователя, когда пользователь заполняет данные для создания алерта.

  • в parameters_data сохраняется конфигурация алерта, который создает пользователь.
  • в state_data сохраняется текущий стейт пользователя, маппятся параметры, которые ввел пользователь, для дальнейшей отправки в mayday сконфигурированного алерта.