diff --git a/bot.py b/bot.py index 21ed574..cb14dd5 100644 --- a/bot.py +++ b/bot.py @@ -43,38 +43,30 @@ features = { giveaways = {} -# Erstelle einen Ordner für die Logs, wenn er noch nicht existiert LOGS_DIR = "logs" if not os.path.exists(LOGS_DIR): os.makedirs(LOGS_DIR) -# Konfiguriere das Log-Format logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') -# Erstelle einen Logger für den Bot logger = logging.getLogger("discord_bot") logger.setLevel(logging.INFO) -# Überprüfe, ob bereits eine Log-Datei für den aktuellen Tag vorhanden ist log_file = os.path.join(LOGS_DIR, f"{datetime.now().strftime('%Y-%m-%d')}.log") if os.path.exists(log_file): try: - # Umbenennen der vorhandenen Log-Datei, um sie vor dem Überschreiben zu schützen timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S') renamed_log_file = os.path.join(LOGS_DIR, f"{datetime.now().strftime('%Y-%m-%d')}_{timestamp}.log") os.rename(log_file, renamed_log_file) except PermissionError: print(f"Unable to rename log file {log_file}. It may be in use by another process.") -# Erstelle einen Handler, um Logs in eine Datei zu schreiben file_handler = logging.FileHandler(log_file) file_handler.setLevel(logging.INFO) -# Definiere das Format für die Datei-Logs file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') file_handler.setFormatter(file_formatter) -# Füge den Handler zum Logger hinzu logger.addHandler(file_handler) #to do: @@ -84,10 +76,8 @@ logger.addHandler(file_handler) #perms || 10 = Owner || 8 = Admin || 5 = Mod -# Point to the local server openai_instance = OpenAI(base_url=OPENAI_BASE_URL, api_key=OPENAI_API_KEY) - TOKEN = os.getenv("DISCORD_TOKEN") intents = discord.Intents.default() intents.message_content = True @@ -256,6 +246,30 @@ def load_user_data(user_id, guild_id): return user_data +def get_global_permission(user_id): + connection = connect_to_database() + cursor = connection.cursor() + select_query = "SELECT global_permission FROM bot_data WHERE user_id = %s" + cursor.execute(select_query, (user_id,)) + result = cursor.fetchone() + cursor.close() + connection.close() + + return result[0] if result else None + +def save_global_permission(user_id, permission_level): + connection = connect_to_database() + cursor = connection.cursor() + insert_query = """ + INSERT INTO bot_data (user_id, global_permission) + VALUES (%s, %s) + ON DUPLICATE KEY UPDATE global_permission = %s + """ + cursor.execute(insert_query, (user_id, permission_level, permission_level)) + connection.commit() + cursor.close() + connection.close() + #----------------------------------------------------------------------------------------------------------- def save_giveaway_to_db(guild_id, platform, name, prize_uuid, game_key, winner_dc_id=None): @@ -351,6 +365,23 @@ async def startgiveaway(ctx, platform: str, prize: str, num_winners: int, title: check_giveaway.start(giveaway_id) +@client.hybrid_command() +async def setlocalpermission(ctx, permission_level: int): + """Allows an admin or higher to set their own local permission level.""" + user_id = ctx.author.id + guild_id = ctx.guild.id + + # Globale Berechtigungen abrufen + global_perms = get_global_permission(user_id) + + # Wenn der Benutzer mindestens Admin ist, kann er die Berechtigungen setzen + if global_perms is not None and global_perms >= 8: # Admin-Level ist 8 oder höher + # Lokale Berechtigungen setzen + update_user_data(user_id, guild_id, "permission", permission_level) + await ctx.send(f"Your local permission level has been set to {permission_level}.") + else: + await ctx.send("You do not have permission to set local permissions.") + @tasks.loop(minutes=1) async def check_giveaway(giveaway_id): """Checks every 1 minute to see if the giveaway has ended."""