-1

値に応じて異なるメッセージで応答する電報ボットがあります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、前のユーザーが獲得したカウンターの値を取得します。

4

1 に答える 1