modified: bot.py
This commit is contained in:
51
bot.py
51
bot.py
@@ -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."""
|
||||||
|
|||||||
Reference in New Issue
Block a user