From c6809070e75b86244c02edde3c39df8ebcabac20 Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 14 Feb 2020 21:59:24 +0000 Subject: [PATCH] Filter words found in `chat_filter_words` server crumbs --- houdini/handlers/play/message.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/houdini/handlers/play/message.py b/houdini/handlers/play/message.py index 1b7906a..8e7f737 100644 --- a/houdini/handlers/play/message.py +++ b/houdini/handlers/play/message.py @@ -1,5 +1,7 @@ from houdini import handlers from houdini.handlers import XTPacket +from houdini.handlers.play.moderation import moderator_ban + from houdini.commands import invoke_command_string, has_command_prefix from houdini.data.moderator import ChatFilterRuleCollection @@ -23,15 +25,16 @@ async def handle_send_message(p, penguin_id: int, message: str): await penguin.send_xt("mm", message, penguin_id) return - tokens = message.lower() - for word, consequence in p.server.chat_filter_words.items(): - if word in tokens: - if consequence.ban: - return - elif consequence.warn: - return - elif consequence.filter: - return + tokens = message.lower().split() + + word, consequence = next(((w, c) for w, c in p.server.chat_filter_words.items() if w in tokens)) + + if consequence.ban: + return await moderator_ban(p, p.id, comment='Inappropriate language', message=message) + elif consequence.warn: + return + elif consequence.filter: + return if has_command_prefix(p.server.config.command_prefix, message): await invoke_command_string(p.server.commands, p, message)