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