Лонгриды в телеграм. Просто, быстро и красиво
В своем недавнем обновлении, команда Дурова выкатило большое обновление Telegram Bot API 10.1, в котором завезли Rich Messages — сообщения, в которых можно конструировать сложную структуру контента с помощью Rich Markdown или HTML-разметки.
Но, возможность постить этим Rich Messages, доступна только через API и не доступна из клиентских приложений любой из платформ. В этом посте я решил исправить данное недоразумение.
Представляю Телеграм Рич Постер.
Предрекая нетерпеливость большинства читателей данного ресурса - вот ссылка:
Инструкция доступна, велкам ознакамливаться.
Для тех, кто жаждет подробностей и, просто любит читать лонгриды, то погнали разбираться, что это за постер, с чем его едят и при чем тут Гослинг.
Помните Telegra.ph, Notion или README на гитхабе? Вот Rich Messages - это нечто крайне близкое и похожее, но теперь во всеми любимом мессенджере.
Rich Messages дает реально очень крутые возможности, для оформления постов:
- Максимальный размер сообщения — 32 768 символов.
- До 500 вложенных блоков (включая списки, таблицы и цитаты).
- До 50 медиа-вложений (фото, видео, аудио) внутри одного сообщения.
- Таблицы шириной до 20 колонок.
И все это оформляется с помощью Markdown или HTML-тегов
В официальной документации по API можно посмотреть примеры сообщений и синтаксиса
А зачем вообще отдельный сервис для этого?
Потому что в клиентах Telegram (официальных) нет функционала для написания Rich Messages. Эти сообщения могут писать только боты.
И, казалось бы, на этом этапе можно расходиться. Но, боты умеют писать в каналы, от имени канала. Конечно же, предварительно бота надо создать и добавить его в админы канала.
Отправка Rich Message через API делается довольно просто, буквально одним POST запросом, в котором содержится tgid получателя и сам payload вашего Rich Message.
Сначала, я написал простой bash-скрипт, которому я скармливал md или html файл, а он, в свою очередь, отправлял содержимое указанному получателю по tgid.
Но, данный метод - это не выход. Вдруг под рукой не будет компьютера на Linux, или Termux на андроиде?
Да и, каждый раз запускать скрипт, прописывать аргументы - это не удобно и не универсально. Поэтому я расчехлил свой Python и сел писать веб интерфейс для постера.
Изначально хотел писать на goland в угоду максимальной совместимости и универсальности, но стало лень ставить компилятор и настраивать vscode под новый язык
Таким образом, спустя 15 коммитов, на свет явился Телеграм Рич Постер
Признаюсь честно, в html я не силен, поэтому оформление я нагло ~~сп~~ позаимствовал у meshcoretel.ru.
А откуда Гослинг?
Понятия не имею. Захотелось поставить Гослинга. Гослинг крутой. Гослинг всем нравится. Вот пусть в моем приложении он тоже будет.
Далее я накидал небольшой гайд, как этим пользоваться
Сделал локальное сохранение данных в localChache браузере пользователя. Добавил подгрузку информации о введенных данных через Telegram API и добавил проверку на возможность постинга именно этого бота именно в этот канал.
А еще можно markdown или html текст брать прямо с github (или с любого другого ресурса), указав прямую ссылку на файл.
Еще быстро оформил SSL сертификат, чтобы люди не стремались свои токены передавать...
И выкатил в свет: https://post.vakarian.website/
Для совсем параноиков, кто не верит открытому коду или просто любит все держать у себя, я написал краткий гайд по деплою на своем хосте
Так как, я старался писать проект вообще без зависимостей, то развернуть его на любой VPS с линуксом - труда не составит. На Windows тоже должно заработать, но я не проверял, увы ¯\_(ツ)_/¯
Тут важно уточнить, что разворачивать данный проект надо на заморской VPS, по причинам, о которых тут не принято говорить. Нужно просто поверить в то, что на заморской VPS он будет чувствовать себя лучше.
И еще одна маленькая плюшка для тех, кто решится на деплой: в конфиг-файле config.yaml, есть кастомизация интерфейса.
Можно установить свою иконку, как png, так и с simpleicons.org
Из неожиданных бонусов: для использования постера не надо пользоваться всякими средствами для интернета (ну вы поняли ツ).
Все работает и на нашем православном почти_чебурнете.
Кстати, в МАХе (или МАКСе) такого нет.
Вот и думайте... Подписаться. Кибербиба.