Telegram bot for Twitch livestream notification via webhooks
В файл config.php внести свои данные.
Нужно настроить Cron задание по расписанию для bot.php, например */15 * * * *
- раз в 15 минут вызывать файл, он проверит наличие вебхуков и обновит их при необходимости.
curl -s 'https://example.com/bot.php?cron' > /dev/null
Cron задание для бэкапа списка каналов и их подписок на события раз в 5 дней - 0 5 */5 * *
.
curl -s 'https://example.com/bot.php?cron=backup' > /dev/null
bot.php - для обновления вебхуков
bot.php?subscriptions - для проверки статуса вебхуков
youtube_webhook_handler для уведомлений с ютуба, vkplay_webhook_handler для уведомлений с вк плей, telegtram_webhook_handler для работы с ботом в режиме чата (добавление стримеров, удаление стримеров, получение списка стримеров и тд)
Этот проект представляет собой бота, который интегрирует платформы Twitch и Telegram для отправки уведомлений о начале стримов, смене активной игры и других событиях. Бот автоматически подписывается на события с помощью Twitch API (Helix/EventSub), отслеживает стримеров и отправляет уведомления в указанные Telegram-каналы и чаты.
Проект разработан с использованием PHP, Twitch API и Telegram Bot API. Все запросы к Twitch и Telegram выполняются с помощью cURL, а данные о каналах и подписках хранятся в JSON-файле.
- Оповещение о начале стрима: Бот уведомляет о начале трансляции для отслеживаемых стримеров.
- Оповещение о смене игры: Если стример меняет игру, бот уведомляет об этом, указывая новое название игры, количество зрителей и заголовок трансляции.
- Отправка уведомлений в Telegram: Уведомления отправляются в основной канал и/или чаты, указанные в настройках JSON.
- Автоматическая подписка на события Twitch: Используются вебхуки через Twitch API для подписки на события о стримах (начало, завершение и обновление информации).
- Управление подписками: Возможность просматривать и отменять активные подписки EventSub.
- Опциональное логгирование всех запросов для дебага: Включается в
config.php
Весь процесс, включая запросы и ответы от Twitch и Telegram API, логируется в файлlog.txt
. - Обязательное логгирование ошибок: Критические ошибки логируется в файл
error.txt
.
- PHP: Основной язык разработки бота.
- cURL: Используется для выполнения запросов к Twitch API и Telegram API.
- JSON: Формат хранения данных о стримерах, их каналах, подписках и других параметрах.
- Twitch Helix API: Взаимодействие с Twitch API для получения информации о стримах, подписках и событиях.
- Telegram Bot API: Используется для отправки сообщений в Telegram чаты.
├── README.md # Текущий файл с описанием проекта
└── src
├── bot.php # Основной скрипт бота для обработки событий
├── twitch_webhook_handler.php # Обработчик для Twitch вебхуков
├── config.php # Конфигурационный файл с ключами и настройками
├── functions.php # Вспомогательные функции для взаимодействия с Twitch и Telegram API
├── log.txt # Файл логов
├── errors.txt # Файл логов
├── channels.json # Файл с данными о стримерах и подписках
├── strings.json # Файл текстовыми строками на разных языках
└── .twitch_token # Файл для хранения временного токена доступа
Этот файл содержит все необходимые ключи и конфигурации для работы с API. Например:
- TWITCH_CLIENT_ID и TWITCH_CLIENT_SECRET: используются для получения доступа к Twitch API.
- TELEGRAM_BOT_TOKEN: токен для взаимодействия с Telegram Bot API.
- WEBHOOK_URL: URL-адрес для обработки вебхуков от Twitch.
Этот файл используется для хранения информации о стримерах, их никнеймах, идентификаторах и каналах для уведомлений. Пример структуры файла:
[
{
"nickname": "neenoh",
"name": "Neenoh",
"notify": {
"-246235236": "live",
"-23624725135": "all"
},
"webhook_online_id": "123456",
"webhook_offline_id": "654321",
"webhook_updates_id": "789012",
"webhook_expires_at": "2024-09-10T12:00:00Z"
}
]
Бот подписывается на события Twitch (начало стрима, завершение стрима, обновление информации о канале) с использованием Twitch EventSub. Для каждой подписки устанавливается время окончания действия, и подписка обновляется по необходимости.
Когда Twitch присылает уведомление о событии (например, начало стрима), бот обрабатывает его через twitch_webhook_handler.php
, и отправляет уведомления в Telegram.
Уведомления отправляются в основной канал или несколько чатов в зависимости от настроек, указанных в файле channels.json
. Для отправки сообщений используется Telegram Bot API.
В проекте реализована функция для удаления всех активных подписок через bot.php?clean
. Это полезно при необходимости сброса или изменения подписок на события.
bot.php?disabled
- очистка подписок которые неактивны и/или не подтверждены.
-
Установите PHP и необходимые расширения:
- PHP 7.4 или выше
- Расширение cURL для работы с запросами к API
- Доступ к веб-серверу (например, Apache или Nginx)
-
Склонируйте репозиторий:
git clone https://github.com/fhnb16/StreamNotifyBot.git
-
Настройте конфигурационный файл: Откройте
config.php
и заполните следующие параметры:- Twitch API ключи (
TWITCH_CLIENT_ID
,TWITCH_CLIENT_SECRET
) - Telegram Bot API токен (
TELEGRAM_BOT_TOKEN
) - Ваш URL для получения вебхуков от Twitch (
WEBHOOK_URL
)
- Twitch API ключи (
-
Настройте JSON файл для отслеживания каналов: В
channels.json
добавьте стримеров, которых хотите отслеживать, в формате:{ "nickname": "neenoh", "name": "Neenoh", "notify": { "-1002385008440": "live", "-23624725135": "all" } }
-
Настройте вебхуки: При первом запуске бота нужно запросить установку всех вебхуков:
php bot.php?setup
-
Отправка уведомлений в Telegram: Бот будет автоматически отправлять уведомления в Telegram при событиях на Twitch, согласно настройкам подписок и данных из файла
channels.json
.
-
Очистить все подписки: Для отмены всех активных подписок на события Twitch:
php bot.php?clean
-
Просмотр активных подписок: Для отображения всех активных подписок на события EventSub:
php bot.php?subscriptions
Каждый запрос к Twitch и Telegram API логируется в файл log.txt
. Это позволяет отслеживать все события и запросы для диагностики и отладки.
- Убедитесь, что ваш сервер доступен из сети интернет для получения вебхуков от Twitch.
- При создании бота для большого количества стримеров убедитесь, что у вас настроен правильный механизм управления подписками и хранением данных.
Данный бот предоставляет удобный инструмент для автоматизации уведомлений о стримах в Twitch с использованием Telegram. Благодаря интеграции Twitch EventSub и Telegram Bot API, проект может масштабироваться для обработки большого количества стримеров и уведомлений.