Add StateHandler to contrib_bots/run.py.
This allows bots to be stateful. It doesn't handle persistence after the bot shuts down, but it does store state between invocations of handle_message.
This commit is contained in:
parent
2ed9f15ff7
commit
0dab69b76f
|
@ -37,7 +37,7 @@ class FollowupHandler(object):
|
||||||
|
|
||||||
return is_follow_up
|
return is_follow_up
|
||||||
|
|
||||||
def handle_message(self, message, client):
|
def handle_message(self, message, client, state_handler):
|
||||||
original_content = message['content']
|
original_content = message['content']
|
||||||
original_sender = message['sender_email']
|
original_sender = message['sender_email']
|
||||||
new_content = original_content.replace('@followup',
|
new_content = original_content.replace('@followup',
|
||||||
|
|
|
@ -23,7 +23,7 @@ class HelpHandler(object):
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def handle_message(self, message, client):
|
def handle_message(self, message, client, state_handler):
|
||||||
help_content = '''
|
help_content = '''
|
||||||
Info on Zulip can be found here:
|
Info on Zulip can be found here:
|
||||||
https://github.com/zulip/zulip
|
https://github.com/zulip/zulip
|
||||||
|
|
|
@ -42,6 +42,18 @@ def run_message_handler_for_bot(lib_module, quiet, config_file):
|
||||||
|
|
||||||
message_handler = lib_module.handler_class()
|
message_handler = lib_module.handler_class()
|
||||||
|
|
||||||
|
class StateHandler(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.state = None
|
||||||
|
|
||||||
|
def set_state(self, state):
|
||||||
|
self.state = state
|
||||||
|
|
||||||
|
def get_state(self):
|
||||||
|
return self.state
|
||||||
|
|
||||||
|
state_handler = StateHandler()
|
||||||
|
|
||||||
if not quiet:
|
if not quiet:
|
||||||
print(message_handler.usage())
|
print(message_handler.usage())
|
||||||
|
|
||||||
|
@ -50,7 +62,9 @@ def run_message_handler_for_bot(lib_module, quiet, config_file):
|
||||||
if message_handler.triage_message(message=message):
|
if message_handler.triage_message(message=message):
|
||||||
message_handler.handle_message(
|
message_handler.handle_message(
|
||||||
message=message,
|
message=message,
|
||||||
client=restricted_client)
|
client=restricted_client,
|
||||||
|
state_handler=state_handler
|
||||||
|
)
|
||||||
|
|
||||||
logging.info('starting message handling...')
|
logging.info('starting message handling...')
|
||||||
client.call_on_each_message(handle_message)
|
client.call_on_each_message(handle_message)
|
||||||
|
|
Loading…
Reference in a new issue