forked from cswimr/SeaCogs
misc(aurora): working on blacklists
This commit is contained in:
parent
b85b0fd4b2
commit
7eea8d2362
1 changed files with 8 additions and 15 deletions
|
@ -207,17 +207,8 @@ class Aurora(commands.Cog):
|
||||||
case = await fetch_case(moderation_id, interaction.guild.id)
|
case = await fetch_case(moderation_id, interaction.guild.id)
|
||||||
await send_evidenceformat(interaction, case)
|
await send_evidenceformat(interaction, case)
|
||||||
|
|
||||||
async def blacklist_autocomplete(self, interaction: discord.Interaction, current: str,) -> list[app_commands.Choice[str]]: # pylint: disable=unused-argument
|
|
||||||
"""Autocompletes a blacklist role."""
|
|
||||||
blacklist_roles = await config.guild(interaction.guild).blacklist_roles()
|
|
||||||
|
|
||||||
if blacklist_roles:
|
|
||||||
return [app_commands.Choice(name=role.name, value=role.id) for role in interaction.guild.roles if role.id in blacklist_roles]
|
|
||||||
return []
|
|
||||||
|
|
||||||
@app_commands.command(name="blacklist")
|
@app_commands.command(name="blacklist")
|
||||||
@app_commands.autocomplete(role=blacklist_autocomplete)
|
async def blacklist(self, interaction: discord.Interaction, target: discord.Member, role: str, reason: str, duration: str = None, silent: bool = None):
|
||||||
async def blacklist(self, interaction: discord.Interaction, target: discord.Member, role: str, reason: str, silent: bool = None):
|
|
||||||
"""Add a blacklist role to a user.
|
"""Add a blacklist role to a user.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
|
@ -225,15 +216,17 @@ class Aurora(commands.Cog):
|
||||||
target: discord.Member
|
target: discord.Member
|
||||||
Who are you blacklisting?
|
Who are you blacklisting?
|
||||||
role: str
|
role: str
|
||||||
What blacklist type are you applying to the target?
|
What blacklist role are you applying to the target?
|
||||||
reason: str
|
reason: str
|
||||||
Why are you blacklisting this user?
|
Why are you blacklisting this user?
|
||||||
|
duration: str
|
||||||
|
How long are you blacklisting this user for?
|
||||||
silent: bool
|
silent: bool
|
||||||
Should the user be messaged?"""
|
Should the user be messaged?"""
|
||||||
blacklist_roles = await config.guild(interaction.guild).blacklist_roles()
|
blacklist_roles = await config.guild(interaction.guild).blacklist_roles()
|
||||||
|
|
||||||
if not blacklist_roles:
|
if not blacklist_roles:
|
||||||
await interaction.response.send_message(content=error("There are no blacklist types set for this server!"), ephemeral=True)
|
await interaction.response.send_message(content=error("There are no blacklist roles set for this server!"), ephemeral=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
matching_role = None
|
matching_role = None
|
||||||
|
@ -244,7 +237,7 @@ class Aurora(commands.Cog):
|
||||||
break
|
break
|
||||||
|
|
||||||
if not matching_role:
|
if not matching_role:
|
||||||
await interaction.response.send_message(content=error("Please provide a valid blacklist type!"), ephemeral=True)
|
await interaction.response.send_message(content=error("Please provide a valid blacklist role!"), ephemeral=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
if not await check_moddable(target, interaction, ['moderate_members', 'manage_roles']):
|
if not await check_moddable(target, interaction, ['moderate_members', 'manage_roles']):
|
||||||
|
@ -264,10 +257,10 @@ class Aurora(commands.Cog):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
role_obj = interaction.guild.get_role(role)
|
role_obj = interaction.guild.get_role(role)
|
||||||
await target.add_roles(role, reason=f"Blacklisted by {interaction.user.id} for {humanize.precisedelta(matching_role['duration'])} for: {reason}")
|
await target.add_roles(role, reason=f"Blacklisted by {interaction.user.id} for {humanize.precisedelta(duration)} for: {reason}")
|
||||||
await interaction.response.send_message(content=f"{target.mention} has been blacklisted with the {role_obj.name} role for {humanize.precisedelta(matching_role['duration'])}!\n**Reason** - `{reason}`")
|
await interaction.response.send_message(content=f"{target.mention} has been blacklisted with the {role_obj.name} role for {humanize.precisedelta(matching_role['duration'])}!\n**Reason** - `{reason}`")
|
||||||
|
|
||||||
moderation_id = await mysql_log(interaction.guild.id, interaction.user.id, 'BLACKLIST', 'USER', target.id, role, matching_role['duration'], reason)
|
moderation_id = await mysql_log(interaction.guild.id, interaction.user.id, 'BLACKLIST', 'USER', target.id, role, duration, reason)
|
||||||
await interaction.edit_original_response(content=f"{target.mention} has been blacklisted with the {role_obj.name} role for {humanize.precisedelta(matching_role['duration'])}! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`")
|
await interaction.edit_original_response(content=f"{target.mention} has been blacklisted with the {role_obj.name} role for {humanize.precisedelta(matching_role['duration'])}! (Case `#{moderation_id:,}`)\n**Reason** - `{reason}`")
|
||||||
await log(interaction, moderation_id)
|
await log(interaction, moderation_id)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue