Предисловие
Пару лет назад я опубликовал на этом сайте пост, в котором подробно рассказал о том как настроить автопостинг в канал Telegram о начале стрима на Twitch, с помощью сервиса-автоматизатора Make.
Метод рабочий, но все же имеет некоторые неудобства: надо самому создавать своего бота Telegram через BotFather; нельзя захватывать название/категорию; а также нет очевидного способа, чтобы удалять пост с оповещением по окончанию стрима (во всяком случае, на бесплатном тарифе сервиса Make).
С тех пор утекло много воды, а я с нуля увлекся программированием простейших скриптов. В основном, нацеленных на облегчение ведения соцсетей и разностороннее развитие проекта Mikulski_Radio. Конечно, мои навыки в кодинге, по-прежнему, представляют собой около-начальный любительский уровень, однако, научившись некоторым трюкам, я все же смог создать Telegram-бота, который умеет автоматически постить оповещения и даже чуть более того.
Как бы то ни было это мой первый опыт в создании общественно полезного приложения, – если что, не судите строго 😉
VKPlayLive_Telegram_Alert_Bot
Как очевидно из названия, бот следит за началом/концом стрима заданного канала на VKPlayLive, а затем постит/удаляет оповещение в нужном Telegram-канале/чате.
Поэтому подойдет всем, кто стримит VKPlayLive или рестримит туда (ничто не запрещает в тексте поста-оповещения указать ссылки на остальные площадки).
!ВНИМАНИЕ!
Бот находится на этапе "боевого" тестирования!
Желающим попробовать просьба отследить корректность работы в первые несколько "запусков".
Маловероятно (в виду простоты исполнения), но возможны баги.
Ограничения
- Погрешность срабатывания, т.е. публикации/удаления составляет +/- 5 минут!
- Указать можно только по одному каналу. Т.е. один канал для VKPlayLive и один Telegram-канал/чат.
- Поддерживаются только ПУБЛИЧНЫЕ каналы и чаты для Telegram.
- К сожалению, для VKPlayLive все еще нет официального API, поэтому есть доля вероятности, что в какой-то момент бот не сможет осуществлять свои функции.
Настройка
В целом, настройка проста и интуитивна понятна. Единственное, что нужно обязательно ввести все основные данные (по умолчанию, все графы пустые, постинг и авто-удаление отключены). Например, если текст для поста не будет указан, то оповещение не сработает.
Для наглядности пройдемся по всем шагам:
Для начала нужно открыть бота по ссылке:
https://t.me/VKPlayLive_Telegram_Alert_Bot
и запустить его.
Первым сообщением он выдаст инструкцию по использованию, а также отобразится меню с кнопками через которое и будут происходить все манипуляции с ботом.
Добавление бота в Telegram-канал
Чтобы бот мог публиковать оповещения в заданном Telegram-канале/чате, нужно его туда добавить в качестве администратора и разрешить постить сообщения.
Это обычная практика для подобного рода ботов и бояться тут нечего: в любой момент вы можете исключить бота из канала/чата или забрать разрешение на публикацию.
Единственное, что тут важно добавить именно этого бота, если вдруг появятся притворяющиеся им другие боты злоумышленников. Поэтому рекомендую в поисковой запрос вбивать полную ссылку и убедиться, что в результате поиска у бота адрес совпадает с @VKPlayLive_Telegram_Alert_Bot
Добавить бота можно на любом этапе настройки. Главное, не забыть это сделать.
Для каналов это делается следующим образом:Управление каналом -> Администраторы -> Добавить администратора -> Вставить ссылку на этого бота -> OK -> Отключить все тумблеры, кроме Управление сообщений -> Публикация сообщений
Теперь нужно пройтись по всем кнопкам и прописать необходимые данные:
🔵VKPlayLive
Нажав на эту кнопку, бот попросит вас отправить ему сообщение с идентификатором вашего VKPlayLive-канала.
Можно отправить ссылку целиком, например:
https://live.vkplay.ru/mikulski
Или только идентификатор(название) канала:mikulski
Соответственно, всегда можно сюда вернуться и ввести идентификатор заново, если вы допустили ошибку или нужно поменять адрес отслеживаемого канала.
▶️Telegram
Аналогично кнопке ‘🔵VKPlayLive‘, но уже для указания публичного Telegram-канала/чата.
Можно вбить идентификатор или ссылку целиком.
Например, ссылка вида:
https://t.me/mikulski_rocks
Или только идентификатор:mikulski_rocks
Соответственно, всегда можно сюда вернуться и ввести идентификатор заново, если вы допустили ошибку или нужно поменять адрес канала для публикаций.
📝Пост
Здесь нужно написать текст сообщения, которое будет публиковаться в Telegram-канале/чате.
Учтите, что поле нельзя оставлять пустым – иначе бот ничего не отправит!
Предусмотрены подставляемые значения, которые подтянутся из заголовка вашего стрима:
${title} – название стрима;
${game} – категория;
${link} – ссылка на ваш VKPlayLive-канал.
Вы можете также прописать любые другие ссылки. Только учитывайте, что Telegram в качестве превью подтянет первую по очереди ссылку.
Соответственно, всегда можно сюда вернуться и отредактировать текст.
⚠️ВКЛ-ВЫКЛ-Оповещений
Эта кнопка вызывает подменю, в котором можно включить/выключить публикацию сообщений или функцию авто-удаления постов.
По умолчанию, все отключено.
Желательно отключать оповещения, если вы планируете длительный перерыв в стриминге.
⚙️Проверить-настройки
❓️Помощь/Справка
Кнопка вызывает подменю, в котором можно ознакомиться с инструкцией (по сути то же сообщение, которое бот выдает при первом запуске); способы связаться со мной; поблагодарить/поддержать и/или удалить учетку.
Бот хранит только публично доступные данные (для идентификации нужного профиля при отправке оповещения) и те, которые вы вводите сами в настройках.
Но если вы решите прекратить использование бота, то желательно удалить учетку:нажимаете кнопку -> отправляете сообщение "удалить" -> ваш профиль и все связанные с ним данные удалены!
Результат
После того как все настройки совершены и вы запустите стрим, то с погрешностью в 5 минут, бот отправит в ваш Telegram канал/чат сообщение.
В примере на скриншоте текст поста указан так:
Стрим!
${title}
${game}
${link}
Когда вы завершите стрим и у вас включено “Авто-удаление постов”, то с той же погрешностью бот удалит сообщение.
Примечательно, что Telegram убирает собственное уведомление после удаления сообщения, то есть оно перестает “висеть” непрочитанным у пользователя.
Технические особенности и дальнейшее развитие
Как было замечено почти в самом начале этой статьи: бот обращается к серверам VKPlayLive по неофициальному API, поэтому сложно предсказать срок службы приложения, как и прочие неприятные ситуации с этим связанные. Однако, я настроен оптимистично и если не будет большого наплыва пользователей (это маловероятно), то бот будет работать долго и стабильно. Я намерен поддерживать его работу, пока имею такую возможность.
В данный момент логика заключается в интервальном опросе сервера каждые 5 минут и с задержкой в одну секунду между запросами на каждого пользователя, чтобы минимизировать “палево” частых обращений к серверу. По мере роста числа пользователей, планируется понемногу уменьшать эти интервалы, чтобы погрешность срабатывания все так же оставалась в пределах 5-6 минут.
Да, я понимаю, что этот метод далек от идеального и правильного. Но имеем то, что имеем на сегодня. Впрочем, в необозримом будущем существует перспектива поменять получение событий о начале/конце стрима на другой способ. Что в идеале должно убрать погрешность срабатывания вовсе и уменьшить риск попадания ботом в ЧС из-за частых опросов сервера.
Правда, для этого придется нормально так переписать почти всю логику, но поживем-увидим. Пока что у меня на руках только успешные тесты в условной песочнице с массивом из 10 пользователей на протяжении нескольких суток. Практические “боевые” тесты с привлеченными стримерами уже покажут жизнеспособность этого проекта в текущем виде.