Как с помощью inline кнопок в telebot(pytelegrambotapi) вызывать обработчик команды?
И в идеале не давать пользователю перейти к определенным действиям, пока он не сделает другие?
@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
# match call.data:
# case 1:
# bot.register_next_step_handler(call.message, register_user)
print(call)
if call.data == 1:
bot.register_next_step_handler(call.message, register_user)
return
bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id)
Ответы (1 шт):
Автор решения: oleksandrigo
→ Ссылка
Конкретизируйте ваш вопрос, ибо понять, что вы хотите, сложно, но вот вам как нужно делать инлайн кнопки и обрабатывать их.
from telebot import TeleBot, types
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
import config
bot = TeleBot(config.BOT_TOKEN)
@bot.message_handler(commands=['start'])
def start(msg: types.Message):
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton("Кнопка 1", callback_data="but_1"))
bot.send_message(chat_id=msg.chat.id, text="Жми кнопку", reply_markup=markup)
@bot.callback_query_handler(func=lambda call: call.data == "but_1")
def but1_pressed(call: types.CallbackQuery):
bot.send_message(chat_id=call.message.chat.id, text="Вы нажали кнопку")
if __name__ == '__main__':
bot.infinity_polling(skip_pending=True)