@David0711
Начинающий разработчик Telegram-ботов

Необходимо сделать кнопку «Заказать» для пользователей Telegram-бота на aiogram 3, как это сделать?

сделал чат бота на aiogram 3 для заказов пиццы или суш(потренироваться просто) категории товара и виды в базе данных, хочу сделать кнопку "заказать" по нажатию на которую в группу для администраторов заведения будут приходить сообщения с содержимым о том что заказал пользователь, как можно это сделать?

Код в handlers:
from aiogram import F, Router
from aiogram.filters import Command, CommandStart
from aiogram.types import Message, CallbackQuery
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.context import FSMContext

import app.keyboards as kb
import app.database.requests as rq

order_group_id = айди группы
class Registration(StatesGroup):
  name = State()
  phone_number = State()

router = Router()

@router.message(CommandStart())
async def cmd_start(message: Message):
  await message.answer(text='Приветствую!', reply_markup=kb.start_msg)
  await rq.set_user(tg_id=message.from_user.id)

@router.message(F.text == 'Зарегестрироваться')
async def reg(message: Message, state: FSMContext):
  await state.set_state(Registration.name)
  await message.answer(text='Введите ваше имя.')

@router.message(Registration.name)
async def reg_name(message: Message, state: FSMContext):
  await state.update_data(name=message.text)
  await state.set_state(Registration.phone_number)
  await message.answer(text='Пришлите ваш контакт.', reply_markup=kb.send_contact)

@router.message(Registration.phone_number)
async def reg_number(message: Message, state: FSMContext):
  await state.update_data(phone_number=message.contact.phone_number)
  data = await state.get_data()
  await message.answer(text=f'Имя: {data["name"]}\nТелефон: {data["phone_number"]}', reply_markup=kb.start_msg)
  await state.clear()

@router.message(F.text == 'Сделать заказ')
async def make_an_order(message: Message):
  await message.answer(text='Выберите категорию товара.', reply_markup=await kb.categories())

@router.callback_query(F.data.startswith('category_'))
async def category(callback: CallbackQuery):
  await callback.answer(text='Вы выбрали категорию')
  await callback.message.edit_text(text='Выберите товар.', reply_markup=await kb.items(callback.data.split('_')[1]))

@router.callback_query(F.data.startswith('item_'))
async def item(callback: CallbackQuery):
  item_data = await rq.get_items(callback.data.split('_')[1])
  await callback.answer(text='Вы выбрали товар')
  await callback.message.answer(text=f'Название: {item_data.name}\nОписание: {item_data.description}\nЦена: {item_data.price} UAH',
                                reply_markup=kb.make_an_order_btn) 

@router.callback_query(F.data == 'to_main')
async def to_main(callback: CallbackQuery):
  await callback.answer(text='Вы вернулись на главную!')
  await callback.message.edit_text(text='Выберите категорию товара.', reply_markup=await kb.categories())
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы