jankv2 (this hopefully fixes everything)

This commit is contained in:
Xargana 2025-07-14 01:28:42 +03:00
parent e4fdb14e6a
commit a1b175ca76
2 changed files with 22 additions and 11 deletions

View file

@ -107,8 +107,8 @@ class DiscordDataClient(discord.Client):
self.logger.info(f"Scanning server: {guild.name} ({guild.id})")
try:
# Get all members
members = [member async for member in guild.fetch_members(limit=None)]
# Get all members - different API for discord.py-self
members = [member async for member in guild.fetch_members()]
for member in members:
if not member.bot:

View file

@ -372,10 +372,13 @@ class MariaDBDatabase:
async def save_user(self, user_data: UserData):
"""Save or update user data with transaction."""
async with self.pool.begin() as conn:
async with self.pool.cursor() as cursor:
try:
# Start transaction
await cursor.execute("START TRANSACTION")
# Upsert user data
await conn.execute("""
await cursor.execute("""
INSERT INTO users (
user_id, username, discriminator, display_name,
avatar_url, banner_url, bio, status, activity
@ -402,23 +405,25 @@ class MariaDBDatabase:
))
# Update servers relationship
await conn.execute(
await cursor.execute(
"DELETE FROM user_servers WHERE user_id = %s",
(user_data.user_id,)
)
if user_data.servers:
server_values = [(user_data.user_id, s) for s in user_data.servers]
await conn.executemany(
"INSERT INTO user_servers (user_id, server_id) VALUES (%s, %s)",
server_values
)
for server_id in user_data.servers:
await cursor.execute(
"INSERT INTO user_servers (user_id, server_id) VALUES (%s, %s)",
(user_data.user_id, server_id)
)
# Commit transaction
await cursor.execute("COMMIT")
self.logger.debug(f"Saved user {user_data.username}#{user_data.discriminator}")
except MySQLError as e:
self.logger.error(f"Error saving user: {e}")
await conn.rollback()
await cursor.execute("ROLLBACK")
raise
async def add_server_to_user(self, user_id: int, server_id: int):
@ -498,6 +503,12 @@ class MariaDBDatabase:
return stats
async def cleanup_old_backups(self, max_backups: int = 5):
"""Clean up old backup documents (placeholder for MariaDB)."""
# For MariaDB, we could implement this as cleaning up old backup tables
# or maintaining a backup log table, but for now it's a no-op
self.logger.info("MariaDB cleanup completed")
async def close(self):
"""Close database connection."""
if self.pool: