
Сегодня мы напишем бота пересылки сообщений из RSS ленты в канал telegram.[spoiler]
Для начала нужно зарегистрировать бота в telegram.
Добавляем в список контактов @BotFather
Отправляем ему команду:
|
Получаем в ответ сообщение:
Alright, a new bot. How are we going to call it? Please choose a name for your bot. |
Получаем в ответ сообщение:
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. |
Получаем в ответ сообщение:
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. |
Все, бот зарегистрирован, самое важное это последние сообщение с токеном бота, ни кому не сообщайте его т.к. зная токен можно полностью управлять ботом.
Done! Congratulations on your new bot. You will find it at t.me/XXXXbot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this. Use this token to access the HTTP API: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX For a description of the Bot API, see this page: https://core.telegram.org/bots/api |
Долее создаем новую группу или в уже существующую добавляем бота поиском по имени которое указывали ранее.
Переходим к написанию бота.
Для начала создадим и заполним файл settings.ini в котором будем хранить настройки нашего бота.
|
datetime - строка для хранения даты и времени последнего полученного сообщения RSS
bot_token - токен бота полученного ранее
channel - ваш канал в телеграмме в который будут отправляться сообщения из RSS.
Для начала нам понадобятся стандартные библиотеки, datetime, configparser и urllib
И несколько библиотек не входящих в стандартную поставку python - feedparser и telebot
Установим недостающие библиотеки, в консоли пишем следующие команды:
|
Создаем файл main.py и в самом начале файла импортируем нужные библиотеки:
|
Считываем настройки из settings.ini:
|
Получаем RSS ленту
|
Инициализируем телеграмм бота
|
Запускаем основной цикл получения сообщений RSS и проверяем дату сообщений, в вашем источнике RSS формат даты может отличаться, поэтому в строке time = datetime.datetime.strptime(data, '%a, %d %b %Y %H:%M:%S %z') подставьте свои параметры, все параметры для работы с датой можно посмотреть тут
|
Пропускаем уже опубликованные посты, если пост не был опубликован - то записываем дату и время поста в файл:
|
Получаем заголовок поста
|
Получаем картинку
|
Получаем ссылку на пост
|
Скачиваем картинку
|
Отправляем картинку и текстовое описание в Telegram
|
Цикл получения и отправки из RSS ленты в Telegram полностью:
|
Вот и все, бот для отправки из RSS в Telegram готов.
Полный код бота вы можите посмотреть в моем репозитории на github
Подскажите, что не так:
Traceback (most recent call last):
File "C:\Python\rumotos_bot\bot.py", line 49, in <module>
img = post.links[1].href
IndexError: list index out of range
И почему он дату меняет на 16 сентября?!