/ Open Source

FeedBot для Telegram

В свободное от общественных и коммерческих проектов время я немного сам программирую. В основном то что мне же самому нужно и что может пригодится другим.

Пример такого - это FeedRetranslatorBot в телеграме которые перенаправляет новости из RSS каналов на сайте и просто страниц где есть новости в телеграм каналы. Бот был сделан для того чтобы заменить разного рода новостные читалки, а для удобства вместо категорий новостей чтобы можно было создать себе новостные каналы и в них транслировать то что интересно.

Особенность именно FeedRetranslatorBot в алгоритмах внутри которые извлекают новости из сайтов у которых нет экспорта в RSS. Примеры:

Инструкция как подключить канал

  1. Необходимо создать новый публичный канал. В десктопном приложении это раздел "New channel" на английском или "Новый канал" на русском.
    Telegram_2018-08-14_11-23-32
    У канала надо заполнить основные его параметры: название, описание и выбрать картинку
    Telegram_2018-08-14_11-31-52

  2. Сделать канал публичным
    После создания необходимо настроить канал для работы
    Telegram_2018-08-14_11-33-54
    В настройках канала укажите что это "Public channel" а в Link укажите публичный идентификатор канала. В данном случае - это rudigitaltop
    Telegram_2018-08-14_14-48-43

  3. Добавьте бота к администраторам канала.
    В Manage Channel нажмите на вкладку Administrators
    Telegram_2018-08-14_11-34-05
    Нажмите кнопку "Add administrator"
    Telegram_2018-08-14_11-34-25
    В поиске наберите FeedReatranslatorBot и нажмите на выпадающий бот.
    Telegram_2018-08-14_11-34-48
    Подтвердите назначение бота администором канала
    Telegram_2018-08-14_11-34-56
    Установите и подтвердите разрешения для бота. На практике ему достаточно прав на публикацию материалов.
    Telegram_2018-08-14_11-35-06

  4. Добавление канала для подписок
    Откройте чат с FeedRetranslatorBot и наберите команду /channel <название канала> (то которое было указано в Link). Пример: /channel rudigitaltop
    Telegram_2018-08-14_11-36-11

Проверьте ленту которую вы хотите транслировать в канал командой /test. Это позволит убедится что новости извлекаемы из этого источника. Пример в данном случае "/test https://corp.mail.ru/ru/press/releases/" проверяет извлекаются ли корпоративные новости mail.ru
Telegram_2018-08-14_11-37-10

Добавьте новости командой /add <id канала> <ссылка>. Пример "/add rudigitaltop https://yandex.ru/blog/company/rss"
Telegram_2018-08-14_11-38-33

В итоге получился канал "Ведущие интернет компании" (rudigitaltop) в который транслируются новости Яндекса, Mail.ru груп, 1С, 2Gis и других.

Список всех каналов и привязанных к ним подписок можно получить командой "/list".
Пример того как выводятся подписки по каналу rudigitaltop
Telegram_2018-08-14_15-00-46

Примеры каналов

На основе бота уже создано множество каналов:

  • Правительственный дайджест https://t.me/govdigest : новости администрации Президента, Правительства, ключевых министерств и мозговых центров
  • Контрактная система https://t.me/gzcontracts : новости электронных торговых площадок, сайта госзакупок и других источников регулирования российской контрактной системы (государственной)
  • Госфинансы https://t.me/govfin : новости Минфина, Казначейства, ФНС России и другие новости по госфинансам
  • Московский патриархат https://t.me/mospatriarhia новости Московского патриархата и всех его синоидальных отдела (без учёта митрополий и епархий)
  • Open Data Digest https://t.me/opendatadigest : международные новости про открытые данные
  • Open Government Digeest https://t.me/opengovdigest : международные новости про открытость государства
  • Data is Good https://t.me/dataisgood : международные источники про данные и алгоритмы
  • Крупнейшие компании https://t.me/topcorpnews : новости топ 20 российских компаний по рейтингу РБК 500 (Газпром, Лукойл, Ростех и др)

Кроме того многие публичные каналы создают пользователи.
Например, Фил Кулин (канал Эшер II, https://t.me/usher2, https://usher2.club) создал такие каналы:

  • Лента новостей с regulation.gov.ru https://t.me/ru_regulation : поток новостей по законопроектам для публичной реакции
  • Новости Минцифры и Роскомнадзора https://t.me/ru_comnews : новости этих двух ведомств соответственно

Подробнее о боте

Для того чтобы извлекать оттуда новости бот использует библиотеку newsworker https://github.com/ivbeg/newsworker которая как раз и извлекает из HTML заголовки, даты, ссылки и текст новости. Это даёт возможность охватить ещё и те источники новостей которые можно упустить при медиамониторинге.

Новости собираются в режиме от 15 до 30 минут, если не возникает проблем с первоисточником, например если он не банит внешних ботов как это иногда бывает с сайтом Роскомнадзора, например.

Бот работает на принципе forever free, создан не для монетизации, а для личного удобства (как я уже говорил он мне нужен для замены RSS читалок). Большая часть его кода открыта или будет открыта на github'е.

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

Из того что запланировано:

  • веб-интерфейс с документацией и каталогом общедоступных каналов (для тех кто решит их публичить)
  • API и утилита командной строки для управления подписками
  • монитор доступности сайтов с новостями (не заблокировали ли бота)
  • упрощение горизонтального масштабирования

Вы также можете создать свои каналы с помощью этого бота. Он реагирует на команду /help, а мне можно задавать вопросы и пожелания в https://t.me/begtinchat и на почту [email protected].

Ivan Begtin

Ivan Begtin

I am focused on Open Data, Procurement, e-Government, Open Government, Data, Public Budgets, Privacy and other tech, data and government stuff

Read More