
AIOgram3 11. Обновление для команды get_file
В этом посте доработаем команду /get_file, добавив в неё новые данные из API.
Дополнительные материалы

Для скачивания материалов необходимо войти или зарегистрироваться
Файлы также можно получить в Telegram-боте по коду: 213307
Реклама

В прошлом посте, мы добавили связь между файлом и постом на сайте и добавили в передачу дополнительные данные.
Давайте обновим команду /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 откройте объект поста, в поле файл выберите имеющийся файл и сохраните.
Затем в боте запросите этот файл.
В сообщении к файлу, кроме заголовка, будут находиться ссылки на пост.


Все статьи