Не работают инлайн кнопки бота в запланированном сообщении
пишу телеграм бота на aiogram:
async def some_func():
err = InlineKeyboardMarkup(row_width=2)
btn_1 = InlineKeyboardButton(text='open_1', callback_data='number_1')
btn_2 = InlineKeyboardButton(text='open_2', callback_data='number_2')
err.add(btn_1, btn_2)
await bot.send_message(chat_id=CHAT_ID, text='choose:', reply_markup=err)
есть хэндлер сообщений:
@dp.callback_query_handler(text_startswith=['number_'])
async def number(callback_query: types.CallbackQuery)
variant = callback_query.data.split("_")
if variant[1] == 1:
await bot.send_message(chat_id=CHAT_ID, text='number_1'
else:
await bot.send_message(chat_id=CHAT_ID, text='number_2'
функция запускается по расписанию:
async def scheduler():
aioschedule.every().day.at("20:39").do(some_func)
while True:
await aioschedule.run_pending()
await asyncio.sleep(1)
async def on_startup(_):
await asyncio.create_task(scheduler())
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True, on_startup=on_startup)
почему не происходит перехват callback_data? что не так я делаю?
Ответы (1 шт):
Автор решения: Andrey
→ Ссылка
Попробуйте так:
@dp.callback_query_handler(text_startswith=['number_'])
async def number(callback_query: types.CallbackQuery):
variant = callback_query.data.split("_")
if variant[1] == '1':
await bot.send_message(chat_id=CHAT_ID, text='number_1')
else:
await bot.send_message(chat_id=CHAT_ID, text='number_2')
Исправления:
- Добавлена закрывающая скобка после аргумента text в вызове bot.send_message.
- Добавлены кавычки вокруг значения '1' в условии if variant[1] == '1':, чтобы сравнение выполнялось с правильным типом данных.
Просто будьте внимательнее и проверяйте код)