modified: bot.py

This commit is contained in:
SimolZimol
2025-08-20 19:43:35 +02:00
parent 0dd396c8cd
commit f03421fddd

51
bot.py
View File

@@ -2932,6 +2932,21 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
if is_slash_command: if is_slash_command:
await ctx.defer() await ctx.defer()
# Helper function for sending responses
async def send_response(content=None, embed=None, ephemeral=False):
try:
if is_slash_command:
await ctx.followup.send(content=content, embed=embed, ephemeral=ephemeral)
else:
await ctx.send(content=content, embed=embed)
except Exception as e:
logger.error(f"Error sending response: {e}")
# Fallback to regular send if followup fails
try:
await ctx.send(content=content, embed=embed)
except:
pass
try: try:
# message_data will be populated if message_id is provided # message_data will be populated if message_id is provided
message_data = None message_data = None
@@ -2942,17 +2957,18 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
try: try:
message_id_int = int(message_id) message_id_int = int(message_id)
except ValueError: except ValueError:
if is_slash_command: await send_response(content=f"❌ Invalid message ID: {message_id}")
await ctx.followup.send(f"❌ Invalid message ID: {message_id}")
else:
await ctx.send(f"❌ Invalid message ID: {message_id}")
return return
# Try to get message data from current channel first # Try to get message data from current channel first
message_data = await get_message_data(ctx.channel, message_id_int) message_data = await get_message_data(ctx.channel, message_id_int)
# If not found in current channel, try other channels the bot can access # If not found in current channel, try other channels the bot can access
if message_data is None: if message_data is None:
for channel in ctx.guild.text_channels: # Limit search to avoid spam - only check first 10 channels
channels_to_check = ctx.guild.text_channels[:10]
for channel in channels_to_check:
if channel.id == ctx.channel.id:
continue # Skip current channel, already checked
try: try:
message_data = await get_message_data(channel, message_id_int) message_data = await get_message_data(channel, message_id_int)
if message_data is not None: if message_data is not None:
@@ -2970,10 +2986,7 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
description="You need moderation permissions (Level 5 or higher) to use this command.", description="You need moderation permissions (Level 5 or higher) to use this command.",
color=0xff0000 color=0xff0000
) )
if is_slash_command: await send_response(embed=embed, ephemeral=True)
await ctx.followup.send(embed=embed, ephemeral=True)
else:
await ctx.send(embed=embed)
return return
# Cannot warn yourself # Cannot warn yourself
@@ -2983,10 +2996,7 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
description="You cannot warn yourself!", description="You cannot warn yourself!",
color=0xff0000 color=0xff0000
) )
if is_slash_command: await send_response(embed=embed, ephemeral=True)
await ctx.followup.send(embed=embed, ephemeral=True)
else:
await ctx.send(embed=embed)
return return
# Check if target has higher permissions # Check if target has higher permissions
@@ -2998,10 +3008,7 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
description="You cannot warn someone with equal or higher permissions than you.", description="You cannot warn someone with equal or higher permissions than you.",
color=0xff0000 color=0xff0000
) )
if is_slash_command: await send_response(embed=embed, ephemeral=True)
await ctx.followup.send(embed=embed, ephemeral=True)
else:
await ctx.send(embed=embed)
return return
# Increase warn count # Increase warn count
@@ -3106,10 +3113,7 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
inline=False inline=False
) )
if is_slash_command: await send_response(embed=embed)
await ctx.followup.send(embed=embed)
else:
await ctx.send(embed=embed)
# Log the warning action # Log the warning action
log_additional_info = { log_additional_info = {
@@ -3166,10 +3170,7 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
description="An error occurred while processing the warning. Please try again.", description="An error occurred while processing the warning. Please try again.",
color=0xff0000 color=0xff0000
) )
if is_slash_command: await send_response(embed=embed)
await ctx.followup.send(embed=embed)
else:
await ctx.send(embed=embed)
@client.hybrid_command() @client.hybrid_command()
async def mywarns(ctx): async def mywarns(ctx):