bruder-py/src/main.py
Philipp 5ec82be548
remove graceful stop, update to discord-py-interaction 5.0.0
We had to remove the graceful stop because it somehow blocked the bot
from starting.
2024-10-08 00:15:01 +02:00

69 lines
2.8 KiB
Python

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 <https://steamid.xyz/> 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 <https://steamid.xyz/> 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)