我有一个 Telegram 机器人,它根据值响应不同的消息funcnex.state
。
函数正在使用此类操作:
class FuncCreator:
def __init__(self, start_state):
self.state = start_state
def __call__(self):
print(self.state)
self.state += 1
funcnex = FuncCreator(0)
应答消息定义如下:
elif ' Next' in text:
if funcnex.state == 0:
b2 = u'\U0001F532'+' Next'
line1 = linecache.getline('stattxt/sc1-1.txt', 6)
line2 = linecache.getline('stattxt/sc1-1.txt', 7)
json_keyboard = json.dumps({keym: [[b2]], 'resize_keyboard': True, 'one_time_keyboard': False})
reply(u'\U000025FC'+line1+'\n'+line2)
funcnex()
elif funcnex.state == 1:
b2 = u'\U000027A1'+' Next'
line1 = linecache.getline('stattxt/sc1-1.txt', 12)
line2 = linecache.getline('stattxt/sc1-1.txt', 13)
json_keyboard = json.dumps({keym: [[b2]], 'resize_keyboard': True, 'one_time_keyboard': False})
reply(u'\U0001F532'+line1+'\n'+line2)
funcnex()
问题是,如果有几个用户与机器人交互, funcnex.state
那么新用户的值可能已经1
或更高,如果某个用户之前与机器人交互过。
问题是 - 我如何为每个新用户重置它?
这意味着,例如,
如果一个用户Next
第一次向机器人发送单词,他们会收到答案 1。当他Next
第二次发送单词时,他会收到答案 2,以此类推。
为了计算用户发送单词的次数Next
,我使用了示例中的函数。如果只有一个用户,一切正常,但对于第二个用户来说,什么时候counter
应该有0
开始的价值,现在他得到了前一个用户获得的计数器的值。