Найти тему
Код на салфетке

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

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

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

Давайте обновим команду /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']
))

-2

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

Теперь откроем файл 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}'

-3

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

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

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

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

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

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

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

-4

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

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

-5
-6

Telegram-канал: https://t.me/press_any_button

Сайт: https://pressanybutton.ru/