modified: bot.py

modified:   bot.py
This commit is contained in:
SimolZimol
2025-08-20 18:00:28 +02:00
parent f13853671c
commit 670ef0f29a

25
bot.py
View File

@@ -2640,7 +2640,7 @@ async def log_moderation_action(guild, action_type, moderator, target_user, reas
except Exception as e: except Exception as e:
logger.error(f"Error logging moderation action: {e}") logger.error(f"Error logging moderation action: {e}")
async def save_warning_to_database(user_id, guild_id, moderator_id, reason, timestamp=None, message_data=None): async def save_warning_to_database(user_id, guild_id, moderator_id, reason, timestamp=None, message_data=None, message_id=None):
"""Saves individual warning records to the database with optional message data""" """Saves individual warning records to the database with optional message data"""
connection = None connection = None
cursor = None cursor = None
@@ -2652,14 +2652,14 @@ async def save_warning_to_database(user_id, guild_id, moderator_id, reason, time
timestamp = datetime.now() timestamp = datetime.now()
# Prepare message data if provided # Prepare message data if provided
message_id = None message_id_db = message_id # Use provided message_id
message_content = None message_content = None
message_attachments = None message_attachments = None
message_author_id = None message_author_id = None
message_channel_id = None message_channel_id = None
if message_data: if message_data:
message_id = message_data.get('id') message_id_db = message_data.get('id')
message_content = message_data.get('content') message_content = message_data.get('content')
message_attachments = message_data.get('attachments') # JSON string message_attachments = message_data.get('attachments') # JSON string
message_author_id = message_data.get('author_id') message_author_id = message_data.get('author_id')
@@ -2673,7 +2673,7 @@ async def save_warning_to_database(user_id, guild_id, moderator_id, reason, time
""" """
cursor.execute(insert_query, ( cursor.execute(insert_query, (
user_id, guild_id, moderator_id, reason, message_id, user_id, guild_id, moderator_id, reason, message_id_db,
message_content, message_attachments, message_author_id, message_content, message_attachments, message_author_id,
message_channel_id, timestamp message_channel_id, timestamp
)) ))
@@ -2937,12 +2937,12 @@ async def restore_user_roles(user, guild):
close_database_connection(connection) close_database_connection(connection)
@client.hybrid_command() @client.hybrid_command()
async def warn(ctx, user: discord.User, reason: str = "No reason provided", message_id: int = None): async def warn(ctx, user: discord.User, reason: str = "No reason provided", message_id: str = None):
"""Warns a user (Requires Permission Level 5 or higher) """Warns a user (Requires Permission Level 5 or higher)
Usage: Usage:
/warn @user "Inappropriate behavior" /warn @user "Inappropriate behavior"
/warn @user "Bad language" 1234567890123456789 /warn @user "Bad language" 1407754702564884622
Parameters: Parameters:
- user: The user to warn - user: The user to warn
@@ -2955,14 +2955,20 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
# Try to get message data if message ID was provided # Try to get message data if message ID was provided
if message_id: if message_id:
# Convert message_id string to int
try:
message_id_int = int(message_id)
except ValueError:
await ctx.send(f"❌ Invalid message ID: {message_id}")
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) 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: for channel in ctx.guild.text_channels:
try: try:
message_data = await get_message_data(channel, message_id) message_data = await get_message_data(channel, message_id_int)
if message_data is not None: if message_data is not None:
break break
except discord.Forbidden: except discord.Forbidden:
@@ -3013,7 +3019,8 @@ async def warn(ctx, user: discord.User, reason: str = "No reason provided", mess
guild_id=ctx.guild.id, guild_id=ctx.guild.id,
moderator_id=ctx.author.id, moderator_id=ctx.author.id,
reason=reason, reason=reason,
message_data=message_data message_data=message_data,
message_id=message_id_int if message_id else None
) )
# Get guild settings for threshold checking # Get guild settings for threshold checking