import os import sys import signal from interactions import Client, Intents, listen, slash_command, slash_option, OptionType, SlashContext from database import Database from dotenv import load_dotenv from steamid import SteamID from loguru import logger load_dotenv() token = os.getenv('DISCORD_TOKEN') host = os.getenv('MYSQL_HOST') user = os.getenv('MYSQL_USER') password = os.getenv('MYSQL_PASSWORD') db = os.getenv('MYSQL_DATABASE') guild_id = os.getenv('DISCORD_GUILD') bot = Client() con = Database(host, user, password, db) try: if args[0] == "init_database": con.init_test_database() logger.info(f"First init of database... Please disable this afterwards with the flag init_dabase") except: logger.info(f"Skipping database init...") @listen() async def on_ready(): logger.info(f"We logged in as {bot.app.name}.") @slash_command(name="reserve_slot", description="Claim your reserved slot on the DM Server", scopes=[guild_id]) @slash_option(name="steamid", description="Please provide your SteamID, from https://steamid.xyz/", required=True, opt_type=OptionType.STRING) async def reserve_slot(ctx: SlashContext, steamid: str): channel = ctx.channel.id user = ctx.user if channel != 433738529898627073 and channel != 441985560144379912: await ctx.send(f"This command only works in the Channel <#433738529898627073>!", ephemeral=True) logger.debug(f"Command was used in the wrong channel. ({channel})") return try: steam_id = SteamID(steamid) except: await ctx.send(f"You failed to give a valid SteamID as it seems, please head to and check.", ephemeral=True) logger.debug(f"User {user.username} ({user.id}) has give a invalid SteamID. Could not convert! {steamid}") return if steam_id.isValid() == False: await ctx.send(f"You failed to give a valid SteamID as it seems, please head to and check.", ephemeral=True) logger.debug(f"User {user.username} ({user.id}) has given a invalid SteamID! Value: {steamid}") return try: con.create_reserved_slot(user, steam_id.steam2(1)) await ctx.send(f"You just claimed a reserved slot for: `{steam_id.steam2(1)}`!") logger.debug(f"{user.id} with SteamID: {steam_id.steam2(1)} has just claimed a reserved slot.") except Exception as err: if str(err) != "Duplicate entrys": await ctx.send(f"Something failed with the database, please try again later.") logger.warning(f"Error while trying to access database. {err}") return await ctx.send(f"You have already claimed a reserved slot!", ephemeral=True) logger.debug(f"{steam_id.steam2(1)} or User {user.username} ({user.id}) is already in the database.") bot.start(token)