from os import getpid, makedirs, system from shutil import rmtree from discord import ApplicationContext, slash_command, Cog, Guild from discord.ext import commands from functions import appendLog, getMsg, loadJson, makeEmbed, saveJson, strToColor # ========================================================================================================================= class CogUtility(commands.Cog): def __init__(self, client): self.client = client @Cog.listener() async def on_guild_join(self, guild: Guild): makedirs(f"guilds/{str(guild.id)}", exist_ok=True) makedirs(f"guilds/{str(guild.id)}/channels", exist_ok=True) saveJson({}, f"guilds/{str(guild.id)}/config.json") appendLog(f"Joined guild '{guild}' with id {str(guild.id)}") @Cog.listener() async def on_guild_remove(self, guild: Guild): try: rmtree(f"guilds/{str(guild.id)}") except: pass appendLog(f"Left guild '{guild}' with id {str(guild.id)}") @slash_command(name="shutdown", description="Restart the bot") async def shutdown(self, ctx: ApplicationContext): config = loadJson("config.json") if ctx.author.id == config["owner"]: await ctx.respond( embed=makeEmbed( description=getMsg("shutdown", ctx.guild).format(ctx.author), color=strToColor(config["color_default"]), ) ) system(f"kill -9 {str(getpid())}") else: await ctx.respond( embed=makeEmbed( title=getMsg("admin_title", ctx.guild), description=getMsg("admin_description", ctx.guild), color=strToColor(config["color_error"]), ) ) # =========================================================================================================================