如何使用电报机器人 api 以编程方式创建带有 python 的垂直自定义键盘布局?

How do I programmatically create a vertical custom keyboard layout with python using the telegram bot api?

我正在尝试使用 telepot api 电报包装器创建基于卡片的游戏机器人,但我不知道如何让它使用垂直布局而不是水平布局

示例代码:

keyboard = []
for card in data['current_games'][userGame]['players'][messageLocationID]['cards']:
    button = [KeyboardButton(text=card)]
    keyboard += button

然后我用sendMessage()方法配合ReplyKeyboardMarkup()方法,但是创建了一排按钮又高又细,影响了文字的显示

有没有我遗漏的步骤?我能够使用以下方法创建一个正方形的键:

keyboard = [[KeyboardButton(text='0'), KeyboardButton(text='1'), KeyboardButton(text='2'), KeyboardButton(text='3')],
            [KeyboardButton(text='4'), KeyboardButton(text='5'), KeyboardButton(text='6'), KeyboardButton(text='7')],
            [KeyboardButton(text='8'), KeyboardButton(text='9'), KeyboardButton(text='10'), KeyboardButton(text='11')],
            [KeyboardButton(text='12'), KeyboardButton(text='13'), KeyboardButton(text='14'), KeyboardButton(text='15')]]

我只使用第二种方法创建了一个键盘,因为我能够手动创建它而不是以编程方式创建它,但是我无法在不按顺序访问每张卡片的情况下处理卡片列表,因为它是一个动态列表每回合都会改变。

我查看了 api 注释,但找不到任何我可以使用的东西

根据第二个键盘的结果,我假设我可以通过将每张卡片设为一个数组来创建垂直行,这样它就可以嵌套在原始数组中,但事实证明并非如此我的经历

我是不是漏了一步?

因为电报中的键盘是一个字符串数组首先你应该创建一个"row of buttons"(首先数组)和仅在那之后将它添加到键盘(第二个数组)作为一个元素。像这样:

keyboard = []
row1 = ["card1", "card2", "card3"]
keyboard.append(row1)
row2 = ["card4", "card5", "card6"]
keyboard.append(row2)
print (keyboard)

>>>
[['card1', 'card2', 'card3'], ['card4', 'card5', 'card6']]

你可以把它放入一个循环中,这样它就会根据你的需要动态创建。