AIOgram3 7. Получение пути до файла по API
В этом посте, мы при помощи библиотеки requests будем отправлять ботом запросы на API.
Все статьи
- 08 Август 2024 AIOgram3 19. Капча для вступающих в чат Комментарии к посту
- 13 Июнь 2024 AIOgram3 18. Подключаем оплату Telegram Stars Комментарии к посту
- 22 Май 2024 Бот-автоответчик с ChatGPT для Бизнес-аккаунта в Telegram на Aiogram 3 Комментарии к посту
- 06 Февраль 2024 AIOgram3 17. Подготовка к разворачиванию на сервере Комментарии к посту
- 30 Январь 2024 AIOgram3 16. Перевод голосовых сообщений в текст Комментарии к посту
- 07 Октябрь 2023 AIOgram3 15. Обработка события вступления или покидания чата Комментарии к посту
- 05 Октябрь 2023 AIOgram3 14. Фильтруем запрещённые слова Комментарии к посту
- 03 Октябрь 2023 AIOgram3 13. Прогноз погоды в боте - OpenWeatherMap Комментарии к посту
- 01 Октябрь 2023 AIOgram3 12. Добавление бота в чат Комментарии к посту
- 06 Сентябрь 2023 AIOgram3 11. Обновление для команды get_file Комментарии к посту
- 05 Сентябрь 2023 AIOgram3 10. Пара простых команд Комментарии к посту
- 05 Сентябрь 2023 AIOgram3 9. Команда start Комментарии к посту
- 15 Август 2023 AIOgram3 8.2 Команда отправки файла, продолжение Комментарии к посту
- 15 Август 2023 AIOgram3 8.1 Команда отправки файла Комментарии к посту
- 10 Август 2023 AIOgram3 7. Получение пути до файла по API Комментарии к посту
- 08 Август 2023 AIOgram3 6. Информирование администратора Комментарии к посту
- 08 Август 2023 AIOgram3 5.2. Создание структуры, продолжение Комментарии к посту
- 03 Август 2023 AIOgram3 5.1. Создание структуры Комментарии к посту
- 28 Июль 2023 AIOgram3 4. Эхо-бот Комментарии к посту
- 27 Июль 2023 AIOgram3 3. Основная функция Комментарии к посту
- 27 Июль 2023 AIOgram3 2. Точка входа Комментарии к посту
- 27 Июль 2023 AIOgram3 1.5. Регистрация бота Комментарии к посту
- 27 Июль 2023 AIOgram3 1. Начинаем создавать Telegram-бота Комментарии к посту
Дополнительные материалы
Для скачивания материалов необходимо войти или зарегистрироваться
Файлы также можно получить в Telegram-боте по коду: 733286
Реклама
В предыдущем посте мы закончили писать API для бота. Вернёмся к боту и напишем функционал обращения к API и отправке файла пользователю.
Обращение к API.
Начнём с написания логики обращения к API.
В пакете botlogic
создадим пакет utils
. В данном пакете, будем писать логику не связанную с ботом. В пакете создадим файл api_actions.py
.
Для отправки запросов и получения данных, нам нужна библиотека requests
. Установим её командой pip install requests
и добавим в requirements.txt
.
В начале файла создадим константу API_URL
и пропишем туда URL-адрес созданного ранее API. У меня это http://127.0.0.1:8000/bot/
.
Создадим функцию get_path
, получающую аргумент code
.
В теле функции создадим переменную response
и получим в неё ответ на запрос. Запрос будет отправлять при помощи метода requests.get()
, в параметры которого передадим API_URL + f'get-file/?code={code}'
.
В случае, если получим от API данные, тогда возвращаем из функции ответ в виде JSON.
Если же данных не будет(значит, что файла с таким кодом нет), вернём None
.
Код.
import requests
API_URL = 'http://127.0.0.1:8000/bot/'
def get_path(code):
response = requests.get(API_URL + f"get-file/?code={code}")
if response:
return response.json()
return None
Тестирование.
И для уверенности, что всё работает можно прямо здесь и протестировать.
После функции напишем print(get_path(0))
, запустим Django в отдельном окне IDE и запустим наш скрипт. В выводе терминала должны получить JSON
, похожий на питоновский словарь.
{'title': 'Тестовый файл', 'file_path': 'C:\\Users\\proDream\\PycharmProjects\\pressanybutton\\pressanybutton\\media\\post_files\\68.zip'}
Отлично. API отрабатывает. Удалим принт, что бы при вызове функции не было лишних вызовов.
Подготовка.
Подготовим всё необходимое к следующему посту.
В этом же пакете utils
создадим файл statesform.py
и commands.py
. В файле statesform.py
мы будем хранить группы состояний для машины состояний. В файле commands.py
будет список команд бота, которые будут отображаться в виде кнопки меню у пользователя.
Команды бота, заготовка.
Давайте сразу пропишем будущие команды, пусть их пока и нет.
Откроем файл commands.py
и напишем асинхронную функцию set_commands
в аргументы которой будет передаваться экземпляр класса Bot
.
В теле функции создадим переменную commands
и присвоим ей список. В списке будут находиться объекты класса BotCommand
, в параметры которого передаётся команда и описание.
Ниже запустим метод, присваивающий написанный ранее список команд нашему боту.
Код команд:
from aiogram import Bot
from aiogram.types import BotCommand, BotCommandScopeDefault
async def set_commands(bot: Bot):
commands = [
BotCommand(
command='start',
description='Начало работы'
),
BotCommand(
command='get_file',
description='Получить материалы'
),
BotCommand(
command='about',
description='Информация о боте'
)
]
await bot.set_my_commands(commands, BotCommandScopeDefault())
Подключаем меню с командами.
Откроем файл events.py
в пакете handlers
. В функции start_bot
перед отправкой сообщения добавим добавление команд в меню:
from botlogic.utils.commands import set_commands
async def start_bot():
await set_commands(bot)
await bot.send_message(Secrets.admin_id, start_bot_msg())
Комментарии
-
-
13 июля 2024 г. 18:15
Про API_URL? В посте указан путь до локального веб-сервера Django из постов в соседнем разделе "Сайт на Django".
Igor
9 июля 2024 г. 10:19
Добрый день.
Скажите, как узнать свой URL-адрес?
Войдите чтобы добавить комментарий.