You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的telebot库中实现返回按钮功能

实现返回按钮的代码方案

首先需要创建两套键盘:一套是初始的主菜单键盘(含contact support按钮),另一套是支持对话状态下的键盘(含Back按钮),再添加对应的消息处理器处理返回逻辑、重置用户状态。

完整代码示例

import telebot
from telebot import types
from telebot.handler_backends import State, StatesGroup

# 定义状态类
class Support(StatesGroup):
    text = State()

# 初始化机器人(替换为你的机器人Token)
bot = telebot.TeleBot("YOUR_BOT_TOKEN")

# 主菜单键盘:包含contact support按钮
contact_sup_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
contact_sup_button = types.KeyboardButton('contact support')
contact_sup_markup.add(contact_sup_button)

# 支持对话状态键盘:包含Back按钮
support_back_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
back_button = types.KeyboardButton('Back')
support_back_markup.add(back_button)

# 处理contact support按钮点击
@bot.message_handler(func=lambda m: m.text == 'contact support')      
def contact_support(message):  
    bot.send_message(
        chat_id=message.chat.id, 
        text='<b>You can now text the support admin bot</b>', 
        parse_mode="HTML",
        reply_markup=support_back_markup  # 发送消息时附带返回按钮键盘
    )
    bot.set_state(
        user_id=message.from_user.id, 
        state=Support.text, 
        chat_id=message.chat.id
    )

# 处理Back按钮点击(仅在Support.text状态下触发)
@bot.message_handler(func=lambda m: m.text == 'Back', state=Support.text)
def go_back_from_support(message):
    # 重置用户当前状态
    bot.delete_state(message.from_user.id, message.chat.id)
    # 切换回主菜单键盘并提示
    bot.send_message(
        chat_id=message.chat.id,
        text='Returned to main menu.',
        reply_markup=contact_sup_markup
    )

# 启动机器人
bot.infinity_polling()

关键改动说明

  • 新增support_back_markup键盘,专门用于支持对话场景,仅保留Back按钮。
  • 在进入支持对话的函数中,通过reply_markup参数将带返回按钮的键盘发送给用户。
  • 新增针对Back按钮的消息处理器,限定仅在Support.text状态下触发,处理器内会删除用户当前状态,并切换回初始主菜单键盘。

内容的提问来源于stack exchange,提问作者Unknown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:13:20