From 611d9188ce0d89ea65c4297fd4a5e6912daeb55d Mon Sep 17 00:00:00 2001 From: aikaterna <20862007+aikaterna@users.noreply.github.com> Date: Thu, 19 Jul 2018 15:57:13 -0700 Subject: [PATCH] [V3 Dungeon] Add default profile pic checking - Added [p]dungeon profile: will banish a new user if they have a default profile pic, ignores age of the account - [p]dungeon dungeontoggle renamed to [p]dungeon toggle - Fixed account age formatter, will return correct account age now --- dungeon/dungeon.py | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/dungeon/dungeon.py b/dungeon/dungeon.py index 9fdb394..729717c 100644 --- a/dungeon/dungeon.py +++ b/dungeon/dungeon.py @@ -18,6 +18,7 @@ class Dungeon: "dungeon_channel": None, "dungeon_role": None, "join_days": 7, + "profile_toggle": False, "toggle": False, "user_role": None, "user_role_toggle": False, @@ -71,11 +72,19 @@ class Dungeon: await ctx.send(f"Dungeon role set to: {dungeon_role_obj.name}.") @dungeon.command() - async def dungeontoggle(self, ctx): + async def toggle(self, ctx): """Toggle the dungeon on or off.""" dungeon_enabled = await self.config.guild(ctx.guild).toggle() await self.config.guild(ctx.guild).toggle.set(not dungeon_enabled) - await ctx.send(f"New user dungeon role enabled: {not dungeon_enabled}.") + await ctx.send(f"Dungeon enabled: {not dungeon_enabled}.") + + @dungeon.command() + async def profiletoggle(self, ctx): + """Toggles flagging accounts that have a default profile pic. + Accounts that are over the join days threshold will still be flagged if they have a default profile pic.""" + profile_toggle = await self.config.guild(ctx.guild).profile_toggle() + await self.config.guild(ctx.guild).profile_toggle.set(not profile_toggle) + await ctx.send(f"Default profile pic flagging: {not profile_toggle}.") @dungeon.command() async def userrole(self, ctx, role_name: discord.Role): @@ -201,6 +210,7 @@ class Dungeon: user_role_enabled = data["user_role_toggle"] join_days = data["join_days"] auto_blacklist = data["auto_blacklist"] + profile_toggle = data["profile_toggle"] msg = ( "```ini\n----Dungeon Settings----\n" @@ -210,7 +220,8 @@ class Dungeon: f"Announce Channel: [{achannel}]\n" f"Autorole Enabled: [{user_role_enabled}]\n" f"Autorole Role: [{urole}]\n" - f"Auto-blacklist: [{auto_blacklist}]\n```" + f"Auto-blacklist: [{auto_blacklist}]\n" + f"Default PFP Flag: [{profile_toggle}]\n```" ) embed = discord.Embed(colour=ctx.guild.me.top_role.colour, description=msg) @@ -226,8 +237,11 @@ class Dungeon: now = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None) since_join = now - join_date join_days = await self.config.guild(member.guild).join_days() + profile_toggle = await self.config.guild(member.guild).profile_toggle() + announce_channel = await self.config.guild(member.guild).announce_channel() + channel_object = self.bot.get_channel(announce_channel) - if since_join.days < join_days: + if (since_join.days < join_days) or (profile_toggle and default_avatar): blacklist = await self.config.guild(member.guild).auto_blacklist() dungeon_role_id = await self.config.guild(member.guild).dungeon_role() dungeon_role_obj = discord.utils.get(member.guild.roles, id=dungeon_role_id) @@ -236,15 +250,21 @@ class Dungeon: if member.id not in blacklist_list: blacklist_list.append(member.id) try: - await member.add_roles( - dungeon_role_obj, reason="Adding dungeon role, new account." - ) + if since_join.days < join_days: + reason = "Adding dungeon role, new account." + else: + reason = "Adding dungeon role, default profile pic." + await member.add_roles(dungeon_role_obj, reason=reason) except discord.Forbidden: - pass + if announce_channel: + return await channel_object.send( + "Someone suspicious joined but something went wrong. I need permissions to manage channels and manage roles." + ) + else: + print("dungeon.py: I need permissions to manage channels and manage roles.") + return - announce_channel = await self.config.guild(member.guild).announce_channel() - channel_object = self.bot.get_channel(announce_channel) - msg = f"Auto-banished new user: \n**{member.name}#{member.discriminator}** ({member.id})\n{self._dynamic_time(since_join.seconds)} old account" + msg = f"Auto-banished new user: \n**{member.name}#{member.discriminator}** ({member.id})\n{self._dynamic_time(int(since_join.total_seconds()))} old account" if default_avatar: msg += ", no profile picture set" await channel_object.send(msg)