Телеграм-бот не реагирует на команду
Телеграм-бот по какой-то причине не реагирует на одну из команд.
В коде есть 2 хендлера, хватающих эту команду: первый её пропускает и выходит из функции (так и должно быть), а второй, вроде как, ловит, но позже ничего не происходит. Код функции не запускается.
При чём, хендлер для отлова "белеберды" не срабатывает, соответственно, команда всё-же отлавливается, но я не понимаю, почему ничего не происходит.
Код неисправного(?) хендлера (вместе с функцией регистрации):
async def mark_all_tasks(message: types.Message):
current_todo = await get_chosen_list(message.from_user.id)
tagged_tasks = await db_executor("""SELECT * FROM user%s WHERE is_done = false
AND todo_name = %s;""", message.from_user.id, current_todo)
if not tagged_tasks:
await bot.send_message(message.from_user.id, 'Упс, кажется, все задания уже выполненны.')
return
await db_executor("""UPDATE user%s SET is_done = true WHERE todo_name = %s;""", message.from_user.id, current_todo)
await bot.send_message(message.from_user.id, 'Все задания отмечены как выполненные!')
await bot.send_animation(message.from_user.id,
'CgACAgIAAxkBAAIL4GLzepgSQEDZNuVMiFAQNfIVtineAALODwACn89pStVBA7CQ2fsTKQQ')
await bot.send_message(message.from_user.id, 'Теперь ваш список выглядит так: ')
await bot.send_message(message.from_user.id, await build_todo(message.from_user.id))
def register_taskmarking_handlers(dp: Dispatcher):
dp.register_message_handler(mark_task, state=GeneralFSM.marktask)
dp.register_message_handler(mark_all_tasks, commands=['mark_all_tasks'])
Код хендлера, который отлавливает команду (работа кода спускается сразу к последнему else):
async def invoke_fsm(message: types.Message):
is_chosen = await get_chosen_list(message.from_user.id)
if not is_chosen:
await bot.send_message(message.from_user.id, 'Похоже, вы не выбрали ни одним из доступных TODO-листов. Сделайте это и повторите попытку( /chooselist)')
return
elif message.text == '/addtask':
if not await taskcount_is_valid(message.from_user.id):
await bot.send_message(message.from_user.id, f'Похоже, количество заданий в списке "{is_chosen}"\
достигло максимума (50). Удалите часть заданий и повторите попытку')
return
await AddTaskFSM.addtask.set()
await bot.send_message(message.from_user.id, 'Введите текст задания:')
elif message.text == '/deletetask':
await GeneralFSM.deletetask.set()
await bot.send_message(message.from_user.id, 'Введите номер задания, которое хотите удалить:')
elif message.text == '/marktask':
await GeneralFSM.marktask.set()
await bot.send_message(message.from_user.id,
'Введите номер задания, которое вы хотите пометить как выполненное:')
elif message.text == '/edittask':
await EditTaskFSM.edittask_num.set()
await bot.send_message(message.from_user.id, 'Введите номер задания, которое хотите отредактировать:')
else:
return
def register_fsm_handlers(dp: Dispatcher):
dp.register_message_handler(cancel_handler, state='*', commands=['cancel'])
dp.register_message_handler(invoke_fsm, commands=['addtask', 'marktask', 'mark_all_tasks',
'edittask', 'deletetask', 'delete_completed_tasks',
'showlist', 'delete_completed_tasks', 'clearlist'], state=None)
dp.register_message_handler(invoke_lm_fsm, commands=['createlist', 'deletelist', 'chooselist'], state=None)
Телеграм:
