improved joke recognition
This commit is contained in:
25
robopage.py
25
robopage.py
@@ -28,29 +28,36 @@ class RoboPage(discord.Client):
|
|||||||
async def handle_message(self, message):
|
async def handle_message(self, message):
|
||||||
if message.author != self.user:
|
if message.author != self.user:
|
||||||
for joke in self.jokes:
|
for joke in self.jokes:
|
||||||
if (match := joke.regex.search(message.content)):
|
if (scan_res := joke.scan(message)):
|
||||||
print(f'{joke.__class__.__name__} detected:\n{message.content}\n{match.group(0)}')
|
print(f'{joke.__class__.__name__} detected:\n{message.content}\n{scan_res}')
|
||||||
await joke.respond(message, self, match)
|
await joke.respond(message, self, scan_res)
|
||||||
|
|
||||||
|
|
||||||
class Joke:
|
class Joke:
|
||||||
@property
|
@property
|
||||||
def regex(self) -> re.Pattern:
|
def regex(self) -> re.Pattern:
|
||||||
raise NotImplementedError
|
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
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class CumJoke(Joke):
|
class CumJoke(Joke):
|
||||||
@property
|
@property
|
||||||
def regex(self) -> re.Pattern:
|
def regex(self) -> re.Pattern:
|
||||||
return re.compile('|'.join([
|
words = [
|
||||||
'come',
|
'come',
|
||||||
'coming',
|
'coming',
|
||||||
'came',
|
'came',
|
||||||
'cum',
|
'cum',
|
||||||
'cumming',
|
'cumming',
|
||||||
'cummed'
|
'cummed'
|
||||||
]), re.IGNORECASE)
|
]
|
||||||
|
return re.compile(f"(?<!\w)({'|'.join(words)})", re.IGNORECASE)
|
||||||
|
|
||||||
async def respond(self, message: discord.Message, client: discord.Client, match: re.Match):
|
async def respond(self, message: discord.Message, client: discord.Client, match: re.Match):
|
||||||
if not match.group(0).startswith('be'):
|
if not match.group(0).startswith('be'):
|
||||||
@@ -63,14 +70,16 @@ class BlackJoke(Joke):
|
|||||||
return re.compile('black (\w+)', re.IGNORECASE)
|
return re.compile('black (\w+)', re.IGNORECASE)
|
||||||
|
|
||||||
async def respond(self, message: discord.Message, client: discord.Client, match: re.Match):
|
async def respond(self, message: discord.Message, client: discord.Client, match: re.Match):
|
||||||
msg = await message.reply(unblack(message.content))
|
res = unblack(message.content)
|
||||||
|
if res is not None:
|
||||||
|
msg = await message.reply(res)
|
||||||
await msg.add_reaction(discord.utils.get(client.emojis, name='kaylon'))
|
await msg.add_reaction(discord.utils.get(client.emojis, name='kaylon'))
|
||||||
|
|
||||||
|
|
||||||
class AssJoke(Joke):
|
class AssJoke(Joke):
|
||||||
@property
|
@property
|
||||||
def regex(self) -> re.Pattern:
|
def regex(self) -> re.Pattern:
|
||||||
return re.compile('ass( |\-)(\w)', re.IGNORECASE)
|
return re.compile('[ \-]ass[ \-](?P<target>\w+)', re.IGNORECASE)
|
||||||
|
|
||||||
async def respond(self, message: discord.Message, client: discord.Client, match: re.Match):
|
async def respond(self, message: discord.Message, client: discord.Client, match: re.Match):
|
||||||
res = assify(message.content)
|
res = assify(message.content)
|
||||||
|
|||||||
Reference in New Issue
Block a user