値に応じて異なるメッセージで応答する電報ボットがあります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
かそれ以上になる可能性があることです。
問題は、新しいユーザーごとにリセットするにはどうすればよいですか?
つまり、たとえば、
1 人のユーザーNext
が最初に単語をボットに送信すると、回答 1 を受け取りますNext
。2 回目に単語を送信すると、回答 2 を受け取ります。
ユーザーが wordNext
を送信した回数をカウントするために、例にある関数を使用しています。ユーザーが 1 人しかいない場合はすべて正常に機能しますが、2 番目のユーザーが最初にcounter
値を持つ必要がある場合0
、前のユーザーが獲得したカウンターの値を取得します。