Без лишних слов.
Откроем файл api_actions.py в пакете utils и напишем функцию register_user для отправки данных по API. В качестве аргументов, она будет принимать следующие данные: chat_id, first_name, last_name, username.
Поскольку мы не получаем от API ничего, кроме статус-кода, создавать переменную, как в функции get_path, нет смысла. Сразу обращаемся к библиотеке requests.
В функции выше, мы отправляли GET запрос обращаясь к методу get из библиотеки requests. Сейчас нам необходимо отправить POST запрос, следовательно, использовать будем метод post.
Первым параметром, как и ранее будет URL-адрес нашего API, можно взять его из предыдущей функции и изменить f-строку на URL для регистрации f"create-user/".
Вторым параметром будет ключевой параметр data, в котором создаём словарь с данными, где ключ - строка с названием переменной, а значение сама переменная.
def register_user(chat_id, first_name, last_name, username):
requests.post(API_URL + f"create-user/",
data={
'chat_id': chat_id,
'first_name': first_name,
'last_name': last_name if last_name else '',
'username': username if username else '',
})
Стоит учесть, что поля last_name и username могут быть пустыми, по этому при помощи тернарного оператора, мы присваиваем значение переменной или пустую строку.
Создаём команду /start.
Обработчик написан, перейдём к созданию команды.
В пакете handlers создадим файл simple.py. В этом файле мы будем писать простые команды, не требующие логики, такие как /start, /help, /about.
В файле напишем асинхронную функцию start_command, принимающую аргумент message.
В теле функции сразу вызываем нашу функцию register_user из файла api_actions.py, передавая в неё необходимые данные из объекта message.
chat_id мы получаем обратившись к полю id метода chat - message.chat.id.
Остальные переменные получаем из одноимённых полей метода from_user, например, message.from_user.first_name.
После вызова функции отправляем пользователю приветственное сообщение, предварительно создав функцию start_message с текстом в файле views.py.

from aiogram.types import Message
from botlogic import views
from botlogic.utils.api_actions import register_user
async def start_command(message: Message):
register_user(chat_id=message.chat.id,
first_name=message.from_user.first_name,
last_name=message.from_user.last_name,
username=message.from_user.username)
await message.answer(views.start_message())
Регистрация команды.
Откроем файл main.py и зарегистрируем команду, добавив в функцию start_command после регистрации событий запуска/остановки, следующую строку:
from botlogic.handlers import send_file, simple
dp.message.register(simple.start_command, Command(commands='start'))
Теперь протестируем работу.
Запустим Django и перейдём в панель администратора и откроем страницу модели Пользователи бота. Должно быть пусто.
В отдельном окне запустим бота и выполним команду /start.
Если, всё прошло удачно, то обновив страницу в панели администратора, увидите свой профиль.

Комментарии
Оставить комментарийВойдите, чтобы оставить комментарий.
Комментариев пока нет.