Skip to content
radio-tPublic

About

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

Topics

Resources

Stars

67 stars

Watchers

11 watching

Forks

Repository files navigation

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

Build Status Go Report Card Coverage Status

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

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

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

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

Статус

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

Команды бота

Команда Описание
ping, пинг ответит pong, понг, см. basic.data
анекдот!, анкедот!, joke!, chuck! расскажет анекдот с jokesrv.fermyon.app или chucknorris.io
news!, новости! 5 последних новостей для Радио-Т
so! 1 вопрос со Stackoverflow
?? <запрос>, /ddg <запрос> поискать "<запрос>" на DuckDuckGo
search! <слово>, /search <слово> поискать по шоунотам подкастов
chat! <запрос> задать вопрос для ChatGPT

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

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

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

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

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

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

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

Ответы OpenAI бота без команды

С OPENAI_AUTO_RESPONSE=true бот может ответить в группе на сообщение, которое явно просит ответа у любого участника. Решение принимает jev по сообщению и истории текущего чата (до 10 сообщений за последние 30 минут): вопрос должен быть открытым, отвечаемым из видимого текста и общих знаний, и не быть рекламой. Ошибка или таймаут jev означает отсутствие ответа. Ограничения: не чаще раза в 15 минут, не больше 10 ответов в сутки и 150 запросов к jev в час. Команды chat! и аналоги работают как раньше и через jev не проходят.

Запустить бота можно через 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"

About

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

Topics

Resources

Stars

67 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages