feat: Add DM notifications for role addition and removal in RoleManagementCog

This commit is contained in:
Slipstream 2025-05-28 13:33:35 -06:00
parent 76463883d2
commit 3b185e1f4d
Signed by: slipstream
GPG Key ID: 13E498CE010AC6FD

View File

@ -436,6 +436,23 @@ class RoleManagementCog(commands.Cog):
await interaction.response.send_message(embed=embed)
logger.info(f"Role '{role.name}' added to {member} by {interaction.user} in {interaction.guild.name}")
# Attempt to DM the user
try:
dm_embed = discord.Embed(
title="Role Added",
description=f"The role {role.mention} was added to you in **{interaction.guild.name}**.",
color=role.color
)
dm_embed.add_field(name="Added by", value=interaction.user.mention, inline=True)
if reason:
dm_embed.add_field(name="Reason", value=reason, inline=False)
await member.send(embed=dm_embed)
logger.info(f"Successfully DMed {member} about role '{role.name}' addition.")
except discord.Forbidden:
logger.warning(f"Failed to DM {member} about role '{role.name}' addition (Forbidden).")
except discord.HTTPException as e:
logger.warning(f"Failed to DM {member} about role '{role.name}' addition (HTTPException: {e}).")
except discord.Forbidden:
await interaction.response.send_message("I don't have permission to add roles to this member.", ephemeral=True)
@ -486,6 +503,23 @@ class RoleManagementCog(commands.Cog):
await interaction.response.send_message(embed=embed)
logger.info(f"Role '{role.name}' removed from {member} by {interaction.user} in {interaction.guild.name}")
# Attempt to DM the user
try:
dm_embed = discord.Embed(
title="Role Removed",
description=f"The role {role.mention} was removed from you in **{interaction.guild.name}**.",
color=role.color
)
dm_embed.add_field(name="Removed by", value=interaction.user.mention, inline=True)
if reason:
dm_embed.add_field(name="Reason", value=reason, inline=False)
await member.send(embed=dm_embed)
logger.info(f"Successfully DMed {member} about role '{role.name}' removal.")
except discord.Forbidden:
logger.warning(f"Failed to DM {member} about role '{role.name}' removal (Forbidden).")
except discord.HTTPException as e:
logger.warning(f"Failed to DM {member} about role '{role.name}' removal (HTTPException: {e}).")
except discord.Forbidden:
await interaction.response.send_message("I don't have permission to remove roles from this member.", ephemeral=True)