Автопост в Telegram о новом посте на Boosty – Mikulski
Наложение сайта

Автопост в Telegram о новом посте на Boosty

!ВНИМАНИЕ!
Бот находится на этапе "боевого" тестирования!
Желающим попробовать просьба отследить корректность работы в первые несколько "запусков".
Маловероятно (в виду простоты исполнения), но возможны баги.

Предисловие

Бот предназначен для авторов Boosty, которые заинтересованы в автоматическом репосте новых публикаций на Boosty в свой Telegram-канал/чат. Под репостом подразумевается шаблон из заголовка поста, ссылки на него и, по желанию, добавочный текст от себя. Также предусмотрен механизм игнорирования постов с определенным содержимым в заголовке, которое определяет сам пользователь. Это может быть полезно, например, в тех случаях, когда автор для максимального охвата публикует одну и ту же информацию во всех соцсетях, таким образом, можно избежать ненужного срабатывания бота без отключения репостинга в его настройках.
Также стоит отметить, что я не являюсь профессиональным разработчиком и этот проект был создан любителем в образовательно-экспериментальных целях – не судите строго 😉
В целом, бот во многом схож с другим ботом из-под моих рук: VKPlayLive_Telegram_Alert_Bot – который публикует оповещения в Telegram о начале стрима на VKPlayLive.

Boosty_Telegram_Repost_Bot

После активации и настройки, бот начинает отслеживать последний опубликованный пост в обозначенном блоге Boosty. Когда бот видит, что последний пост изменил свои ID, заголовок и дату публикации: понимает что, это новый пост и отправляет сообщение с содержимым из шаблона в указанный публичный Telegram-канал/чат (бота нужно назначить админом и дать ему разрешение публиковать сообщения – другие разрешения не нужны).

Ограничения

  • Погрешность срабатывания, т.е. репоста составляет около 10 минут;
  • Указать можно только один блог Boosty и один канал/чат для Telegram;
  • Поддерживаются только ПУБЛИЧНЫЕ каналы и чаты для Telegram;
  • Бот игнорирует посты старше 2 часов: это во многом нужно для того, чтобы исключить холостое срабатывание при первом запуске;
  • К сожалению, для Boosty все еще нет официального API, поэтому есть доля вероятности, что в какой-то момент бот не сможет осуществлять свои функции.

Настройка

В целом, настройка проста и интуитивна понятна.
Нужно ввести адреса Boosty и Telegram, включить Репост, отредактировать шаблон сообщения (по умолчанию, там назначено ${title} ${link} – заголовок поста и ссылка на него), при необходимости добавить Стоп-фразу (чтобы игнорировать посты с определенным содержимым в заголовке) и обязательно назначить бота админом в Telegram-канале с правом публиковать сообщения.

Для наглядности пройдемся по всем шагам:

Для начала нужно открыть бота по ссылке:
https://t.me/Boosty_Telegram_Repost_Bot
и запустить его.
Первым сообщением он выдаст инструкцию по использованию, а также отобразится меню с кнопками через которое и будут происходить все манипуляции с ботом.

Добавление бота в Telegram-канал

Чтобы бот мог публиковать оповещения в заданном Telegram-канале/чате, нужно его туда добавить в качестве администратора и разрешить постить сообщения.
Это обычная практика для подобного рода ботов и бояться тут нечего: в любой момент вы можете исключить бота из канала/чата или забрать разрешение на публикацию.
Единственное, что тут важно добавить именно этого бота, если вдруг появятся притворяющиеся им другие боты злоумышленников. Поэтому рекомендую в поисковой запрос вбивать полную ссылку и убедиться, что в результате поиска у бота адрес совпадает c @Boosty_Telegram_Repost_Bot

Добавить бота можно на любом этапе настройки. Главное, не забыть это сделать.

Для каналов это делается следующим образом:
Управление каналом -> Администраторы -> Добавить администратора -> Вставить ссылку на этого бота -> OK -> Отключить все тумблеры, кроме Управление сообщений -> Публикация сообщений

Теперь нужно пройтись по всем кнопкам и прописать необходимые данные:

⚡Boosty

Нажав на эту кнопку, бот попросит вас отправить ему сообщение с адресом вашего Boosty-блога.
Можно отправить ссылку целиком, например:
https://boosty.to/mikulski
Или только ее часть с идентификатором блога:
mikulski

Соответственно, всегда можно сюда вернуться и ввести идентификатор заново, если вы допустили ошибку или нужно поменять адрес отслеживаемого блога.

▶️Telegram

Аналогично кнопке ‘⚡Boosty‘, но уже для указания публичного Telegram-канала/чата.
Можно вбить идентификатор или ссылку целиком.
Например, ссылка вида:
https://t.me/mikulski_rocks
Или только идентификатор:
mikulski_rocks

Соответственно, всегда можно сюда вернуться и ввести идентификатор заново, если вы допустили ошибку или нужно поменять адрес канала для публикаций.

📝Пост

Здесь можно поменять шаблон сообщения, которое будет публиковаться в Telegram-канале/чате.
Учтите, что поле нельзя оставлять пустым – иначе бот ничего не отправит!
По умолчанию, в шаблоне прописаны подставляемые значения, которые подтянутся из поста Boosty:
${title} – заголовок поста;
${link} – ссылка на пост.
Вы можете также добавить что-нибудь от себя, например:
Я опубликовал новый пост на Boosty:<br>${title}<br>Переходи по ссылке:<br>${link}

Соответственно, всегда можно сюда вернуться и отредактировать шаблон.

⚠️ВКЛ-ВЫКЛ-Репост

Эта кнопка вызывает подменю, в котором можно включить/выключить репост.
По умолчанию, отключено.
Желательно отключать репост, если вы планируете длительный перерыв в публикациях.

⛔Стоп-фраза

В случае, если вы не хотите репостить все публикации подряд, то можно придумать комбинацию символов или смайлик для заголовка, которые дадут боту знать, что этот пост следует проигнорировать.
По умолчанию, функция отключена.
Если вы меняли Стоп-фразу, то в дальнейшем для корректного отключения функции, следует ввести сообщение “Сброс".
Будьте внимательны! Пробел тоже может являться символом 😉

⚙️Проверить-настройки

Кнопка, которая позволяет посмотреть текущие настройки и убедиться,что все настроено верно.

❓️Помощь/Справка

Кнопка вызывает подменю, в котором можно ознакомиться с инструкцией (по сути то же сообщение, которое бот выдает при первом запуске); способы связаться со мной; поблагодарить/поддержать и/или удалить учетку.
Бот хранит только публично доступные данные (для идентификации нужного профиля при отправке репоста) и те, которые вы вводите сами в настройках.
Но если вы решите прекратить использование бота, то желательно удалить учетку:
нажимаете кнопку -> отправляете сообщение "удалить" -> ваш профиль и все связанные с ним данные удалены!

Результат

После того как все настройки совершены и вы опубликуете пост на Boosty, то с погрешностью в 30 минут, бот отправит в ваш Telegram канал/чат сообщение.

В примере на скриншоте текст поста указан так:
Я<strong> опубликовал новый пост на Boosty</strong>:
<strong>${title}</strong>
<strong>Переходи по ссылке:</strong>
<strong>${link}</strong>

Технические особенности и дальнейшее развитие

К сожалению, пришлось отказаться от добавления прочих подставляемых значений, как например, требуемый уровень подписки и ее стоимость, стоимость поста, тизер и т.д. Потому как это большое количество переменных, которые надо учитывать и они могут быть и не быть в посте. Так что я решил остановиться на более простом и универсальном варианте исполнения.
Как было замечено почти в самом начале этой статьи: бот обращается к серверам Boosty по неофициальному API, поэтому сложно предсказать срок службы приложения, как и прочие неприятные ситуации с этим связанные. Однако, я настроен оптимистично и если не будет большого наплыва пользователей (это маловероятно), то бот будет работать долго и стабильно. Я намерен поддерживать его работу, пока имею такую возможность.
В данный момент логика заключается в интервальном опросе сервера каждые 12 минут и с задержкой в несколько секунд между запросами на каждого пользователя, чтобы минимизировать “палево” частых обращений к серверу.
Да, я понимаю, что этот метод далек от идеального и правильного. Но имеем то, что имеем на сегодня.
Пока что у меня на руках только успешные тесты в условной песочнице с массивом из 10 пользователей на протяжении нескольких суток. Практические “боевые” тесты с привлеченными авторами уже покажут жизнеспособность этого проекта в текущем виде.

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии