Ошибка Task exception was never retrieved future ... aiogram.utils.exceptions.ButtonDataInvalid: Button_data_invalid
Решил попробовать сделать бота для табачки другу, поначалу все было более чем хорошо, задеплоил бота, но через полмесяца друг жалуется что не удаляются некоторые товары. Ошибка для меня супер непонятна, так как например: PUFF MI 3500 puffs 5% 950₽ этот товар не удаляется,Elf bar 1500 puffs 5% 700₽ с этим кнопка работает, но уже с Fof plus 800 puffs 3% 500₽ кнопка опять не работает и выдает ошибку:
Task exception was never retrieved
future: <Task finished name='Task-16' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=ButtonDataInvalid('Button_data_invalid')>
Traceback (most recent call last):
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 415, in
_process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in
process_updates
return await asyncio.gather(*tasks)
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in
process_update
return await self.message_handlers.notify(update.message)
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
response = await handler_obj.handler(*args, **partial_data)
File "c:\Users\данон\Desktop\bot2.0\bo.py", line 127, in delet
await message.answer(text='Что удалить?',reply_markup=inkb)
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\types\message.py", line 388, in answer
return await self.bot.send_message(
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\bot\bot.py", line 334, in send_message
result = await self.request(api.Methods.SEND_MESSAGE, payload)
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\bot\base.py", line 231, in request
return await api.make_request(await self.get_session(), self.server, self.__token, method, data, files,
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\bot\api.py", line 140, in make_request
return check_result(method, response.content_type, response.status, await response.text())
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\bot\api.py", line 115, in check_result
exceptions.BadRequest.detect(description)
File "C:\Users\данон\AppData\Local\Programs\Python\Python310\lib\site-packages\aiogram\utils\exceptions.py", line 140, in detect
raise err(cls.text or description)
aiogram.utils.exceptions.ButtonDataInvalid: Button_data_invalid
Искал по строкам кода и не нашел никаких проблемных моментов. Может проблема как-то связана с синтаксисом sqlite, так как у меня sqlite жаловался что нельзя создать таблицу в которой есть пробелы и запретные символы, но если я даю имя таблице через два типа кавычек '"..."' то желаемое случается(буду благодарен если подскажите как решить эту проблему более грамотно) мой код:
@dp.message_handler(commands='Удалить\\')
async def delete(message: types.Message):
if str(message.from_user.id)==idadmin:
await FSMDelete.clas.set()
await klava(message)
else: await start(message)
@dp.message_handler(state=FSMDelete.clas)
async def delete(message: types.Message, state=FSMContext):
kb=ReplyKeyboardMarkup(resize_keyboard=True,row_width=2,one_time_keyboard=True)
async with state.proxy() as data:
data['clas'] = message.text
try:
for k in cur.execute('SELECT * FROM {}'.format(str(data['clas']))).fetchall():
kb.insert(k[0])
kb.add(back)
except:
kb.add(back)
await FSMDelete.next()
await message.answer('Выберите позицию',reply_markup=kb)
@dp.message_handler(state=FSMDelete.name)
async def delet(message : types.Message,state=FSMContext):
async with state.proxy() as data:
data['name'] = message.text
inkb=InlineKeyboardMarkup(row_width=2)
f=(str((data)['name']))
for k in cur.execute('SELECT * FROM {}'.format(f'"{f}"')).fetchall():
inkb.insert(InlineKeyboardButton(f'Удалить {k[0]}',callback_data=f'del "{f}"^+^+^{k[0]}'))
inkb.insert(InlineKeyboardButton(f'Удалить {(data["name"])}',callback_data=f'dele "{f}"^+^+^{data["clas"]}'))
await state.finish()
await message.answer(text='Что удалить?',reply_markup=inkb)
@dp.callback_query_handler(Text(startswith='del '))
async def delpos(callback: types.CallbackQuery):
await end(str(callback.data)[4:].split('^+^+^')[0],str(callback.data)[4:].split('^+^+^')[1])
a=str((callback.data)[4:]).replace('^+^+^',' ').replace('"','')
await callback.answer(text=f'{a} удален')
@dp.callback_query_handler(Text(startswith='dele '))
async def delpos(callback: types.CallbackQuery):
a=(callback.data)[5:].split("^+^+^")[0].replace('"','')
try:
await ende((str(callback.data)[5:].split('^+^+^')[0]),str(callback.data)[5:].split('^+^+^')[1])
await callback.answer(text=f'{a} удален')
except:await callback.answer(text=f'{a} уже удален')
как работает код должным образом, при выборе определенных других товаров сообщение с инлайн кнопками не присылается и выскакивает вышеописанная ошибка
