Skip to content

Telegram bot for Twitch livestream notification via webhooks

License

Notifications You must be signed in to change notification settings

fhnb16/StreamNotifyBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StreamNotifyBot

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 - для проверки статуса вебхуков

Todo:

youtube_webhook_handler для уведомлений с ютуба, vkplay_webhook_handler для уведомлений с вк плей, telegtram_webhook_handler для работы с ботом в режиме чата (добавление стримеров, удаление стримеров, получение списка стримеров и тд)


Twitch и Telegram Бот для Уведомлений о Стримах

Описание проекта

Этот проект представляет собой бота, который интегрирует платформы 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               # Файл для хранения временного токена доступа

Файл config.php

Этот файл содержит все необходимые ключи и конфигурации для работы с API. Например:

  • TWITCH_CLIENT_ID и TWITCH_CLIENT_SECRET: используются для получения доступа к Twitch API.
  • TELEGRAM_BOT_TOKEN: токен для взаимодействия с Telegram Bot API.
  • WEBHOOK_URL: URL-адрес для обработки вебхуков от Twitch.

Файл channels.json

Этот файл используется для хранения информации о стримерах, их никнеймах, идентификаторах и каналах для уведомлений. Пример структуры файла:

[
    {
        "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"
    }
]

Функциональные компоненты

1. Установка вебхуков для Twitch

Бот подписывается на события Twitch (начало стрима, завершение стрима, обновление информации о канале) с использованием Twitch EventSub. Для каждой подписки устанавливается время окончания действия, и подписка обновляется по необходимости.

2. Обработка вебхуков

Когда Twitch присылает уведомление о событии (например, начало стрима), бот обрабатывает его через twitch_webhook_handler.php, и отправляет уведомления в Telegram.

3. Оповещения в Telegram

Уведомления отправляются в основной канал или несколько чатов в зависимости от настроек, указанных в файле channels.json. Для отправки сообщений используется Telegram Bot API.

4. Управление подписками

В проекте реализована функция для удаления всех активных подписок через bot.php?clean. Это полезно при необходимости сброса или изменения подписок на события. bot.php?disabled - очистка подписок которые неактивны и/или не подтверждены.

Как развернуть проект

  1. Установите PHP и необходимые расширения:

    • PHP 7.4 или выше
    • Расширение cURL для работы с запросами к API
    • Доступ к веб-серверу (например, Apache или Nginx)
  2. Склонируйте репозиторий:

    git clone https://github.com/fhnb16/StreamNotifyBot.git
  3. Настройте конфигурационный файл: Откройте config.php и заполните следующие параметры:

    • Twitch API ключи (TWITCH_CLIENT_ID, TWITCH_CLIENT_SECRET)
    • Telegram Bot API токен (TELEGRAM_BOT_TOKEN)
    • Ваш URL для получения вебхуков от Twitch (WEBHOOK_URL)
  4. Настройте JSON файл для отслеживания каналов: В channels.json добавьте стримеров, которых хотите отслеживать, в формате:

    {
      "nickname": "neenoh",
      "name": "Neenoh",
      "notify": {
          "-1002385008440": "live",
          "-23624725135": "all"
      }
    }
  5. Настройте вебхуки: При первом запуске бота нужно запросить установку всех вебхуков:

    php bot.php?setup
  6. Отправка уведомлений в Telegram: Бот будет автоматически отправлять уведомления в Telegram при событиях на Twitch, согласно настройкам подписок и данных из файла channels.json.

Полезные команды

  1. Очистить все подписки: Для отмены всех активных подписок на события Twitch:

    php bot.php?clean
  2. Просмотр активных подписок: Для отображения всех активных подписок на события EventSub:

    php bot.php?subscriptions

Логгирование

Каждый запрос к Twitch и Telegram API логируется в файл log.txt. Это позволяет отслеживать все события и запросы для диагностики и отладки.

Важные примечания

  • Убедитесь, что ваш сервер доступен из сети интернет для получения вебхуков от Twitch.
  • При создании бота для большого количества стримеров убедитесь, что у вас настроен правильный механизм управления подписками и хранением данных.

Заключение

Данный бот предоставляет удобный инструмент для автоматизации уведомлений о стримах в Twitch с использованием Telegram. Благодаря интеграции Twitch EventSub и Telegram Bot API, проект может масштабироваться для обработки большого количества стримеров и уведомлений.


fhnb16

About

Telegram bot for Twitch livestream notification via webhooks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published