TWITCH · TELEGRAM · DISCORD
Уведомления о Twitch-стримах
Сервис для стримеров и сообществ, которым нужны объявления об эфирах. Отслеживает Twitch-каналы и отправляет карточки в Telegram и Discord. Во время стрима обновляет сообщение, после завершения меняет его статус.
Объявление об эфире в Telegram и Discord с обновлением той же карточки.
Задача
Сообщать сообществу о начале эфира и сохранять уведомление актуальным. Показывать название, игру, превью и число зрителей, затем отмечать завершение стрима.
Из чего состоит
- Отслеживание Twitch
- Проверка нескольких каналов и определение начала, продолжения и завершения эфира.
- Telegram и Discord
- Публикация карточки в двух сервисах. Сохранённые идентификаторы позволяют обновлять уже отправленные сообщения.
- Карточка эфира
- Название стрима, игра, число зрителей, превью и ссылка на Twitch.
- Обновление уведомлений
- Сервис обновляет карточку во время эфира. Превью меняется раз в пять минут. После завершения эфира изображение и число зрителей убираются из карточки.
- Сохранение состояния
- База SQLite хранит состояние эфиров и идентификаторы сообщений. После перезапуска сервис продолжает работать с сохранёнными карточками.
- Запуск и обновления
- Сервис запускается через systemd. Автоматическое развёртывание проверяет запуск и возвращает предыдущую версию при ошибке.
Моя работа
Подключаю Twitch, Telegram и Discord, разрабатываю отправку и обновление уведомлений. Добавляю хранение состояния, обработку завершения эфира и автоматическое развёртывание на сервере.
Технологии
- Python
- Twitch API
- Telegram Bot API
- Discord API
- SQLite
- systemd
Как работает
Для каждого эфира сохраняются идентификаторы сообщений в Telegram и Discord. Сервис редактирует их во время стрима, а при удалённом сообщении может создать замену.
После окончания эфира карточка остаётся в сообществе с отметкой о завершении. Если превью временно недоступно, Telegram-уведомление сохраняет текст и ссылку.
Состояние хранится в базе, поэтому обычный перезапуск не требует начинать учёт уведомлений заново.
Результат
Уведомления о Twitch-эфирах в Telegram и Discord, которые обновляются по ходу стрима. Сервис хранит состояние и отмечает завершение эфира в существующей карточке.
Следующий проект
Магазин цифровых товаров