diff options
| author | 2022-11-14 12:33:21 +0000 | |
|---|---|---|
| committer | 2022-11-25 22:43:46 +0000 | |
| commit | f1d433e626701a56b99e07a68cebbe35bdb168c8 (patch) | |
| tree | e51e7dc640089cba3d8f972c2a4532883b5f310f | |
| parent | Use a redis cache to determine if a help session was answered (diff) | |
Add a filter for help chanel post names
It is expected that this code will be delete whent he new fitler cog is added, and we start filtering on thread names genericly.
Diffstat (limited to '')
| -rw-r--r-- | bot/exts/help_channels/_cog.py | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/bot/exts/help_channels/_cog.py b/bot/exts/help_channels/_cog.py index 6423f6f2f..c119a44ef 100644 --- a/bot/exts/help_channels/_cog.py +++ b/bot/exts/help_channels/_cog.py @@ -1,5 +1,7 @@ """Contains the Cog that receives discord.py events and defers most actions to other files in the module.""" +import typing as t + import discord from discord.ext import commands @@ -10,6 +12,9 @@ from bot.log import get_logger log = get_logger(__name__) +if t.TYPE_CHECKING: + from bot.exts.filters.filtering import Filtering + class HelpForum(commands.Cog): """ @@ -41,6 +46,18 @@ class HelpForum(commands.Cog): self.bot.stats.incr("help.dormant_invoke.staff") return has_role + async def post_with_disallowed_title_check(self, post: discord.Thread) -> None: + """Check if the given post has a bad word, alerting moderators if it does.""" + filter_cog: Filtering | None = self.bot.get_cog("Filtering") + if filter_cog and (match := filter_cog.get_name_match(post.name)): + mod_alerts = self.bot.get_channel(constants.Channels.mod_alerts) + await mod_alerts.send( + f"<@&{constants.Roles.moderators}>\n" + f"<@{post.owner_id}> ({post.owner_id}) opened the thread {post.mention} ({post.id}), " + "which triggered the token filter with its name!\n" + f"**Match:** {match.group()}" + ) + @commands.group(name="help-forum") async def help_forum_group(self, ctx: commands.Context) -> None: """A group of commands that help manage our help forum system.""" @@ -99,8 +116,12 @@ class HelpForum(commands.Cog): @commands.Cog.listener() async def on_thread_create(self, thread: discord.Thread) -> None: """Defer application of new post logic for posts the help forum to the _channel helper.""" - if thread.parent_id == self.help_forum_channel_id: - await _channel.help_thread_opened(thread) + if thread.parent_id != self.help_forum_channel_id: + return + + await _channel.help_thread_opened(thread) + + await self.post_with_disallowed_title_check(thread) @commands.Cog.listener() async def on_thread_update(self, before: discord.Thread, after: discord.Thread) -> None: @@ -109,6 +130,8 @@ class HelpForum(commands.Cog): return if not before.archived and after.archived: await _channel.help_thread_archived(after) + if before.name != after.name: + await self.post_with_disallowed_title_check(after) @commands.Cog.listener() async def on_raw_thread_delete(self, deleted_thread_event: discord.RawThreadDeleteEvent) -> None: |