0

我正在尝试使用电报的 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 说明,但找不到任何可以使用的东西

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

我错过了一步吗?

4

1 回答 1

0

由于电报中的键盘是一个字符串数组首先您应该创建一个“按钮行”(第一个数组),然后才将其作为一个元素添加到键盘(第二个数组)中。像这样的东西:

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

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

你可以把它放入一个循环中,这样它就会按照你的意愿动态创建。

于 2016-09-28T18:50:58.260 回答