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-бота
- Создайте бота у @BotFather командой
/newbot, получите токен. - Добавьте бота в канал/группу как администратора с правом отправлять сообщения —
иначе он не сможет писать в
NOTIFY_CHAT_ID. - Укажите
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).
При переходе оффлайн → онлайн отправляется оповещение. Публичный сервис может изредка
быть недоступен — в этом случае проверка пропускается и повторяется в следующем цикле,
бот не падает. Рекомендуемый интервал — 30–60 секунд.