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

如何在Telebot的ReplyKeyboardMarkup中设置两列按钮?

Telegram Bot 两列ReplyKeyboardMarkup布局修复方案

要实现两行两列的按钮布局,核心是按行定义按钮组,而非把所有按钮塞进一个一维数组。Telegram的ReplyKeyboardMarkup基于行渲染,错误的数组结构会导致自动换行混乱。

正确实现方式(以Python常用库为例)

1. python-telegram-bot 库(v13+)

from telegram import ReplyKeyboardMarkup

# 每行作为一个子列表,明确两行两列结构
keyboard_layout = [
    ["button", "button 2"],
    ["button 3", "button 4"]
]
# 启用resize_keyboard让键盘自适应屏幕尺寸
reply_markup = ReplyKeyboardMarkup(keyboard_layout, resize_keyboard=True)

# 发送消息时绑定键盘
update.message.reply_text("请选择操作:", reply_markup=reply_markup)

2. pyTelegramBotAPI 库

import telebot

bot = telebot.TeleBot("你的机器人Token")

# 按行组织按钮,控制每行按钮数量
keyboard_layout = [
    ["button", "button 2"],
    ["button 3", "button 4"]
]
reply_markup = telebot.types.ReplyKeyboardMarkup(keyboard_layout, resize_keyboard=True)

@bot.message_handler(commands=['start'])
def send_menu(message):
    bot.reply_to(message, "请选择:", reply_markup=reply_markup)

bot.polling()

关键注意事项

  • 每个子列表对应一行,子列表内元素为该行按钮,可严格控制每行按钮数量
  • 必须添加resize_keyboard=True,避免按钮因屏幕尺寸出现挤压或换行异常
  • 若按钮文本长度差异过大,客户端可能渲染不等宽列,尽量让按钮文本长度保持接近即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:35:19