Files
2026-07-13 08:42:20 +00:00

4.4 KiB
Raw Permalink Blame History

Twitch → Telegram Stream Notify Bot

Бот проверяет, вышел ли стример в эфир на Twitch, и при старте стрима отправляет оповещение в указанный чат/канал Telegram. Определение статуса работает через публичный decapi.meбез Twitch-токенов.

Это Telegram-версия Discord-бота.

Возможности

  • Определение статуса стрима без токенов Twitch (публичный decapi.me)
  • Оповещение один раз при переходе оффлайн → онлайн (без спама, пока стрим идёт)
  • Сообщение с превью эфира, названием стрима и игрой
  • Inline-кнопки под сообщением: Twitch и Все ссылки
  • Команда /stream_test — тестовое оповещение

Переменные окружения

Переменная Обязательна Описание
TELEGRAM_TOKEN Токен бота из @BotFather/newbot
NOTIFY_CHAT_ID Куда слать: @username канала или числовой id чата/группы (напр. -1001234567890)
TWITCH_LOGIN нет Ник стримера из URL twitch.tv/ЭТО. По умолчанию theraiwy
CHECK_INTERVAL нет Интервал проверки в секундах. По умолчанию 60

Единственный обязательный секрет — TELEGRAM_TOKEN.

Настройка Telegram-бота

  1. Создайте бота у @BotFather командой /newbot, получите токен.
  2. Добавьте бота в канал/группу как администратора с правом отправлять сообщения — иначе он не сможет писать в NOTIFY_CHAT_ID.
  3. Укажите NOTIFY_CHAT_ID:
    • для публичного канала — его @username (напр. @theraiwy_streams);
    • для приватной группы/канала — числовой id (напр. через @userinfobot или @getidsbot), для супергрупп/каналов он вида -100....

Как узнать числовой id чата

Добавьте бота в чат, напишите там любое сообщение и загляните в логи бота, либо воспользуйтесь ботом @getidsbot.

Запуск через Docker (рекомендуется)

cp .env.example .env    # заполнить TELEGRAM_TOKEN и NOTIFY_CHAT_ID
docker compose up -d --build

Логи: docker compose logs -f

Деплой в DockHand

docker-compose.yml читает значения из окружения через ${...}, поэтому .env в репозиторий не коммитится. В панели DockHand при создании стека задайте переменные в разделе Environment:

TELEGRAM_TOKEN=твой_токен
NOTIFY_CHAT_ID=@your_channel
TWITCH_LOGIN=theraiwy
CHECK_INTERVAL=60

Обязательны только TELEGRAM_TOKEN и NOTIFY_CHAT_ID — у остальных есть значения по умолчанию.

Запуск без Docker

pip install -r requirements.txt
cp .env.example .env    # заполнить значения
python bot.py

Команды

  • /stream_test — отправить тестовое оповещение в целевой чат (помечается 🧪 [ТЕСТ]).

Как определяется стрим

Каждые CHECK_INTERVAL секунд бот опрашивает decapi.me (uptime, title, game). При переходе оффлайн → онлайн отправляется оповещение. Публичный сервис может изредка быть недоступен — в этом случае проверка пропускается и повторяется в следующем цикле, бот не падает. Рекомендуемый интервал — 3060 секунд.