Added random_gif() Moved back from exception-handler cog to local error handling Updated !keepers to be season agnostic Added new !sync param to update and clear local guild Added error checking to !player command
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
import discord.ext.commands
|
|
from discord.ext import commands
|
|
from discord import Interaction
|
|
from discord.app_commands import AppCommandError
|
|
import logging
|
|
|
|
logger = logging.getLogger('discord_app')
|
|
|
|
class ExceptionHandler(commands.Cog):
|
|
def __init__(self, bot: commands.Bot) -> None:
|
|
self.bot = bot
|
|
|
|
# @commands.Cog.listener()
|
|
# async def on_command_error(self, ctx: commands.Context, error) -> None:
|
|
# e_string = f'{error}'
|
|
# logger.error(e_string)
|
|
# if 'Command' in e_string and 'not found' in e_string:
|
|
# pass
|
|
# else:
|
|
# await ctx.send(f'Hmm...do you know what this error means:\n\n{error}')
|
|
|
|
# attaching the handler when the cog is loaded
|
|
# and storing the old handler
|
|
# this is required for option 1
|
|
def cog_load(self):
|
|
tree = self.bot.tree
|
|
self._old_tree_error = tree.on_error
|
|
tree.on_error = self.on_app_command_error
|
|
|
|
# detaching the handler when the cog is unloaded
|
|
# this is optional for option 1
|
|
def cog_unload(self):
|
|
tree = self.bot.tree
|
|
tree.on_error = self._old_tree_error
|
|
|
|
# the global error handler for all app commands (slash & ctx menus)
|
|
async def on_app_command_error(
|
|
self,
|
|
interaction: Interaction,
|
|
error: AppCommandError
|
|
):
|
|
logger.error(f'interaction: {interaction} / error: {error}')
|
|
await interaction.channel.send(f'Hmm...do you know what this error means:\n\n{error}')
|
|
|
|
|
|
async def setup(bot: commands.Bot) -> None:
|
|
await bot.add_cog(ExceptionHandler(bot)) |