56 lines
2.5 KiB
Python
56 lines
2.5 KiB
Python
import discord, traceback
|
|
from discord.ext import commands
|
|
|
|
class EventHandler():
|
|
def __init__(self, bot):
|
|
self.bot = bot
|
|
|
|
async def on_slash_command(self, ctx):
|
|
if ctx.subcommand_name is not None:
|
|
subcommand = f" {ctx.subcommand_name} "
|
|
else:
|
|
subcommand = " "
|
|
args = " ".join([str(i) for i in ctx.args])
|
|
fullCommand = f"/{ctx.command}{subcommand}{args}"
|
|
logMessage = f"{ctx.author.display_name} ran {fullCommand}"
|
|
self.bot.log(logMessage, str(ctx.channel_id), level = 25)
|
|
|
|
async def on_ready(self):
|
|
await self.bot.databaseFuncs.syncCommands()
|
|
self.bot.log("Logged in as "+self.bot.user.name+", "+str(self.bot.user.id), level = 25)
|
|
game = discord.Game("Use /help for commands")
|
|
await self.bot.change_presence(activity=game, status = discord.Status.online)
|
|
|
|
class ErrorHandler():
|
|
def __init__(self, bot):
|
|
self.bot = bot
|
|
|
|
async def on_slash_command_error(self, ctx, error):
|
|
if isinstance(error, commands.CommandNotFound):
|
|
await ctx.send("That's not a command (error code 001)")
|
|
elif isinstance(error,commands.errors.MissingRequiredArgument):
|
|
self.bot.log(f"{error}",str(ctx.channel_id))
|
|
await ctx.send("Missing command parameters (error code 002). Try using `!help [command]` to find out how to use the command.")
|
|
else:
|
|
exception = traceback.format_exception(type(error), error, error.__traceback__)
|
|
stopAt = "\nThe above exception was the direct cause of the following exception:\n\n"
|
|
if stopAt in exception:
|
|
index = exception.index(stopAt)
|
|
exception = exception[:index]
|
|
|
|
exceptionString = "".join(exception)
|
|
self.bot.log([f"exception in /{ctx.name}", f"{exceptionString}"],str(ctx.channel_id), 40)
|
|
if isinstance(error, discord.errors.NotFound):
|
|
self.bot.log("Context is non-existant", level = 40)
|
|
else:
|
|
await ctx.send("Something went wrong (error code 000)")
|
|
|
|
async def on_error(self, method):
|
|
exception = traceback.format_exc()
|
|
stopAt = "\nThe above exception was the direct cause of the following exception:\n\n"
|
|
if stopAt in exception:
|
|
index = exception.index(stopAt)
|
|
exception = exception[:index]
|
|
|
|
exceptionString = "".join(exception)
|
|
self.bot.log([f"exception in /{method}", f"{exceptionString}"], level = 40) |