modified: bot.py

This commit is contained in:
SimolZimol
2024-10-22 13:53:42 +02:00
parent 7e5732ae79
commit c2dab3bf7e

51
bot.py
View File

@@ -43,38 +43,30 @@ features = {
giveaways = {} giveaways = {}
# Erstelle einen Ordner für die Logs, wenn er noch nicht existiert
LOGS_DIR = "logs" LOGS_DIR = "logs"
if not os.path.exists(LOGS_DIR): if not os.path.exists(LOGS_DIR):
os.makedirs(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') 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 = logging.getLogger("discord_bot")
logger.setLevel(logging.INFO) 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") log_file = os.path.join(LOGS_DIR, f"{datetime.now().strftime('%Y-%m-%d')}.log")
if os.path.exists(log_file): if os.path.exists(log_file):
try: try:
# Umbenennen der vorhandenen Log-Datei, um sie vor dem Überschreiben zu schützen
timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S') 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") renamed_log_file = os.path.join(LOGS_DIR, f"{datetime.now().strftime('%Y-%m-%d')}_{timestamp}.log")
os.rename(log_file, renamed_log_file) os.rename(log_file, renamed_log_file)
except PermissionError: except PermissionError:
print(f"Unable to rename log file {log_file}. It may be in use by another process.") 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 = logging.FileHandler(log_file)
file_handler.setLevel(logging.INFO) 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_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
file_handler.setFormatter(file_formatter) file_handler.setFormatter(file_formatter)
# Füge den Handler zum Logger hinzu
logger.addHandler(file_handler) logger.addHandler(file_handler)
#to do: #to do:
@@ -84,10 +76,8 @@ logger.addHandler(file_handler)
#perms || 10 = Owner || 8 = Admin || 5 = Mod #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) openai_instance = OpenAI(base_url=OPENAI_BASE_URL, api_key=OPENAI_API_KEY)
TOKEN = os.getenv("DISCORD_TOKEN") TOKEN = os.getenv("DISCORD_TOKEN")
intents = discord.Intents.default() intents = discord.Intents.default()
intents.message_content = True intents.message_content = True
@@ -256,6 +246,30 @@ def load_user_data(user_id, guild_id):
return user_data 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): 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) 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) @tasks.loop(minutes=1)
async def check_giveaway(giveaway_id): async def check_giveaway(giveaway_id):
"""Checks every 1 minute to see if the giveaway has ended.""" """Checks every 1 minute to see if the giveaway has ended."""