Хабрахабр

Комментарии в телеграм-канале

Знакомство с телеграм-ботами вышло сумбурно — на работе нужно было опередить команду коллег, и, неплохо зная внутренний API, был написан бот за несколько дней (впоследствии доработанный и получивший ru telegram verify badge)

По итогам было написано два бота (основной и рассылочный), на чем руководство успокоилось, а я занялся самиздатом.

Выбор пал на комментарии. В очередной раз поигравшись в прототип, я хотел придумать, что ещё интересного можно быстро написать в телеграм-стеке.

Бот @CommentsUserBot для комментариев в телеграм-канале

В телеграмме есть каналы, но их нельзя комментировать, и есть чаты, где нельзя писать новости — вы будете получать либо весь спам сообщений, либо ничего, если уйдёте в mute.

Хотя, если делать в чате pin с оповещением, то можно эмулировать публикацию aka в #channel.

image

Мне уже приходилось писать парсер для новостей к корпоративному сайту для IV, и я примерно представлял, какие виджеты существуют на платформе (однако, некоторые так и не завелись). Поразмыслив, я пошел почитать документацию к telegra.ph. Также, в сообществе бот-разработчиков, я почерпнул несколько непубличных API, которые пригодились позднее.

В самом же канале кнопка должна показывать количество комментов. Всё выглядело понятно, и за выходные я набросал прототип бота комментариев к телеграм-каналу — к посту цеплялась кнопка, с переходом в бот для написания текста, а дальше генерация страницы комментариев в телеграфе.

image

Всё остальное — текст и графику — хранит и кеширует сам телеграф. Технически, сервер работает только в момент публикации коммента.

После вброса разрабочикам на тестирование, я собрал фидбек, набросал план и начал потихонечку запиливать изменения. Так, изначально автоматический режим обновления канала сменился настройками (ручной или авто, замещение оригинального поста или публикация коммент-постика). Сами комментарии пополнились виджетами, графикой и видео (спасибо Олегу О. за тестинг уязвимостей. Кстати, у него тоже есть неплохой коммент-бот @CommentsBot)

В то время я установил telegram-x, и одно из важных апдейтов в нём было то, что, единожды зарегистрировшись в боте, не нужно каждый раз нажимать start при заходе с дип-линка.

Комментарии, раз плоский чат уже существует, решено было делать древовидными. Я не писал такое хранение раньше, но после пары загугленых статей база данных смогла их переваривать. Текущее ограничение глубины веток в 10 уровней. Количество комментариев на страницу 20, с пред-показом ответов в ветках, количеством комментариев и пагинацией.

Не слетят шрифты, а сами страницы комментариев отрабатывают через Instant View. Да, телеграф не позволяет развернуться с дизайном страницы, но именно это и было нужно — бот в экосистеме телеграмма — нет никаких дополнительных авторизаций и выходов на сайты. Сам пользователь при этом набивает комментарий в привычном формате, в телеграмме — со смайликами, стикерами, ссылками и прочим.

В целом этого пока хватает, ведь собственный коммент можно удалить (прямо со страницы комментов) Редактирование заменено на дополнение текущего коммента.

image

Было добавлено удаление неугодного комментария и бан пользователя. Потом, когда ботом захотели пользоваться большие каналы (>100к подписчиков), встал вопрос администрирования. Всё это приходит из отдельного бота-спамера, так что заблокировав его по незнайке телеграм-интерфейса, можно всё равно писать комменты в других каналах. Также, ввиду личной неприязни к спаму, оповещения об ответах по-умолчанию выключены для пользователя, но настройки позволяют подписаться как на все комменты, так и на комменты канала/поста, плюс выбор уровня комментов.

Задизайненая в гимпе иконка разкрашена для всех сущностей проекта — бот, оповещение-бот, новости проекта и чат поддержки.

Про языковые интерфейсы: страницы в телеграфе в en, а боты в en/ru (работает авто-детект).

Сейчас добрые самаритянины переводят файлы на гитхабе для более локализации. Комменты очень зашли в Южной Америке.

Весной (летом?), когда РКН начал блокировать доступы, мне стало немного неудобно разрабатывать (в поезде, в дороге на/c работы — двойной ssh на сервер переодически отваливается), так что темп разработки (и без того невысокий), понизился. Сейчас я собираю отзывы, составляю план улучшений и пишу время от времени другой бот, наработки которого мне потребуются в текущем проекте.

Бот @CommentsUserBot для комментариев в телеграм-канале.

Подключайтесь, пишите, обсудим )

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть