From a9c531c395d0e86c2057c94a15dac6c3caefe9f8 Mon Sep 17 00:00:00 2001 From: SimolZimol <70102430+SimolZimol@users.noreply.github.com> Date: Sun, 28 Sep 2025 21:23:50 +0200 Subject: [PATCH] modified: bot.py --- bot.py | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/bot.py b/bot.py index 2c1c458..9298fa3 100644 --- a/bot.py +++ b/bot.py @@ -3406,16 +3406,24 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess async def send_response(content=None, embed=None, ephemeral=False, file=None): try: if is_slash_command: - await ctx.followup.send(content=content, embed=embed, ephemeral=ephemeral, file=file) + if hasattr(ctx, 'followup') and ctx.followup: + await ctx.followup.send(content=content, embed=embed, ephemeral=ephemeral, file=file) + elif hasattr(ctx, 'response') and not ctx.response.is_done(): + await ctx.response.send_message(content=content, embed=embed, ephemeral=ephemeral, file=file) + else: + await ctx.send(content=content, embed=embed, file=file) else: await ctx.send(content=content, embed=embed, file=file) except Exception as e: - logger.error(f"Error sending response: {e}") - # Fallback to regular send if followup fails + logger.error(f"Error sending response in warn command: {e}") + # Final fallback - try basic send try: - await ctx.send(content=content, embed=embed, file=file) - except: - pass + if embed: + await ctx.send(embed=embed) + elif content: + await ctx.send(content=content) + except Exception as fallback_error: + logger.error(f"Fallback send also failed: {fallback_error}") try: # Parse message ID and context range from reason if provided inline @@ -3531,7 +3539,7 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess moderator_id=ctx.author.id, reason=reason, message_data=message_data, - message_id=message_id_int if message_id else None + message_id=int(parsed_message_id) if parsed_message_id else None ) # Get guild settings for threshold checking @@ -3650,11 +3658,22 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess } if message_data: - log_additional_info["Referenced Message"] = f"ID: {message_data['id']}" - log_additional_info["Message Channel"] = f"<#{message_data['channel_id']}>" - if message_data['content']: - content_preview = message_data['content'][:200] + "..." if len(message_data['content']) > 200 else message_data['content'] - log_additional_info["Message Content"] = content_preview + # Handle both old and new message_data formats + if isinstance(message_data, dict) and "main_message" in message_data: + main_msg = message_data.get("main_message") + if main_msg: + log_additional_info["Referenced Message"] = f"ID: {main_msg.get('id')}" + log_additional_info["Message Channel"] = f"<#{main_msg.get('channel_id')}>" + if main_msg.get('content'): + content_preview = main_msg['content'][:200] + "..." if len(main_msg['content']) > 200 else main_msg['content'] + log_additional_info["Message Content"] = content_preview + else: + # Handle old format + log_additional_info["Referenced Message"] = f"ID: {message_data.get('id')}" + log_additional_info["Message Channel"] = f"<#{message_data.get('channel_id')}>" + if message_data.get('content'): + content_preview = message_data['content'][:200] + "..." if len(message_data['content']) > 200 else message_data['content'] + log_additional_info["Message Content"] = content_preview await log_moderation_action( guild=ctx.guild,