This commit is contained in:
Zeva Rose 2022-10-18 01:09:51 +00:00
parent e179e640a3
commit c96e19a820
3 changed files with 47 additions and 8 deletions

View file

@ -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:

View file

@ -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")

View file

@ -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<t:{dts}:f> -> <t:{ats}:f>"
path, number = event.before_flight.split("|")
before_flight = f"{number}\n\n🛫 {path} 🛬\n<t:{dts}:f> -> <t:{ats}:f>"
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<t:{dts}:f> -> <t:{ats}:f>"
path, number = event.after_flight.split("|")
after_flight = f"{number}\n\n🛫 {flight} 🛬\n<t:{dts}:f> -> <t:{ats}:f>"
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)