modified: bot.py
This commit is contained in:
72
bot.py
72
bot.py
@@ -279,52 +279,40 @@ def save_global_permission(user_id, permission_level):
|
|||||||
|
|
||||||
#-----------------------------------------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
async def update_all_users():
|
async def update_all_users(batch_size=20, pause_duration=1):
|
||||||
connection = connect_to_database()
|
connection = connect_to_database()
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
|
cursor.execute("SELECT DISTINCT guild_id FROM guilds")
|
||||||
# Hole alle Guild-IDs aus der guilds-Datenbank
|
|
||||||
cursor.execute("SELECT guild_id FROM guilds")
|
|
||||||
guilds = cursor.fetchall()
|
guilds = cursor.fetchall()
|
||||||
|
|
||||||
for (guild_id,) in guilds:
|
|
||||||
guild = client.get_guild(int(guild_id))
|
|
||||||
if not guild:
|
|
||||||
continue # Falls der Bot auf diesem Server nicht mehr aktiv ist, überspringen
|
|
||||||
|
|
||||||
print(f"Updating users for guild: {guild_id}")
|
|
||||||
|
|
||||||
# Aktualisiere Benutzerdaten für alle Mitglieder im Server
|
|
||||||
for member in guild.members:
|
|
||||||
user_id = member.id
|
|
||||||
user_data = load_user_data(user_id, guild_id)
|
|
||||||
|
|
||||||
print(f"Processing member: {member.display_name} (ID: {user_id})")
|
|
||||||
|
|
||||||
# Aktualisiere Nickname, Profilbild und Join-Datum für vorhandene Mitglieder
|
|
||||||
update_user_data(user_id, guild_id, "nickname", member.display_name)
|
|
||||||
update_user_data(user_id, guild_id, "profile_picture", str(member.display_avatar.url))
|
|
||||||
update_user_data(user_id, guild_id, "join_date", member.joined_at.date())
|
|
||||||
|
|
||||||
# Entferne leave_date, falls der Benutzer noch auf dem Server ist und leave_date gesetzt war
|
|
||||||
if user_data.get("leave_date") is not None:
|
|
||||||
print(f"Clearing leave_date for user: {member.display_name}")
|
|
||||||
update_user_data(user_id, guild_id, "leave_date", None)
|
|
||||||
|
|
||||||
# Überprüfe alle Benutzer in `user_data`, die nicht mehr auf dem Server sind
|
|
||||||
cursor.execute("SELECT user_id FROM user_data WHERE guild_id = %s", (guild_id,))
|
|
||||||
all_users = cursor.fetchall()
|
|
||||||
|
|
||||||
for (user_id,) in all_users:
|
|
||||||
member = guild.get_member(int(user_id))
|
|
||||||
if member is None: # Benutzer hat den Server verlassen
|
|
||||||
print(f"User {user_id} has left the guild {guild_id}, setting leave_date.")
|
|
||||||
leave_date = datetime.now().date()
|
|
||||||
update_user_data(user_id, guild_id, "leave_date", leave_date)
|
|
||||||
|
|
||||||
cursor.close()
|
cursor.close()
|
||||||
connection.close()
|
close_database_connection(connection)
|
||||||
print("User data update completed.")
|
|
||||||
|
for guild_id_tuple in guilds:
|
||||||
|
guild_id = guild_id_tuple[0]
|
||||||
|
guild = client.get_guild(int(guild_id))
|
||||||
|
if guild:
|
||||||
|
members = guild.members
|
||||||
|
total_members = len(members)
|
||||||
|
for i in range(0, total_members, batch_size):
|
||||||
|
batch = members[i:i + batch_size]
|
||||||
|
|
||||||
|
for member in batch:
|
||||||
|
user_id = member.id
|
||||||
|
user_data = load_user_data(user_id, guild_id)
|
||||||
|
|
||||||
|
# Daten aktualisieren
|
||||||
|
nickname = member.display_name
|
||||||
|
profile_picture = str(member.display_avatar.url) if member.display_avatar else None
|
||||||
|
join_date = member.joined_at.date() if member.joined_at else None
|
||||||
|
leave_date = None if member in guild.members else datetime.now().date()
|
||||||
|
|
||||||
|
update_user_data(user_id, guild_id, "nickname", nickname)
|
||||||
|
update_user_data(user_id, guild_id, "profile_picture", profile_picture)
|
||||||
|
update_user_data(user_id, guild_id, "join_date", join_date)
|
||||||
|
update_user_data(user_id, guild_id, "leave_date", leave_date)
|
||||||
|
|
||||||
|
# Pause nach jeder Charge
|
||||||
|
await asyncio.sleep(pause_duration)
|
||||||
|
|
||||||
def save_giveaway_to_db(guild_id, platform, name, prize_uuid, game_key):
|
def save_giveaway_to_db(guild_id, platform, name, prize_uuid, game_key):
|
||||||
connection = connect_to_database()
|
connection = connect_to_database()
|
||||||
|
|||||||
Reference in New Issue
Block a user