from discord.ext import commands import discord import subprocess import json class Admin(commands.Cog): def __init__(self, bot): self.bot = bot async def is_mod(ctx): return ctx.author.guild_permissions.manage_channels async def is_host(ctx): return ctx.author.id == 99457716614885376 @commands.command(aliases=['addcommand', 'newcommand']) @commands.check(is_mod) async def setcommand(self, ctx, command, *, message): self.bot.custom_commands["/" + command] = message with open('custom_commands.json', 'w') as f: json.dump(self.bot.custom_commands, f) await ctx.send(f"Set message for command {command}") @commands.command(aliases=['deletecommand']) @commands.check(is_mod) async def removecommand(self, ctx, command): del self.bot.custom_commands["/" + command] with open('custom_commands.json', 'w') as f: json.dump(self.bot.custom_commands, f) await ctx.send(f"Removed command {command}") @commands.check(is_mod) @commands.command(name='reload', hidden=True, usage='') async def _reload(self, ctx, ext): """Reloads an extension""" try: self.bot.reload_extension(f'cogs.{ext}') await ctx.send(f'The extension {ext} was reloaded!') except commands.ExtensionNotFound: await ctx.send(f'The extension {ext} doesn\'t exist.') except commands.ExtensionNotLoaded: await ctx.send(f'The extension {ext} is not loaded! (use /load)') except commands.NoEntryPointError: await ctx.send(f'The extension {ext} doesn\'t have an entry point (try adding the setup function) ') except commands.ExtensionFailed: await ctx.send(f'Some unknown error happened while trying to reload extension {ext} (check logs)') self.bot.logger.exception(f'Failed to reload extension {ext}:') @commands.check(is_mod) @commands.command(name='load', hidden=True, usage='') async def _load(self, ctx, ext): """Loads an extension""" try: self.bot.load_extension(f'cogs.{ext}') await ctx.send(f'The extension {ext} was loaded!') except commands.ExtensionNotFound: await ctx.send(f'The extension {ext} doesn\'t exist!') except commands.ExtensionAlreadyLoaded: await ctx.send(f'The extension {ext} is already loaded.') except commands.NoEntryPointError: await ctx.send(f'The extension {ext} doesn\'t have an entry point (try adding the setup function)') except commands.ExtensionFailed: await ctx.send(f'Some unknown error happened while trying to reload extension {ext} (check logs)') self.bot.logger.exception(f'Failed to reload extension {ext}:') def setup(bot): bot.add_cog(Admin(bot))