Change massmention behaviour to align with other events

This commit is contained in:
Zeva Rose 2023-01-01 17:47:31 -07:00
parent db640578df
commit 4e906ca051
2 changed files with 16 additions and 29 deletions

View file

@ -78,14 +78,10 @@ class MessageEventMixin:
guild_invites = [x.code for x in await message.guild.fetch_invites()]
if message.guild.vanity_url_code:
guild_invites.append(message.guild.vanity_url_code)
allowed = guild_invites + [
"dbrand",
"VtgZntXcnZ",
"gPfYGbvTCE",
"interactions",
"NTSHu97tHg"
]
is_mod = message.author.has_permission(Permissions.MANAGE_GUILD) or message.author.has_permission(Permissions.ADMINISTRATOR)
allowed = guild_invites + ["dbrand", "VtgZntXcnZ", "gPfYGbvTCE", "interactions", "NTSHu97tHg"]
is_mod = message.author.has_permission(Permissions.MANAGE_GUILD) or message.author.has_permission(
Permissions.ADMINISTRATOR
)
if (m := match.group(1)) not in allowed and setting.value and not is_mod:
self.logger.debug(f"Removing non-allowed invite `{m}` from {message.guild.id}")
try:
@ -127,9 +123,7 @@ class MessageEventMixin:
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 = 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:
@ -143,7 +137,6 @@ class MessageEventMixin:
self.logger.debug("Message deleted before action taken")
return
async def massmention(self, message: Message) -> None:
"""Handle massmention events."""
massmention = await Setting.find_one(
@ -153,12 +146,17 @@ class MessageEventMixin:
)
)
is_mod = message.author.has_permission(Permissions.MANAGE_GUILD) or message.author.has_permission(
Permissions.ADMINISTRATOR
)
if (
massmention
and massmention.value > 0 # noqa: W503
and len(message._mention_ids + message._mention_roles) # noqa: W503
- (1 if message.author.id in message._mention_ids else 0) # noqa: W503
> massmention.value # noqa: W503
and not is_mod # noqa: W503
):
self.logger.debug(f"Massmention threshold on {message.guild.id}/{message.channel.id}/{message.id}")
expires_at = datetime.now(tz=timezone.utc) + timedelta(hours=24)
@ -237,9 +235,7 @@ class MessageEventMixin:
).commit()
tracker = warnings_tracker.labels(guild_id=message.guild.id, guild_name=message.guild.name)
tracker.inc()
embed = warning_embed(
message.author, "Pinged a blocked role/user with a blocked role", self.user
)
embed = warning_embed(message.author, "Pinged a blocked role/user with a blocked role", self.user)
try:
await message.channel.send(embeds=embed)
except Exception:
@ -290,12 +286,8 @@ class MessageEventMixin:
fields=[EmbedField(name="URL", value=m)],
)
valid_button = Button(
style=ButtonStyles.GREEN, emoji="✔️", custom_id=f"pl|valid|{pl.id}"
)
invalid_button = Button(
style=ButtonStyles.RED, emoji="✖️", custom_id=f"pl|invalid|{pl.id}"
)
valid_button = Button(style=ButtonStyles.GREEN, emoji="✔️", custom_id=f"pl|valid|{pl.id}")
invalid_button = Button(style=ButtonStyles.RED, emoji="✖️", custom_id=f"pl|invalid|{pl.id}")
channel = await self.fetch_channel(1026918337554423868)
@ -365,12 +357,8 @@ class MessageEventMixin:
fields=[EmbedField(name="URL", value=m)],
)
valid_button = Button(
style=ButtonStyles.GREEN, emoji="✔️", custom_id=f"pl|valid|{pl.id}"
)
invalid_button = Button(
style=ButtonStyles.RED, emoji="✖️", custom_id=f"pl|invalid|{pl.id}"
)
valid_button = Button(style=ButtonStyles.GREEN, emoji="✔️", custom_id=f"pl|valid|{pl.id}")
invalid_button = Button(style=ButtonStyles.RED, emoji="✖️", custom_id=f"pl|invalid|{pl.id}")
channel = await self.fetch_channel(1026918337554423868)
@ -473,7 +461,6 @@ class MessageEventMixin:
f"Failed to process edit {before.guild.id}/{before.channel.id}/{before.id}: {e}"
)
if not isinstance(after.channel, DMChannel) and not after.author.bot:
await self.massmention(after)
await self.roleping(after)
await self.checks(after)
await self.roleping(after)

View file

@ -30,4 +30,4 @@ class TaskMixin:
if domain in self.phishing_domains:
sub -= 1
self.phishing_domains.remove(domain)
self.logger.info(f"{add} additions, {sub} removals")
self.logger.info(f"[antiphish] {add} additions, {sub} removals")