Задать вопрос
@sXfTeR

Не работает inline кнопка в телеграм боте?

from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton


TOKEN = ''

bot = Bot(token=TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)


@dp.callback_query_handler(text="<info>")
async def button_1(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        if int(call.data.split("|")[1]):
            await message.answer("Кнопка нажата.")
        else:
        	await message.answer("Попытка нажать исчерпана.")


@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    await message.answer(
        "пробный тест",
        reply_markup=InlineKeyboardMarkup().add(
            InlineKeyboardButton('Кнопка', callback_data='<info>|0')))


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)


Бот работает на команду /start, но при нажатии на inline кнопку бот не отвечает и просто не может прогрузить ответ..
В консоль бот ошибок ни каких не выдаёт, но причину неработоспособности я не знаю. Что делать?
  • Вопрос задан
  • 1039 просмотров
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@twistfire92
Python backend developer
@dp.callback_query_handler(text="<info>")
замени на
@dp.callback_query_handler(lambda call: сall.data.startswith("<info>"))

Я об этом в предыдущем вопросе говорил уже. Советую сначала уделить внимание основам языка, а потом уже сюда лезть. Сейчас видно, что понабрали разного кода с разных источников и не разбираясь как оно работает, не читая документацию, хотите адаптировать этот код под свои нужды.
Ответ написан
@datareset
развиваюсь.
Начнем с того, что у вас указан state в callback'e, зачем он вам?
InlineKeyboardButton('Кнопка', callback_data='<info>|0')))

У вас data = '|0>, а вызываете вы на ''
Я не профи по aiogram, но по-моему дело в этом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы