update
This commit is contained in:
@@ -10,6 +10,7 @@ from sqlalchemy import func, select
|
||||
from guardden.bot import GuardDen
|
||||
from guardden.models import ModerationLog, Strike
|
||||
from guardden.utils import parse_duration
|
||||
from guardden.utils.notifications import send_moderation_notification
|
||||
from guardden.utils.ratelimit import RateLimitExceeded
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -140,17 +141,23 @@ class Moderation(commands.Cog):
|
||||
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
# Try to DM the user
|
||||
try:
|
||||
dm_embed = discord.Embed(
|
||||
title=f"Warning in {ctx.guild.name}",
|
||||
description=f"You have been warned.",
|
||||
color=discord.Color.yellow(),
|
||||
# Notify the user
|
||||
config = await self.bot.guild_config.get_config(ctx.guild.id)
|
||||
dm_embed = discord.Embed(
|
||||
title=f"Warning in {ctx.guild.name}",
|
||||
description=f"You have been warned.",
|
||||
color=discord.Color.yellow(),
|
||||
)
|
||||
dm_embed.add_field(name="Reason", value=reason)
|
||||
|
||||
# Use notification utility to send DM with in-channel fallback
|
||||
if isinstance(ctx.channel, discord.TextChannel):
|
||||
await send_moderation_notification(
|
||||
user=member,
|
||||
channel=ctx.channel,
|
||||
embed=dm_embed,
|
||||
send_in_channel=config.send_in_channel_warnings if config else False,
|
||||
)
|
||||
dm_embed.add_field(name="Reason", value=reason)
|
||||
await member.send(embed=dm_embed)
|
||||
except discord.Forbidden:
|
||||
pass
|
||||
|
||||
@commands.command(name="strike")
|
||||
@commands.has_permissions(kick_members=True)
|
||||
@@ -328,17 +335,23 @@ class Moderation(commands.Cog):
|
||||
await ctx.send("You cannot kick someone with a higher or equal role.")
|
||||
return
|
||||
|
||||
# Try to DM the user before kicking
|
||||
try:
|
||||
dm_embed = discord.Embed(
|
||||
title=f"Kicked from {ctx.guild.name}",
|
||||
description=f"You have been kicked from the server.",
|
||||
color=discord.Color.red(),
|
||||
# Notify the user before kicking
|
||||
config = await self.bot.guild_config.get_config(ctx.guild.id)
|
||||
dm_embed = discord.Embed(
|
||||
title=f"Kicked from {ctx.guild.name}",
|
||||
description=f"You have been kicked from the server.",
|
||||
color=discord.Color.red(),
|
||||
)
|
||||
dm_embed.add_field(name="Reason", value=reason)
|
||||
|
||||
# Use notification utility to send DM with in-channel fallback
|
||||
if isinstance(ctx.channel, discord.TextChannel):
|
||||
await send_moderation_notification(
|
||||
user=member,
|
||||
channel=ctx.channel,
|
||||
embed=dm_embed,
|
||||
send_in_channel=config.send_in_channel_warnings if config else False,
|
||||
)
|
||||
dm_embed.add_field(name="Reason", value=reason)
|
||||
await member.send(embed=dm_embed)
|
||||
except discord.Forbidden:
|
||||
pass
|
||||
|
||||
try:
|
||||
await member.kick(reason=f"{ctx.author}: {reason}")
|
||||
@@ -348,7 +361,7 @@ class Moderation(commands.Cog):
|
||||
except discord.HTTPException as e:
|
||||
await ctx.send(f"❌ Failed to kick member: {e}")
|
||||
return
|
||||
|
||||
|
||||
await self._log_action(ctx.guild, member, ctx.author, "kick", reason)
|
||||
|
||||
embed = discord.Embed(
|
||||
@@ -381,17 +394,23 @@ class Moderation(commands.Cog):
|
||||
await ctx.send("You cannot ban someone with a higher or equal role.")
|
||||
return
|
||||
|
||||
# Try to DM the user before banning
|
||||
try:
|
||||
dm_embed = discord.Embed(
|
||||
title=f"Banned from {ctx.guild.name}",
|
||||
description=f"You have been banned from the server.",
|
||||
color=discord.Color.dark_red(),
|
||||
# Notify the user before banning
|
||||
config = await self.bot.guild_config.get_config(ctx.guild.id)
|
||||
dm_embed = discord.Embed(
|
||||
title=f"Banned from {ctx.guild.name}",
|
||||
description=f"You have been banned from the server.",
|
||||
color=discord.Color.dark_red(),
|
||||
)
|
||||
dm_embed.add_field(name="Reason", value=reason)
|
||||
|
||||
# Use notification utility to send DM with in-channel fallback
|
||||
if isinstance(ctx.channel, discord.TextChannel):
|
||||
await send_moderation_notification(
|
||||
user=member,
|
||||
channel=ctx.channel,
|
||||
embed=dm_embed,
|
||||
send_in_channel=config.send_in_channel_warnings if config else False,
|
||||
)
|
||||
dm_embed.add_field(name="Reason", value=reason)
|
||||
await member.send(embed=dm_embed)
|
||||
except discord.Forbidden:
|
||||
pass
|
||||
|
||||
try:
|
||||
await ctx.guild.ban(member, reason=f"{ctx.author}: {reason}", delete_message_days=0)
|
||||
@@ -401,7 +420,7 @@ class Moderation(commands.Cog):
|
||||
except discord.HTTPException as e:
|
||||
await ctx.send(f"❌ Failed to ban member: {e}")
|
||||
return
|
||||
|
||||
|
||||
await self._log_action(ctx.guild, member, ctx.author, "ban", reason)
|
||||
|
||||
embed = discord.Embed(
|
||||
|
||||
Reference in New Issue
Block a user