botserver: Make handle_bot logic more concise.
This commit is contained in:
parent
e6ef34a964
commit
3859bef05f
|
@ -104,33 +104,32 @@ bots_config = {} # type: Dict[str, Dict[str, str]]
|
|||
@app.route('/', methods=['POST'])
|
||||
def handle_bot() -> Union[str, BadRequest]:
|
||||
event = request.get_json(force=True)
|
||||
bot = None
|
||||
for bot_name, config in bots_config.items():
|
||||
if config['email'] == event['bot_email']:
|
||||
bot = bot_name
|
||||
if bot is None:
|
||||
break
|
||||
else:
|
||||
return BadRequest("Cannot find a bot with email {} in the bot server "
|
||||
"configuration file. Do the emails in your flaskbotrc "
|
||||
"match the bot emails on the server?".format(event['bot_email']))
|
||||
else:
|
||||
lib_module = app.config.get("BOTS_LIB_MODULES", {})[bot]
|
||||
bot_handler = app.config.get("BOT_HANDLERS", {})[bot]
|
||||
message_handler = app.config.get("MESSAGE_HANDLERS", {})[bot]
|
||||
is_mentioned = event['trigger'] == "mention"
|
||||
is_private_message = event['trigger'] == "private_message"
|
||||
message = event["message"]
|
||||
message['full_content'] = message['content']
|
||||
# Strip at-mention botname from the message
|
||||
if is_mentioned:
|
||||
# message['content'] will be None when the bot's @-mention is not at the beginning.
|
||||
# In that case, the message shall not be handled.
|
||||
message['content'] = lib.extract_query_without_mention(message=message, client=bot_handler)
|
||||
if message['content'] is None:
|
||||
return json.dumps("")
|
||||
lib_module = app.config.get("BOTS_LIB_MODULES", {})[bot]
|
||||
bot_handler = app.config.get("BOT_HANDLERS", {})[bot]
|
||||
message_handler = app.config.get("MESSAGE_HANDLERS", {})[bot]
|
||||
is_mentioned = event['trigger'] == "mention"
|
||||
is_private_message = event['trigger'] == "private_message"
|
||||
message = event["message"]
|
||||
message['full_content'] = message['content']
|
||||
# Strip at-mention botname from the message
|
||||
if is_mentioned:
|
||||
# message['content'] will be None when the bot's @-mention is not at the beginning.
|
||||
# In that case, the message shall not be handled.
|
||||
message['content'] = lib.extract_query_without_mention(message=message, client=bot_handler)
|
||||
if message['content'] is None:
|
||||
return json.dumps("")
|
||||
|
||||
if is_private_message or is_mentioned:
|
||||
message_handler.handle_message(message=message, bot_handler=bot_handler)
|
||||
return json.dumps("")
|
||||
if is_private_message or is_mentioned:
|
||||
message_handler.handle_message(message=message, bot_handler=bot_handler)
|
||||
return json.dumps("")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
|
|
Loading…
Reference in a new issue