From c51fb9c9c98b02c393ae56867d4365b41cd3f77d Mon Sep 17 00:00:00 2001 From: GDWR Date: Tue, 1 Feb 2022 19:19:33 +0000 Subject: ✨ Check for bad username when user joins or switches voice channel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/exts/filters/filtering.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bot/exts/filters/filtering.py b/bot/exts/filters/filtering.py index 0ac6dfe51..7b708f9a9 100644 --- a/bot/exts/filters/filtering.py +++ b/bot/exts/filters/filtering.py @@ -12,7 +12,7 @@ import tldextract from async_rediscache import RedisCache from botcore.regex import DISCORD_INVITE from dateutil.relativedelta import relativedelta -from discord import Colour, HTTPException, Member, Message, NotFound, TextChannel +from discord import Colour, HTTPException, Member, Message, NotFound, TextChannel, VoiceState from discord.ext.commands import Cog from discord.utils import escape_markdown @@ -207,6 +207,12 @@ class Filtering(Cog): delta = relativedelta(after.edited_at, before.edited_at).microseconds await self._filter_message(after, delta) + @Cog.listener() + async def on_voice_state_update(self, member: Member, before: VoiceState, after: VoiceState): + """When a member initially joins a voice channel or switches to a new one, check for a bad name in username.""" + if after.channel and not before.channel: + await self.check_bad_words_in_name(member) + def get_name_match(self, name: str) -> Optional[re.Match]: """Check bad words from passed string (name). Return the first match found.""" normalised_name = unicodedata.normalize("NFKC", name) -- cgit v1.2.3