Лайкботы для телеги — пичаль-бяда

06.06.2020 1 Автор Phantom

Одна из необходимых вещей для любого паблика — фидбек от юзеров. Основные способы получения это камменты и лайки. По части камментов в телеге можно или подцепить к каждому посту через comments.app (штука хорошая, жаль забанена роскомнадзором) или прицепить чатик к каналу, что, пусть и не идеально, но закрывает потребности и делается в два клика. Лайки в телеграме как бы есть, но… не всё так как хочется! Ситуация чем-то напомнила мне загадывание желания джину — всегда что-то не так.

Диспозиция

Имеется блог, с которого при помощи готового плагина идёт постинг в канал. Кроме того, в канал попадают какие-то «вести с полей» через обычное приложение на мобиле. Третья часть контента — более осмысленные посты с текстом, для которых блог переобозванный журналом слишком крут — это уже с компа.

В первом случае в сообщении имеется текст, иллюстрация, хештеги и

ссылка, в остальных двух как правило НЕСКОЛЬКО иллюстраций плюс короткий или длинный текст. Почему это важно станет ясно дальше.

@ControllerBot????????????????????

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

@like❤️????‍♀️????‍♂️????

Менее кучеряво, но по лайкам аналогично с предыдущим.

@channel_likebot????????

Просто прикрепляет к сообщениям лайк/дизлайк, казалось бы — вот оно счастье! Нет, проблем две: во-первых иконки не кастомизируются, во-вторых (и в главных) добавление идёт не ко всем постам!

Если это текст или текст с фото, то всё хорошо. Но если картинок больше одной, то сообщение игнорируется.

@ChannelLikeBot ????????????????????????

Дофига оригинальности в названиях канеш) Прикрепляет голосувалку к ЛЮБОМУ посту, НО оно идёт как отдельное сообщение, которое не может быть пустым и содержит или текст или имя бота. Например, можно написать «Ваше мнение очень важно!». Иконки кастомизируются, однако количество ограничено тремя.

При таком решении в списке каналов отображается не начало поста, а текст сообщения о голосовании, что радикально снижает желание открывать и читать — пропадает вся прелесть жёлтых заголовков!:)

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

Где зарыта собака

Как вы поняли проблема в количестве картинок прекрепленных к посту. Когда их несколько сообщение имеет тип sendMediaGroup, к которому нельзя прикрепить callback-кнопки, через которые собственно и реализуются лайки.

Решение?

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

Как вариант я рассматриваю написание своего бота, который бы работал по более сложному алгоритму: если прикрепить кнопки можно, то прикреплял бы, если нельзя, то создавал бы сообщение по шаблону типа «оцените статью %первая строка поста%» и прикреплял кнопки к нему. Возможно, стоило бы добавить управление лайками в пост — бот считывает последнюю строку, если она состоит из, к примеру, ???????????????? — то эмодзи удаляются и вставляются кнопки для голосувания с ними.

Более другой вариант: ЖДАТЬ! Дело в том что возможность нативно ставить лайки уже анонсирована https://core.telegram.org/methods#working-with-message-reactions, называться это будет «реакции» и появится в layer 117… сейчас 113 https://core.telegram.org/api/layers… что значат эти слои я не знаю, но видимо ждать не сильно долго.

P.S. Историческое

На иллюстрации кроп картины конца 18-го(sic!) века Pollice verso, на которой зрители массово дизлайкают.

Строго говоря, точная форма лайков и дизлайков в Pax Romana нам неизвестна, возможно было наоборот, либо вообще вбок, либо большой палец прятали в кулак, либо фиг знает как, потому что переводится оно как «поворотом большого пальца», а куда его крутили не конкретизируется. Существующая версия была популяризирована Голливудом, на основе вот этой самой картины.

Поделиться в: