(Discord PY) How do I handle slash command errors from different cog files?

Advertisements

You would typically handle the error of each slash command in the same file that its in, is there a way to essentially have all slash commands in one file and all of the error handling for each slash command in a different file?

This is what it typically looks like ->

class MyCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    async def echo(self, ctx, arg):
        await ctx.send(arg)

    @echo.error
    async def echo_error(self, ctx, error):
        await ctx.send("There was an error")
        if isinstance(error, command.MissingRequiredArgument):
            await ctx.send("MIssing Required Argument")
        else:
            raise error

I haven’t tried anything yet because I’m fairly new to python, so I was just curious if this was even possible. Thanks!

>Solution :

Before your bot.run(), add these lines of code:

import asyncio  #usually the imports are at the top of the file
from cog_file import ErrorCog
from slash_commands_file import SlashCog
asyncio.run(bot.add_cog(ErrorCog(bot)))
asyncio.run(bot.add_cog(SlashCog(bot)))

where cog_file.py and slash_commands_file.py are in the same folder as the one running the bot.

The cog_file.py is the same you have. For the slash_commands_file, you would have something like this:

from discord.ext import commands
from discord import app_commands

class SlashCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot


    @app_commands.command(name='command-name') #here just as with normal @tree.command
    async def my_slash_command(self, interaction: discord.Interaction):
        pass   #in here same as always except bot is replaced with self.bot

Leave a ReplyCancel reply