Add filterhit case type to Filter (#4739)

* Add `filterhit` case type to Filter

* Wrong `__init__.py` :|
This commit is contained in:
jack1142 2021-01-23 21:36:53 +01:00 committed by GitHub
parent 69c8781cec
commit ad48ef6efd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 13 deletions

View File

@ -2,5 +2,7 @@ from .filter import Filter
from redbot.core.bot import Red from redbot.core.bot import Red
def setup(bot: Red): async def setup(bot: Red) -> None:
bot.add_cog(Filter(bot)) cog = Filter(bot)
await cog.initialize()
bot.add_cog(cog)

View File

@ -37,7 +37,6 @@ class Filter(commands.Cog):
self.config.register_guild(**default_guild_settings) self.config.register_guild(**default_guild_settings)
self.config.register_member(**default_member_settings) self.config.register_member(**default_member_settings)
self.config.register_channel(**default_channel_settings) self.config.register_channel(**default_channel_settings)
self.register_task = self.bot.loop.create_task(self.register_filterban())
self.pattern_cache = {} self.pattern_cache = {}
async def red_delete_data_for_user( async def red_delete_data_for_user(
@ -55,17 +54,27 @@ class Filter(commands.Cog):
if user_id in guild_data: if user_id in guild_data:
await self.config.member_from_ids(guild_id, user_id).clear() await self.config.member_from_ids(guild_id, user_id).clear()
def cog_unload(self): async def initialize(self) -> None:
self.register_task.cancel() await self.register_casetypes()
@staticmethod @staticmethod
async def register_filterban(): async def register_casetypes() -> None:
try: await modlog.register_casetypes(
await modlog.register_casetype( [
"filterban", False, ":filing_cabinet: :hammer:", "Filter ban" {
"name": "filterban",
"default_setting": False,
"image": "\N{FILE CABINET}\N{VARIATION SELECTOR-16} \N{HAMMER}",
"case_str": "Filter ban",
},
{
"name": "filterhit",
"default_setting": False,
"image": "\N{FILE CABINET}\N{VARIATION SELECTOR-16}",
"case_str": "Filter hit",
},
]
) )
except RuntimeError:
pass
@commands.group() @commands.group()
@commands.guild_only() @commands.guild_only()
@ -391,6 +400,20 @@ class Filter(commands.Cog):
hits = await self.filter_hits(message.content, message.channel) hits = await self.filter_hits(message.content, message.channel)
if hits: if hits:
await modlog.create_case(
bot=self.bot,
guild=guild,
created_at=message.created_at.replace(tzinfo=timezone.utc),
action_type="filterhit",
user=author,
moderator=guild.me,
reason=(
_("Filtered words used: {words}").format(words=humanize_list(list(hits)))
if len(hits) > 1
else _("Filtered word used: {word}").format(word=list(hits)[0])
),
channel=message.channel,
)
try: try:
await message.delete() await message.delete()
except discord.HTTPException: except discord.HTTPException:
@ -471,7 +494,6 @@ class Filter(commands.Cog):
await set_contextual_locales_from_guild(self.bot, guild) await set_contextual_locales_from_guild(self.bot, guild)
if await self.filter_hits(member.display_name, member.guild): if await self.filter_hits(member.display_name, member.guild):
name_to_use = guild_data["filter_default_name"] name_to_use = guild_data["filter_default_name"]
reason = _("Filtered nickname") if member.nick else _("Filtered name") reason = _("Filtered nickname") if member.nick else _("Filtered name")
try: try: