Как настроить автопостинг в канал «Телеграм» из RSS-ленты

Предпосылки и проблематика

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

Одно время, когда ВК начал пихать в ленту свои рекомендации (неотключаемые вообще никак), я пользовался адблоком, альтернативными андроид-клиентами (kate mobile), но все эти полумеры напрягали.

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

Плюс, как-то внезапно, много каналов начали спамить крос-сылками с рекламой. И ладно, если это партнерские посты из схожих по тематике каналов. Чаще это были всякие курсы английского, питона, а иногда вообще скам про казино или крипту.

Идея и реализация

Так появилась мысль сделать агрегатор телеграм-каналов с фильтрацией по ключевым словам (которые в рекламных постах достаточно часто попадаются).

Я в курсе про функционал группировки каналов в некоторых клиентах, но по некоторым причинам он мне не подходит:

  • группировка работает только на уровне клиента. Т.е. сгруппированные в мобильном приложении каналы не будут сгруппированы в веб-версии или другом клиенте

  • нельзя (по крайней мере я не нашел) группировать чаты и каналы

  • фильтрация спама и рекламы недоступна

  • я собирался экспортировать агрегированный контент в rss (об этом во второй части статьи)

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

Что еще капотом:
  • telethon как telegram-клиент

  • asyncio для асинхронности

  • peewee и sqlite3 для хранения инфы кто на что подписался.

Сами посты из подписок не сохраняются, пересылаются на лету

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

Нюансы агрегатора

Процесс установки и использования самой библиотеки я не буду расписывать, в доках все достаточно подробно. Остановлюсь на нескольких технических нюансах, которые всплыли в процессе создания Телегрегатора:

  1. Поскольку меня напрягают висячие непрочитанные сообщения (а так же больше 5-7 вкладок в браузере), я хотел, чтобы агрегатор вместо меня подписывался на каналы и пересылал мне сообщения в специально заведенный для этого чат/канал (я это назвал поток, feed).

  2. Как следствие из п.1, агрегатор должен был самостоятельно подписываться на каналы (в т.ч. закрытые), вступать в группы и чаты. А это значило, что вариант с ботом не подходил, т.к. он пассивен и его может добавить только участник чата или владелец канала. Здесь и пригодилась возможность telethon’а эмулировать клиент. Т.е. telethon-клиент авторизуется с номером телефона и кодом из смс и эмулирует обычного юзера. Может реагировать на сообщения о наборе текста, заходить в каналы, группы, чаты, пересылать сообщения, и всё это в реалтайме. В общем, полноценный пользователь.

  3. Как следствие из п.2, возможности бота (кастомные клавиатуры и команды) оказались мне недоступны (или я не нашел, как клиентом это делать). Если знаете как — напишите в комментах. Так что пришлось велосипедить с обработкой пользовательских команд.

  4. Была идея, что пользователю надо общаться с ботом, а тот уже под капотом передает команды клиенту (подписаться на канал), но это показалось слишком сложным для mvp.

Как попробовать?

Сейчас процесс выглядит так:

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

  2. Создаёте новый канал (приватный или публичный), который будет выступать в роли потока (ленты)

  3. Находите через поиск и добавляете в поток пользователя Телегрегатор (@telegregator) и даёте права на публикацию сообщений (через меню администраторов).

  4. Телегрегатор поздоровается и покажет доступные команды.

  5. Отправляете команду /join @имя_канала (из. п.1), после чего Телегрегатор подписывается на нужный канал. Можно указать пачку каналов, через пробел (займет некоторое время, ограничение порядка 50 каналов в минуту).

  6. Можно просто переслать в поток сообщение из любого канала, Телегрегатор сам подпишется на канал.

  7. Все новые сообщения из подписанных каналов Телегрегатор будет прислать в этот поток.

Потоков может быть несколько. Вы можете добавлять для каждого потока фильтры по стопсловам (это пока тестовая функция, так что если вдруг что-то перестало работать — сбросьте фильтры).

Ограничения и планы

Есть несколько ограничений: альбом из фоток, которые пришли в оригинальный канал в одном сообщении, Телегрегатор пересылает отдельными сообщениями. Или репост в поток иногда происходит не мгновенно, а спустя 5-10 секунд. Иногда Телегрегатор падает (рестарт автоматически), и может пропустить какое-то сообщение. Это редко, но случается.

Видимо, это особенности протокола. Если заметите странное поведение — напишите мне.

В планах добавить следующий функционал:

  • показать случайный пост из случайного канала

  • топ самых популярных каналов (самых редких, как вариант)

  • предлагает случайный канал

Я люблю находить годноту в телеге. Порой, в канале всего человек 200, и о нём вообще не узнать, кроме как по рекомендациям друзей.

Сам пользуюсь Телегрегатором где-то полгода, решил поделиться, вдруг кому-то зайдет. Из своего аккаунта я удалил все подписки, теперь ими рулю через потоки, полет нормальный.

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

все-так бот или клиент?

Часть вторая, про RSS

В процессе работы над Телегрегатором появилась мысль экспортировать это все в RSS-ленту. Я многократно встречал статьи, в т.ч. на Хабре, как автор читает вообще всё через rss, собирая его из разных источников. Кто-то пошел дальше: из rss собирает подборку и формирует ежедневную рассылку на почту. Планирую прийти к такому варианту. Если вы имеете такой опыт — отпишитесь, пожалуйста, в комментах, очень интересна ваша реализация.

Генераторов rss из соцсетей много, пару примеров:

  • http://feed.exileed.com/

  • https://rsshub.app/telegram/channel/temablog

Но у них есть недостатки:

  • не умеют читать приватные каналы

  • редко обновляют кеш

  • не отображают вложения (фото, видео, музыку)

  • медленно или нестабильно работают (иногда падают)

Поэтому, вторым очевидным шагом стало создание моста telegram->rss. По факту, это тот же клиент-Телегрегатор, который по имени канала получает последние сообщения из канала (без подписки) и возвращает в виде rss-ленты. В планах сделать подписку на запрашиваемый канал, тогда можно будет получать ленту и из приватных каналов, но пока так. Отпишитесь, если такой функционал востребован. Проверить можно здесь: http://tg2rss.prosto-tak.ru/.

По вопросам или замечаниям можете писать сюда в личку, в телегу @parotikov или на nik.parotikov@gmail.com.

P.S. В «Я пиарюсь» не хватает кармы. Для телеграма вообще нет хаба, странно.

P.P.S. Вышло продолжение: https://habr.com/ru/post/545580/

Без навыков программирования, сторонних ботов, смс и регистрации!

TL;DR

Заменяем в этой ссылке последнее слово на адрес вашего канала и используйте его в качестве RSS ссылки: https://rsshub.app/telegram/channel/tlitter

Также вы можете попробовать использовать этот бот: @crssbot, но он вроде медленно обновлял информацию и не поддерживается

Зачем это мне

Вкратце — vk.com/rurage. Сюда временно дублируется содержание моего t.me/tlitter канала

image-12.png

Я почти забросил VK после начала активного использования телеги и даже написал бота, который присылает мне в телегу посты с групп ВК. Но и у меня самого остается несколько групп в VK, в которые мне самому нужно писать. Чтобы не писать в Telegram и группу одновременно, я сделал, чтобы VK сам забирал новые посты с Telegram

Бонус

Сначала я нашел способ просматривать содержимое канала без регистрации и думал, что придется парсить содержимое с такой страницы: https://t.me/s/tlitter. Но страницу можно использовать даже чтобы просто показывать содержимое канала тем, кто не зарегистрирован в телеграме.

Я люблю Email рассылки. Подписан на 30 штук. Но получать их в почтовый ящик, где они перемешиваются с личными и рабочими переписками, мне не нравится. Потому что с таким подходом всё свалено в кучу и начинается бардак. Я уже рассказывал в этой статье, как можно добавить в одно приложение не только сайты и блоги (RSS), но и подкасты, YouTube каналы и плейлисты, Email рассылки и Twitter аккаунты.

Благодаря такому подходу, вы собираете различные типы контента в одном месте, можете организовать их по темам (папкам). У вас отпадает необходимость переключаться между приложениями и сервисами, чтобы ознакомиться с последними материалами из интересующих вас источников.

Telegram мне тоже нравится. Но то, как он быстро превращается в свалку, так как личные переписки (один на один) перемешаны с групповыми чатами и каналами – ужасно. Есть и хорошие новости: в следующей версии Telegram, появится сортировка и группировка каналов по папкам. Это здорово, но проблему целиком не решит. Да и не нравится мне использовать Telegram для получения новостей, интересных постов и так далее через каналы. Потому что я уже собрал всё в одном месте, а телега выпадала из моего воркфлоу. До этого момента.

Я нашёл способ как добавить любой Telegram канал в RSS читалку. Бесплатно. Без смс и регистрации. Без ботов. И без навыков, костылей и прочей головной боли.

Как это сделать

Заменить в этой ссылке ⤵️

https://rsshub.app/telegram/channel/ПоследнееСлово

последнее слово «ПоследнееСлово» на название канала.

Пример

Я хочу подписаться на канал Applicator Антона Маслака. У него такой адрес:

https://t.me/Aapplicator

Значит ссылка для добавления в RSS читалку будет выглядеть так:

https://rsshub.app/telegram/channel/Aapplicator

Добавляете в читалку, кладёте в нужную папку и готово.

Доказательство

Держите скриншоты. На них видно, что всё работает.

Telegram-channel-to-RSS-scaled.jpg

Первые 2 скриншота из News Explorer (моя любимая и лучшая RSS читалка). Последний скриншот – из самого Telegram.

Почему это ещё удобно

Вы можете помечать как «прочитанное» или «непрочитанное» сообщения в Telegram. Добавлять их в «избранное». Вам не нужно пролистывать длинные посты, так как в списке отображается только их небольшая часть (первые 3 предложения, но можно показать до 10).

Если вы сделали как я: добавили всё, что возможно в RSS ридер, то теперь можно смело отписаться от всех каналов и использовать Telegram для переписок и общения в чатах, и получать информацию в одном месте, которая удобно организована. С таким подходом, вы перестанете отвлекаться, заходя в Telegram, так как там теперь только общение. Никаких «я быстро зайду на 2 минуты проверить канал», а залипнуть минут на 20. Вы даже не представляете насколько это крутое ощущение отписаться от всех Telegram каналов и использовать его для того, для чего он был задуман: для общения.

Так же, если отправить такую ссылку человеку, не зарегистрированному в Telegram, то он сможет просмотреть содержание канала в браузере.

Теперь у вас есть ответ на вопрос: “Как читать Telegram каналы без регистрации и использования Telegram” 😎

Один недостаток

Если автор канала пересылает (репостит) сообщение из другого канала, то этого не видно. В RSS всё отображается так, что это сообщение автора этого канала.

Но чаще всего (при пересылке) авторы выделяют различными способами или это понятно из контекста. Меня это не напрягает совершенно.

Приписка

Очень хочется, чтобы мои статьи приносили как можно больше пользы. Если вы вынесли для себя какие-то полезные идеи и советы – поделитесь ими с родными, друзьями, близкими или просто в социальных сетях. И не забывайте оставлять комментарии :).

Мой типичный сценарий: больше каналов → больше уведомлений → больше отвлечений → больше тревожности.

Если просто выйти из каналов, как я делал раньше, можно упустить

что-то

важное

и/или

 просто выпасть из информационного поля.

В итоге, нашёл решение — подписаться на каналы по РСС:

Как реализовать

Для чтения РСС-ленты я использую

РСС-читалку

Фидли.

Чтобы получить

РСС-ленту

канала, использую сервис

РСС-Бридж

:

В поиске нужно вбить Telegram, нажать Show more, написать название канала и нажать Atom:

После нажатия на Atom, сервис сгенерирует ссылку на 

РСС-ленту

:https://wtf.roflcopter.fr/rss-bridge/?action=display&bridge=Telegram&username=antonkim_channel&format=Atom

Эту ссылку нужно вставить в Фидли — и подписаться на канал. Готово.

Что в итоге

Я вышел из всех каналов и теперь у меня в телеграме только переписка. При этом у меня осталась возможность следить за новостями, но теперь я сам решаю, когда это делать.

В Фидли, за исключением рассылок, у меня сейчас всё: и блоги, и издания, и 

ютуб-каналы

, а теперь ещё и 

телеграм-каналы

. То есть всё собрано в одном месте.

Мне такой подход экономит время, меньше отвлекает и даёт больше контроля над информационным полем.

АПД: Алексей Курченков подсказал ещё один, более упрощённый метод, как получить

РСС-ленту

канала:

https://rsshub.app/telegram/channel/antonkim_channel

Заменяем antonkim_channel на любой другой канал. Готово.

Мессенджер Telegram предоставляет площадку для разработки и эксплуатации специальных программ-помощников. Широкий ряд функций, простота пользования и безопасность – главные причины большого количества этих программ.

Зачем нужны боты

Английское слово bot – сокращение от robot. Он нужен для автоматизации работы с разнообразными интернет-сервисами. Может заниматься интернет-поиском и загрузкой нужной информации, отвечать на вопросы подписчиков, делать рекламную рассылку, публиковать посты на канале (channels manager) или даже ретушировать присылаемые фото.

Как ими пользоваться?

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

Категории ботов

Телеграм-бот на RSS.

Систематизировать помощников можно очень обобщенно.

Условно их делят на:

  1. Информаторов. Нужны для поиска и доведения до пользователя информации (новости, свежие комментарии, публикации).
  2. Ассистентов. Дополняют работу веб-сервисов.
  3. Чаты. Отвечают на сообщения пользователя или могут быть посредниками при общении с другими пользователями.
  4. Игровых.

Что такое RSS?

Под Телеграм RSS понимают несколько видов XML-форматов, с помощью которых можно производить автоматический сбор и обработку информации. Существуют также специальные приложения для просмотра обновлений новостных лент сразу нескольких ресурсов.

Платформа для разработчиков роботов в мессенджере также допускает использование RSS Telegram. С помощью телеграмм-бот RSS можно собирать новости с множества ресурсов в своем клиенте мессенджера.

Как прописать бот на RSS

Чтобы написать помощника на RSS Telegram channels, можно воспользоваться @BotFather. Найдя его и открыв, нужно начать работу с команды /start. Затем выбрать действие /newbot и придумать название с окончанием bot.

Создать RSS бот для Telegram можно с использованием официального конструктора Manybot.

Алгоритм следующий:

  1. Запустить конструктор.
  2. Ввести команду на создание новой программы /addbot. Manybot пришлет список действий: перейти на Botfather, ввести команду newbot и придумать название. Вам будет выдан Api-токен, который нужно прислать в чат с Manybot.
  3. На вопрос конструктора, что должен делать робот, ответить: «Присылает статьи, появляющиеся на… (название сайта)».

Что делать, если бот не работает?

Если созданный телеграмм-бот RSS не работает, то, вероятно, произошла системная ошибка в программе-конструкторе. Поэтому можно попробовать создать помощника заново или обратиться в службу поддержки.

Выводы

Роботы – одно из самых гибких и функциональных средств мессенджера Telegram. С их помощью можно сэкономить время, поручая им выполнение рутинных задач.

Детальная инструкция видна на видео:

Используемые источники:

  • https://habr.com/ru/post/544414/
  • https://blog.amd-nick.me/telegram-rss/
  • https://tuzovpavel.ru/kak-dobavit-lyuboj-telegram-kanal-v-rss/
  • https://antonkim.ru/blog/all/telegram-channels-on-rss/
  • https://stelegram.ru/faq/sposoby-sozdaniya-telegram-bota-na-rss

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий