diff --git a/cogs/configuration.py b/cogs/configuration.py index 9d226efe..c7f0fb7e 100644 --- a/cogs/configuration.py +++ b/cogs/configuration.py @@ -89,6 +89,31 @@ async def setup(self, ctx): ) ) + @commands.guild_only() + @commands.command( + description="Prohibit muted members from creating a ticket", + usage="excludemuted", + ) + async def excludemuted(self, ctx): + if (await ctx.message.member.guild_permissions()).administrator is False: + raise commands.MissingPermissions(["administrator"]) + + data = await tools.get_data(self.bot, ctx.guild.id) + toset = True + if data[15] is True: + toset = False + + async with self.bot.pool.acquire() as conn: + await conn.execute("UPDATE data SET excludemuted=$1 WHERE guild=$2", toset, ctx.guild.id) + + await ctx.send( + Embed( + "Block timed out members is now " + f"`{'Enabled' if toset is True else 'Disabled'}`.", + ) + ) + + @commands.guild_only() @commands.command( description="Change the prefix or view the current prefix.", @@ -463,6 +488,7 @@ async def viewconfig(self, ctx): embed.add_field("Advanced Logging", "Enabled" if data[7] is True else "Disabled") embed.add_field("Anonymous Messaging", "Enabled" if data[10] is True else "Disabled") embed.add_field("Command Only", "Enabled" if data[11] is True else "Disabled") + embed.add_field("Exclude Muted", "Enabled" if data[15] is True else "Disabled") embed.add_field("Ticket Creation", "Enabled" if toggle is None else f"Disabled ({toggle})") embed.add_field("Greeting Message", "*Not set*" if greeting is None else greeting, False) embed.add_field("Closing Message", "*Not set*" if closing is None else closing, False) diff --git a/cogs/direct_message.py b/cogs/direct_message.py index a53193df..7a8e9b77 100644 --- a/cogs/direct_message.py +++ b/cogs/direct_message.py @@ -51,6 +51,16 @@ async def send_mail(self, message, guild): ErrorEmbed("That server has blacklisted you from sending a message there.") ) return + + if data[15] is True and member.timed_out_until is not None: + embed = ErrorEmbed( + "Ticket Not Created", + "You can't create a ticket because you are timed out.", + timestamp=True, + ) + embed.set_footer(f"{guild.name} | {guild.id}", guild.icon_url) + await message.channel.send(embed) + return channel = None for text_channel in await guild.text_channels(): diff --git a/migrations/2022-05-01-135059_initialize_db/up.sql b/migrations/2022-05-01-135059_initialize_db/up.sql index f347f49b..712cb7c6 100644 --- a/migrations/2022-05-01-135059_initialize_db/up.sql +++ b/migrations/2022-05-01-135059_initialize_db/up.sql @@ -12,6 +12,7 @@ CREATE TABLE data blacklist bigint[] NOT NULL, anonymous boolean NOT NULL, commandonly boolean NOT NULL, + excludemuted boolean NOT NULL, PRIMARY KEY (guild) ); diff --git a/migrations/2024-04-29-192931_add_exclude_muted_members/down.sql b/migrations/2024-04-29-192931_add_exclude_muted_members/down.sql new file mode 100644 index 00000000..cc7bddc5 --- /dev/null +++ b/migrations/2024-04-29-192931_add_exclude_muted_members/down.sql @@ -0,0 +1 @@ +ALTER TABLE data DROP COLUMN excludemuted; diff --git a/migrations/2024-04-29-192931_add_exclude_muted_members/up.sql b/migrations/2024-04-29-192931_add_exclude_muted_members/up.sql new file mode 100644 index 00000000..e0235435 --- /dev/null +++ b/migrations/2024-04-29-192931_add_exclude_muted_members/up.sql @@ -0,0 +1 @@ +ALTER TABLE data ADD COLUMN excludemuted boolean; diff --git a/utils/tools.py b/utils/tools.py index 044817ef..279da31f 100644 --- a/utils/tools.py +++ b/utils/tools.py @@ -181,7 +181,7 @@ async def get_data(bot, guild): return res return await conn.fetchrow( - "INSERT INTO data VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13) " + "INSERT INTO data VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) " "RETURNING *", guild, None, @@ -196,6 +196,7 @@ async def get_data(bot, guild): False, False, None, + False, )