如何使用电报机器人 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']]
你可以把它放入一个循环中,这样它就会根据你的需要动态创建。
我正在尝试使用 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']]
你可以把它放入一个循环中,这样它就会根据你的需要动态创建。