Отправка сообщений TG-ботом при нажатии кнопки python
Пишу тг бота, который даёт промокоды на всякие сервисы. Основная проблема заключается в том, что при нажатии на inline button бот не отвечает сообщением. То есть надо, чтобы если пользователь нажмёт на одну из кнопок, то бот ему ответит сообщением. Я ещё совсем зеленый в пайтоне да и в коде, в целом, поэтому буду рад быстрой помощи)
введите сюда код
@bot.message_handler(commands=["start"])
def start(m, res=False):
bot.send_message(m.chat.id, 'Я на связи. Напиши мне что-нибудь )')
# Получение сообщений от юзера
@bot.message_handler(content_types=["text"])
def handle_text(message):
markup = types.InlineKeyboardMarkup(row_width=1)
button1 = types.InlineKeyboardButton(text='button', callback_data='bt1')
button2 = types.InlineKeyboardButton(text='button', callback_data='btn2')
button3 = types.InlineKeyboardButton(text='button', callback_data='btn3')
button4 = types.InlineKeyboardButton(text='button', callback_data='btn4')
markup.add(button1, button2, button3, button4)
if message.text == "Хочу подписку":
bot.send_message(message.from_user.id, reply_markup=markup, text="Вот все доступные подписки на данный момент")
@bot.callback_query_handler(func=lambda callback: callback.data)
def check_callback_data(callback):
if callback.data == "btn1":
bot.send_message(message.chat.id, text='Ваш код...', reply_markup=markup)
bot.polling(none_stop=True, interval=0)`
Ответы (1 шт):
Автор решения: Bellisa
→ Ссылка
Чтобы бот отвечал сообщением на нажатую Вами инлайн-кнопку необходимо создать callback_query_handler, который будет принимать значение callback_data в качестве аргумента:
#создаём инлайн-кнопку
hello_markup = InlineKeyboardMarkup(row_width=1)
btn_1 = InlineKeyboardButton(text='Привет', callback_data='hello')
hello_markup.insert(btn_1)
#реагирует на callback_data, которую мы ввели в инлайн-кнопку выше
@dp.callback_query_handler(text ="hello")
async def hello(callback: types.CallbackQuery):
await bot.send_message(callback.from_user.id, 'И тебе привет!')