aiogram как использовать кнопки под конкретным сообщением
Проблема такая: Я делаю бота для обработки заказов. В админ панели можно посмотреть все заказы, которые берутся из бд и пронумерованные по порядку выводятся. У каждого заказа есть статус(типо "в обработке", "Принят", "Отказано"). Как будет правильно сделать управление этими статусами? Например как сделать так, чтоб под каждым из сообщений были кнопки и нажимая на эти кнопки, будет меняться статус именно того заказа, под которым эти кнопки и расположены?
@dp.callback_query_handler(text_startswith='btn')
async def process_callback_kb1btn1(callback_query: types.CallbackQuery):
code = callback_query.data[-1]
print(code)
if code.isdigit():
code = int(code)
if code == 0:
await bot.send_message(callback_query.from_user.id, "?Введите желаемый срок выполнения зказа", reply_markup=kb.greet_kb1)
await Form.date.set()
if code == 1:
try:
conn = sqlite3.connect('accounts.db')
cur = conn.cursor()
cur.execute(f'SELECT "order", "status", "comments" FROM users WHERE user_id = "{callback_query.from_user.id}"')
result_bd = cur.fetchall()
if result_bd == []:
await bot.send_message(callback_query.from_user.id, "❌Ваш список заказов пуст")
else:
for i in range(len(result_bd)):
print(result_bd)
new = ''.join(result_bd[i][0])
new_2 = new.split(', ')
stat = ' ' + result_bd[i][1]
comm = result_bd[i][2]
await bot.send_message(callback_query.from_user.id, '№{} {}'.format(i + 1, '\n\n'.join(new_2) + '\n\n' + '♻️Статус: ' + stat + '\n\n' + '?Комментарии: ' + comm))
Ответы (1 шт):
В кнопку надо ставить id заказа - скажем, создаем кнопку - btn_{id}_0, далее в обработчике вытягиваем id и действие - data=call.data.split('_') (data[1]-наш id, data[2]-наше действие). Далее в бд изменяем статус у заказа с совпадающим id. Чтобы ответить подробнее мне понадобится код базы данных, но в целом, я думаю, понятно)
