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

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

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

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

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


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

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


image

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

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

image

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


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

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


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

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

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

image

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

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

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

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


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

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

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

© Habrahabr.ru