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 шт):

Автор решения: biflé

В кнопку надо ставить id заказа - скажем, создаем кнопку - btn_{id}_0, далее в обработчике вытягиваем id и действие - data=call.data.split('_') (data[1]-наш id, data[2]-наше действие). Далее в бд изменяем статус у заказа с совпадающим id. Чтобы ответить подробнее мне понадобится код базы данных, но в целом, я думаю, понятно)

→ Ссылка