major-domo-legacy/cogs/exception-handler.py
Cal Corum e54cf885ad Migrated to rotating log handler
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
2024-12-11 14:52:28 -06:00

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))