/super-bot

radio-t bot слушает чат telegram и реагирует на определенные команды и фрагменты текста.

Primary LanguageGoMIT LicenseMIT

Telegram бот подкаста Радио-Т

Build Status Go Report Card Coverage Status

Основная функциональность

Бот слушает чат Telegram и реагирует на определенные команды и фрагменты текста. Кроме этого, он слушает API новостей и публикует в Telegram сообщения о начале выпуска и смене тем.

С ботом можно общаться тет-а-тет, не засорая общий чат.

В режиме экспортирования сохраняет лог сообщений в HTML файл.

Статус

Бот в работе несколько лет и успешно "участвовал" во многих подкастах.

Команды бота

Команда Описание
ping, пинг ответит pong, понг, см. basic.data
анекдот!, анкедот!, joke!, chuck! расскажет анекдот с rzhunemogu.ru или icndb.com (нужен MASHAPE_TOKEN)
news!, новости! 5 последних новостей для Радио-Т
so! 1 вопрос со Stackoverflow
?? <запрос>, /ddg <запрос> поискать "<запрос>" на DuckDuckGo
search! <слово>, /search <слово> поискать по шоунотам подкастов

Инструкции по локальной разработке

Для создания тестового бота нужно обратиться к BotFather и получить от него токен.

После создания бота нужно вручную добавить в группу (Info / Add Members) и дать права администратора (Info / Edit / Administrators / Add Admin).

Приложение ожидает следующие переменные окружения:

  • TELEGRAM_TOKEN – токен полученный от BotFather
  • TELEGRAM_GROUP - основная группа в Телеграмме (туда приходят уведомления о новостях, все сообщения сохраняются в лог)
  • MASHAPE_TOKEN – токен от сервиса Kong, используется только для DuckDuckGo бота

Дополнительные переменные окружения со значениями по-умолчанию:

  • DEBUG (false) – включает режим отладки (логируется больше событий)
  • TELEGRAM_LOGS (logs) - путь к папке куда пишется лог чата
  • SYS_DATA (data) - путь к папке с *.data файлами и шаблоном для построения HTML отчета
  • TELEGRAM_TIMEOUT (30s) – HTTP таймаут для скачивания файлов из Telegram при построении HTML отчета
  • RTJC_PORT (18001) – порт на который приходят уведомления о новостях

Запустить бота можно через Docker Compose:

docker-compose up telegram-bot

Или с помощью Make:

make run ARGS="--super=umputun --super=bobuk --super=grayru --super=ksenks"

Для построения HTML отчета необходимо передать дополнительные флаги:

docker-compose exec telegram-bot ./telegram-rt-bot \
  --super=umputun \
  --super=bobuk \
  --super=grayru \
  --super=ksenks \
  --export-num=688 \
  --export-path=html \
  --export-day=20200208 \
  --export-template=logs.html

или

make run ARGS="--super=umputun --super=bobuk --super=grayru --super=ksenks --export-num=688 --export-path=logs --export-day=20200208 --export-template=data/logs.html"