![](/img/trans.png)
[英]How to trigger a conversation handler with the bot reply? [Telegram Bot] [Python] [python-telegram-bot]
[英]How to append in python for telegram bot
我正在用类似计算器的东西做电报机器人,我试图附加所有输入的值,以便可以将值保存在变量中。
numpad = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text='1', callback_data= '1'),
InlineKeyboardButton(text='2', callback_data= '2'),
InlineKeyboardButton(text='3', callback_data= '3')],
[InlineKeyboardButton(text='4', callback_data= '4'),
InlineKeyboardButton(text='5', callback_data= '5'),
InlineKeyboardButton(text='6', callback_data= '6')],
[InlineKeyboardButton(text='7', callback_data= '7'),
InlineKeyboardButton(text='8', callback_data= '8'),
InlineKeyboardButton(text='9', callback_data='9')],
[InlineKeyboardButton(text='0', callback_data='0'),
InlineKeyboardButton(text='.', callback_data='.')],
[InlineKeyboardButton(text='ENTER', callback_data='done')],
])
bot.sendMessage(from_id, 'How much u wanna change bro', reply_markup=numpad)
if query_data in ['1','2','3','4','5','6','7','8','9','0']:
print('hi')
amt= []
for query_data in amt:
amt.append(query_data)
z = list[amt]
if query_data == 'done':
bot.sendMessage(from_id, "is this the amount you want to change{}?".format(z))
print (z)
这里:
for query_data in amt:
amt.append(query_data)
z = list[amt]
在第1行中,您的意思是“ amt”,是“ numpad”吗? 因为“均值”是一个空列表,并且您想在“ for”之后填写。 所以也许正确的代码是:
for query_data in numpad:
amt.append(query_data)
z = list[amt]
我相信问题出在代码的这一部分:
amt= []
for query_data in amt:
amt.append(query_data)
z = list[amt]
我不太确定python语法1 ,但这似乎为for循环的范围创建了一个新变量query_data
。
这意味着您需要对amt
每个元素进行循环。 但是amt
为空,因此您根本不需要执行循环。
我不确定您的循环打算做什么,但是不只是使用在所有输入的时间内都存在的变量(最简单的例子:全局变量)更适合您的需求吗? 如果您有一个全局amt
,则可以将该代码块替换为
amt.append(query_data)
z = list[amt]
但是请注意,如果同时有多个用户,则全局变量将引起麻烦。
[1]请注意,python只是替换了您的amt
变量。 这是一个例子:
>>> alpha = []
>>> beta = [1,2,3]
>>> for alpha in beta:
... print(1)
...
1
1
1
>>> alpha
3
因此,即使我的alpha
是一个列表,它也变成了值3
的整数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.