Cat

AIOgram3 11. Обновление для команды get_file

В этом посте доработаем команду /get_file, добавив в неё новые данные из API.

Все статьи

Icon Link

Дополнительные материалы

Icon Link

Реклама

Icon Link
Telegram-бот на AIOgram3 proDream 06 Сентябрь 2023 Просмотров: 1161

В прошлом посте, мы добавили связь между файлом и постом на сайте и добавили в передачу дополнительные данные.

Давайте обновим команду /get_file.

 

Обновление /get_file.

Откроем файл send_file.py.

В функции send_file_get_data нам нужно добавить дополнительные поля, которые мы получаем по API.

Находим строку, в которой отправляется файл - bot.send_document
В аргументах у нас указан всего один параметр, который передаётся в сообщение пользователю - caption=views.file_caption(data['title']).

Давайте его расширим, добавив post_url и post_telegram_link:

await bot.send_document(message.chat.id, document=file, caption=views.file_caption(  
data['title'],  
data['post_url'],  
data['post_telegram_link']  
))

 

Сообщение пользователю.

Теперь откроем файл views.py и найдём функцию file_caption.
В аргументы функции добавим новые - post_url и post_telegram_link.

В теле функции сделаем проверку, если post_url содержит данные, то мы возвращаем сообщение пользователю, в котором будет заголовок файла и две ссылки - на сайт и на канал.

Если же данных не будет, то возвращаем просто строку с заголовком файла.

def file_caption(file_title, post_url, post_telegram_link):
    if post_url:
        return f'Файл к посту: {file_title}\nПост на сайте: <a href="{post_url}">pressanybutton.ru</a>\nПост на канале: <a href="{post_telegram_link}">Код на салфетке</a>'
    return f'Файл к посту: {file_title}'

 

Форматирование сообщений.

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

Telegram предоставляет три вида форматирования текста: markdown, markdownv2 и HTML.
Я остановился на HTML.

Чтобы добавить поддержку HTML-разметки в сообщениях, перейдём в файл settings.py.

Найдём переменную bot

В параметры к классу Bot, сразу после передачи токена, добавим параметр parse_mode='HTML'.

bot = Bot(token=Secrets.token, parse_mode='HTML')

 

Чтобы проверить работу, запустите бота и Django. В панели администратора Django откройте объект поста, в поле файл выберите имеющийся файл и сохраните.
Затем в боте запросите этот файл.

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

Автор

    Нет комментариев

    Реклама