使内置键盘可以回复kerboard

时间:2019-11-18 19:10:14

标签: python telegram telegram-bot

所以我用pyTelegramBotApi做一个电报机器人 我制作了一个答复键盘,该键盘出现在/ start命令之后,事实是,当用户按下按钮时,他们应该会收到一些消息以及带有该消息的嵌入式键盘。而且我不知道如何将嵌入式键盘(kinda)放入回复键盘。

def start_command(message):
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    button1 = types.KeyboardButton(text="Button 1", FUNC1)
    button2 = types.KeyboardButton(text="Button 2", FUNC2)
    button3 = types.KeyboardButton(text="Button 3", FUNC3)

    keyboard.add(button1, button2, button3)
    bot.send_message(
        message.chat.id,
        'Hello!',
        reply_markup=keyboard
  )

FUNC1,FUNC2,FUNC3代表应该使用嵌入式键盘发送文本的东西(功能)

1 个答案:

答案 0 :(得分:0)

不要与“键盘”一词混淆,当您看到一个“经典”键盘粘在聊天底部时,这只是一堆消息模板,没有别的(有两个特殊按钮) ,一个问地理,另一个问电话,但现在还没关系。

那么,当用户按下带有“按钮1”文本的按钮时会发生什么?带有该文本的消息将发送到您的机器人。为了正确处理该文本,请编写一个处理程序来检查message.text的完全匹配。为方便起见,我对您的代码进行了一些更新,并为用户按下带有“按钮1”文本的按钮时的情况编写了一个处理程序。

当用户按下“按钮1”时,您的机器人将通过包含一个内嵌按钮的内嵌键盘向他们发送消息,从而导致stackoverflow.com。

# This is your original function, however, I removed "FUNC 1", "FUNC 2" and "FUNC 3"
# from buttons' properties.
@bot.message_handler(commands=["start"])
def start_command(message):
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    button1 = types.KeyboardButton(text="Button 1")
    button2 = types.KeyboardButton(text="Button 2")
    button3 = types.KeyboardButton(text="Button 3")

    keyboard.add(button1, button2, button3)
    bot.send_message(message.chat.id, 'Hello!', reply_markup=keyboard)

# Here's a simple handler when user presses button with "Button 1" text
@bot.message_handler(content_types=["text"], func=lambda message: message.text == "Button 1")
def func1(message):
    keyboard = types.InlineKeyboardMarkup()
    url_btn = types.InlineKeyboardButton(url="https://stackoverflow.com", text="Go to StackOverflow")
    keyboard.add(url_btn)
    bot.send_message(message.chat.id, "Button 1 handler", reply_markup=keyboard)