# Twitch → Telegram Stream Notify Bot Бот проверяет, вышел ли стример в эфир на Twitch, и при старте стрима отправляет оповещение в указанный чат/канал Telegram. Определение статуса работает через публичный [decapi.me](https://decapi.me) — **без Twitch-токенов**. Это Telegram-версия [Discord-бота](https://gittheraiwy.theraiwy.top/theraiwy/twitch-discord-notify). ## Возможности - Определение статуса стрима **без токенов Twitch** (публичный decapi.me) - Оповещение **один раз** при переходе оффлайн → онлайн (без спама, пока стрим идёт) - Сообщение с превью эфира, названием стрима и игрой - Inline-кнопки под сообщением: **Twitch** и **Все ссылки** - Команда `/stream_test` — тестовое оповещение ## Переменные окружения | Переменная | Обязательна | Описание | |---|---|---| | `TELEGRAM_TOKEN` | ✅ | Токен бота из [@BotFather](https://t.me/BotFather) → `/newbot` | | `NOTIFY_CHAT_ID` | ✅ | Куда слать: `@username` канала или числовой id чата/группы (напр. `-1001234567890`) | | `TWITCH_LOGIN` | нет | Ник стримера из URL `twitch.tv/ЭТО`. По умолчанию `theraiwy` | | `CHECK_INTERVAL` | нет | Интервал проверки в секундах. По умолчанию `60` | Единственный обязательный секрет — `TELEGRAM_TOKEN`. ## Настройка Telegram-бота 1. Создайте бота у [@BotFather](https://t.me/BotFather) командой `/newbot`, получите токен. 2. **Добавьте бота в канал/группу как администратора** с правом отправлять сообщения — иначе он не сможет писать в `NOTIFY_CHAT_ID`. 3. Укажите `NOTIFY_CHAT_ID`: - для публичного канала — его `@username` (напр. `@theraiwy_streams`); - для приватной группы/канала — числовой id (напр. через `@userinfobot` или `@getidsbot`), для супергрупп/каналов он вида `-100...`. ### Как узнать числовой id чата Добавьте бота в чат, напишите там любое сообщение и загляните в логи бота, либо воспользуйтесь ботом `@getidsbot`. ## Запуск через Docker (рекомендуется) ```bash 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 ```bash pip install -r requirements.txt cp .env.example .env # заполнить значения python bot.py ``` ## Команды - `/stream_test` — отправить тестовое оповещение в целевой чат (помечается `🧪 [ТЕСТ]`). ## Как определяется стрим Каждые `CHECK_INTERVAL` секунд бот опрашивает decapi.me (`uptime`, `title`, `game`). При переходе оффлайн → онлайн отправляется оповещение. Публичный сервис может изредка быть недоступен — в этом случае проверка пропускается и повторяется в следующем цикле, бот не падает. Рекомендуемый интервал — **30–60 секунд**.