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

85 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`).
При переходе оффлайн → онлайн отправляется оповещение. Публичный сервис может изредка
быть недоступен — в этом случае проверка пропускается и повторяется в следующем цикле,
бот не падает. Рекомендуемый интервал — **3060 секунд**.