botserver: Make handle_bot logic more concise.
This commit is contained in:
		
							parent
							
								
									e6ef34a964
								
							
						
					
					
						commit
						3859bef05f
					
				
					 1 changed files with 19 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue