From 4e6223224838daefb58a3332996d30a6beee7dc2 Mon Sep 17 00:00:00 2001 From: jsl12 Date: Tue, 13 Jul 2021 11:02:06 -0500 Subject: [PATCH] improved joke recognition --- robopage.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/robopage.py b/robopage.py index eb80cf5..966ab99 100644 --- a/robopage.py +++ b/robopage.py @@ -28,29 +28,36 @@ class RoboPage(discord.Client): async def handle_message(self, message): if message.author != self.user: for joke in self.jokes: - if (match := joke.regex.search(message.content)): - print(f'{joke.__class__.__name__} detected:\n{message.content}\n{match.group(0)}') - await joke.respond(message, self, match) + if (scan_res := joke.scan(message)): + print(f'{joke.__class__.__name__} detected:\n{message.content}\n{scan_res}') + await joke.respond(message, self, scan_res) + class Joke: @property def regex(self) -> re.Pattern: raise NotImplementedError - async def respond(self, message: discord.Message, client: discord.Client, match: re.Match): + def scan(self, message: discord.Message): + if (match := self.regex.search(message.content)): + return match + + async def respond(self, message: discord.Message, client: discord.Client, scan_res): raise NotImplementedError + class CumJoke(Joke): @property def regex(self) -> re.Pattern: - return re.compile('|'.join([ + words = [ 'come', 'coming', 'came', 'cum', 'cumming', 'cummed' - ]), re.IGNORECASE) + ] + return re.compile(f"(? re.Pattern: - return re.compile('ass( |\-)(\w)', re.IGNORECASE) + return re.compile('[ \-]ass[ \-](?P\w+)', re.IGNORECASE) async def respond(self, message: discord.Message, client: discord.Client, match: re.Match): res = assify(message.content)