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