Как заставить выполнять действия inline кнопки в Telegram

PiVAS

Новичок
Пользователь
Фев 18, 2021
9
0
1
Здравствуйте. Помогите разобраться. Есть фрагмент кода.
Python:
import config
import logging
from aiogram import Bot, types, Dispatcher, executor
from sqlighter import SQLighter

# задаем уровень логов
logging.basicConfig(level=logging.INFO)

# инециализация бота
bot = Bot(token=config.TOKEN)
dp = Dispatcher(bot)

# инециализация соединения с БД
db = SQLighter(config.db)


@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
    await message.reply('Привет!!!')


#  ловим команды от user
@dp.message_handler(content_types=['text'])
async def echo_message(message: types.Message):
    if message.text == 'база':
        # берем данные с базы
        dbm = db.get_messages()
        if len(dbm) > 0:  # если что-то есть идем дальше
            for x in dbm:
                #  по очереди отправляем данные с базы и прикручиваем inline кнопку
                inline_btn_delete = types.InlineKeyboardButton('{} удалить'.format(x[1]), callback_data='btn_delete')
                inline_kb = types.InlineKeyboardMarkup().add(inline_btn_delete)
                await message.answer('Бумага: {}'.format(x[1]), reply_markup=inline_kb)
        else:
            await message.answer('Пока-что нет ничего интересного')
    else:
        await message.answer('Простите, я не знаю что с этим делать(((')


# Ловим inline кнопку и выполняем действие
@dp.callback_query_handler(lambda c: c.data == 'btn_delete')
async def process_callback_btn_delete(callback_query: types.CallbackQuery):

    await bot.answer_callback_query(callback_query.id, 'Удалено с базы')


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)  # запуск бота

Пользователь посылает команду "база" . Бот лезит в базу, берет от туда массив данных и в цикле проходя по массиву, отправляет сообщения привязав к нему inline кнопку с функцией удалить. К примеру в базе было 3 позиции. Пользователь получил 3 сообщения к каждому из которых привязана кнопка. Так вот сам вопрос. Как реализовать удаление с базы, скажем 2-го сообщения? Как передать декоратору @dp.callback_query_handler сообщения которому нажали кнопку или позицию в массиве, чтоб потом можно было отправить SQL запрос на удаление нужной строки?
 

Форум IT Специалистов