From c96e19a820fb1b6fac9ea84f789dca11d7a6dd46 Mon Sep 17 00:00:00 2001 From: zevaryx Date: Tue, 18 Oct 2022 01:09:51 +0000 Subject: [PATCH] Hotfixes --- jarvis/client/events/message.py | 36 +++++++++++++++++++++++++++++++++ jarvis/cogs/botutil.py | 2 +- jarvis/cogs/ltx.py | 17 +++++++++------- 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/jarvis/client/events/message.py b/jarvis/client/events/message.py index f3a760a..e381a32 100644 --- a/jarvis/client/events/message.py +++ b/jarvis/client/events/message.py @@ -7,6 +7,7 @@ from jarvis_core.db import q from jarvis_core.db.models import ( Autopurge, Autoreact, + Filter, Mute, Phishlist, Roleping, @@ -107,6 +108,39 @@ class MessageEventMixin: except Exception: self.logger.warn("Failed to send warning embed") + async def filters(self, message: Message) -> None: + """Handle filter evennts.""" + filters = await Filter.find(q(guild=message.guild.id)).to_list(None) + for item in filters: + for f in item.filters: + if re.search(f, message.content, re.IGNORECASE): + expires_at = datetime.now(tz=timezone.utc) + timedelta(hours=24) + await Warning( + active=True, + admin=self.user.id, + duration=24, + expires_at=expires_at, + guild=message.guild.id, + reason="Sent a message with a filtered word", + user=message.author.id, + ).commit() + tracker = warnings_tracker.labels( + guild_id=message.guild.id, guild_name=message.guild.name + ) + tracker.inc() + embed = warning_embed(message.author, "Sent a message with a filtered word", self.user) + try: + await message.reply(embeds=embed) + except Exception: + self.logger.warn("Failed to send warning embed") + + try: + await message.delete() + except Exception: + self.logger.debug("Message deleted before action taken") + return + + async def massmention(self, message: Message) -> None: """Handle massmention events.""" massmention = await Setting.find_one( @@ -385,6 +419,7 @@ class MessageEventMixin: await self.roleping(message) await self.autopurge(message) await self.checks(message) + await self.filters(message) if not (phish := await self.phishing(message)): malicious = await self.malicious_url(message) if phish or malicious: @@ -440,6 +475,7 @@ class MessageEventMixin: await self.checks(after) await self.roleping(after) await self.checks(after) + await self.filters(after) if not (phish := await self.phishing(after)): malicious = await self.malicious_url(after) if phish or malicious: diff --git a/jarvis/cogs/botutil.py b/jarvis/cogs/botutil.py index 0a0489c..9ad6194 100644 --- a/jarvis/cogs/botutil.py +++ b/jarvis/cogs/botutil.py @@ -30,7 +30,7 @@ class BotutilCog(Extension): return ctx.author.id == self.bot.owner.id @prefixed_command(name="echo") - async def _echo(self, ctx: PrefixedContext, content: str) -> None: + async def _echo(self, ctx: PrefixedContext, *, content: str) -> None: await ctx.send(content) @prefixed_command(name="stop") diff --git a/jarvis/cogs/ltx.py b/jarvis/cogs/ltx.py index 2c36c74..6a26d2d 100644 --- a/jarvis/cogs/ltx.py +++ b/jarvis/cogs/ltx.py @@ -60,20 +60,23 @@ class EventCog(Extension): await ctx.send("That user isn't going", ephemeral=True) return - fields = [] + travel_method = event.travel_method.capitalize() if event.travel_method else "N/A" + fields = [EmbedField(name="Travel Method", value=travel_method)] if event.travel_method == "flying": before_flight = "N/A" if event.before_flight: dts = int(event.before_departure_time.timestamp()) ats = int(event.before_arrival_time.timestamp()) - before_flight = f"šŸ›« {event.before_flight} šŸ›¬\n -> " + path, number = event.before_flight.split("|") + before_flight = f"{number}\n\nšŸ›« {path} šŸ›¬\n -> " after_flight = "N/A" if event.after_flight: dts = int(event.after_departure_time.timestamp()) ats = int(event.after_arrival_time.timestamp()) - after_flight = f"šŸ›« {event.after_flight} šŸ›¬\n -> " + path, number = event.after_flight.split("|") + after_flight = f"{number}\n\nšŸ›« {flight} šŸ›¬\n -> " fields += [ EmbedField(name="Before LTX flight", value=before_flight), @@ -158,7 +161,7 @@ class EventCog(Extension): event.before_arrival_time = arrival event.before_departure_time = departure - event.before_flight = f"{from_airport} -> {to_airport} {flight}" + event.before_flight = f"{from_airport} -> {to_airport} |{flight}" await event.commit() @@ -172,7 +175,7 @@ class EventCog(Extension): embed = build_embed( title="Your Pre-LTX Flight Information", - description=f"šŸ›« {from_airport} -> {to_airport} {flight} šŸ›¬", + description=f"šŸ›« {from_airport} -> {to_airport} šŸ›¬\n\n{flight}", fields=fields, ) embed.set_author(name=ctx.author.display_name, icon_url=ctx.author.display_avatar.url) @@ -249,7 +252,7 @@ class EventCog(Extension): event.after_arrival_time = arrival event.after_departure_time = departure - event.after_flight = f"{from_airport} -> {to_airport} {flight}" + event.after_flight = f"{from_airport} -> {to_airport} |{flight}" await event.commit() @@ -263,7 +266,7 @@ class EventCog(Extension): embed = build_embed( title="Your Post-LTX Flight Information", - description=f"šŸ›« {from_airport} -> {to_airport} {flight} šŸ›¬", + description=f"šŸ›« {from_airport} -> {to_airport}šŸ›¬\n\n{flight}", fields=fields, ) embed.set_author(name=ctx.author.display_name, icon_url=ctx.author.display_avatar.url)