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.
This commit is contained in:
parent
3b23bd1a0b
commit
5ec82be548
2 changed files with 49 additions and 87 deletions
|
@ -3,3 +3,4 @@ MYSQL_USER=root
|
||||||
MYSQL_PASSWORD=password
|
MYSQL_PASSWORD=password
|
||||||
MYSQL_DATABASE=database
|
MYSQL_DATABASE=database
|
||||||
DISCORD_TOKEN=token
|
DISCORD_TOKEN=token
|
||||||
|
DISCORD_GUILD=433600034983116810
|
||||||
|
|
135
src/main.py
135
src/main.py
|
@ -8,101 +8,62 @@ from dotenv import load_dotenv
|
||||||
from steamid import SteamID
|
from steamid import SteamID
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
class GracefulDeath:
|
load_dotenv()
|
||||||
"""Catch signals to allow graceful shutdown."""
|
token = os.getenv('DISCORD_TOKEN')
|
||||||
def __init__(self):
|
host = os.getenv('MYSQL_HOST')
|
||||||
self.receivedSignal=self.receivedSignalTermSignal=False
|
user = os.getenv('MYSQL_USER')
|
||||||
catchSignals = [
|
password = os.getenv('MYSQL_PASSWORD')
|
||||||
1,
|
db = os.getenv('MYSQL_DATABASE')
|
||||||
2,
|
guild_id = os.getenv('DISCORD_GUILD')
|
||||||
3,
|
|
||||||
10,
|
|
||||||
12,
|
|
||||||
15,
|
|
||||||
]
|
|
||||||
for signum in catchSignals:
|
|
||||||
signal.signal(signum, self.handler)
|
|
||||||
|
|
||||||
def handler(self, signum):
|
bot = Client()
|
||||||
self.lastSignal=signum
|
|
||||||
self.receivedSignal=True
|
|
||||||
if signum in [2, 3, 15]:
|
|
||||||
self.receivedSignalTermSignal=True
|
|
||||||
|
|
||||||
def main(args):
|
con = Database(host, user, password, db)
|
||||||
sighandler = GracefulDeath()
|
|
||||||
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')
|
|
||||||
|
|
||||||
bot = Client(intents=Intents.DEFAULT)
|
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...")
|
||||||
|
|
||||||
con = Database(host, user, password, db)
|
@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:
|
try:
|
||||||
if args[0] == "init_database":
|
steam_id = SteamID(steamid)
|
||||||
con.init_test_database()
|
|
||||||
logger.info(f"First init of database... Please disable this afterwards with the flag init_dabase")
|
|
||||||
except:
|
except:
|
||||||
logger.info(f"Skipping database init...")
|
await ctx.send(f"You failed to give a valid SteamID as it seems, please head to <https://steamid.xyz/> and check.", ephemeral=True)
|
||||||
pass
|
logger.debug(f"User {user.username} ({user.id}) has give a invalid SteamID. Could not convert! {steamid}")
|
||||||
|
return
|
||||||
|
|
||||||
@slash_command(
|
if steam_id.isValid() == False:
|
||||||
name="reserve_slot",
|
await ctx.send(f"You failed to give a valid SteamID as it seems, please head to <https://steamid.xyz/> and check.", ephemeral=True)
|
||||||
description="Claim your reserved slot on the DM Server",
|
logger.debug(f"User {user.username} ({user.id}) has given a invalid SteamID! Value: {steamid}")
|
||||||
scopes=[433600034983116810],
|
return
|
||||||
)
|
|
||||||
|
|
||||||
@slash_option(
|
try:
|
||||||
name="steamid",
|
con.create_reserved_slot(user, steam_id.steam2(1))
|
||||||
description="Please provide your SteamID, from https://steamid.xyz/",
|
await ctx.send(f"You just claimed a reserved slot for: `{steam_id.steam2(1)}`!")
|
||||||
required=True,
|
logger.debug(f"{user.id} with SteamID: {steam_id.steam2(1)} has just claimed a reserved slot.")
|
||||||
opt_type=OptionType.STRING,
|
except Exception as err:
|
||||||
)
|
if str(err) != "Duplicate entrys":
|
||||||
|
await ctx.send(f"Something failed with the database, please try again later.")
|
||||||
async def reserve_slot(ctx: SlashContext, steamid: str):
|
logger.warning(f"Error while trying to access database. {err}")
|
||||||
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
|
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.")
|
||||||
|
|
||||||
try:
|
bot.start(token)
|
||||||
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)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
logger.info("Trying graceful shutdown...")
|
|
||||||
if sighandler.receivedSignal:
|
|
||||||
bot.remove("reserve_slot", remove_commands=True)
|
|
||||||
exit()
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main(sys.argv[1:])
|
|
||||||
|
|
Loading…
Reference in a new issue