-
Notifications
You must be signed in to change notification settings - Fork 148
Description
Summary
This bug is a race condition that concerns parent slash command with attached children commands, found while coding my bot. I noticed this bug defining a after_slash_command_invoke where ApplicationCommandInteraction.application_command.name was returning the same name twice (once for the parent command, once for the subcommand)
Reproduction Steps
- Create a slash command and attach to it a subcommand
- Define & set a
after_slash_command_invokecallback - Enjoy the view
Minimal Reproducible Code
First step: Create a slash command and attach to it a subcommand
@commands.slash_command()
async def packages(self, inter: AppCmdInter):
return
@packages.sub_command()
async def my_sub_command(self, inter: AppCmdInter):
...Second step: Define & set a after_slash_command_invoke callback
@bot.after_slash_command_invoke
async def my_after_invoke(inter: AppCmdInter):
print(inter.application_command.name)or subclassing commands.Bot
class MyBot(commands.Bot):
def __init__(self):
...
self._after_slash_command_invoke = self.my_after_invoke
async def my_after_invoke(self, inter: AppCmdInter):
print(inter.application_command.name)demo of the output:
2022-12-10 17:47:21.890 | INFO | _logging:log_message:43 - :SnipyBot.my_after_slash_command_invoke: - Snipy#7374 - 710570210159099984 | CodeWithVincent - 920882891024629790 | Command search was executed in 0.616953s
2022-12-10 17:47:22.928 | INFO | _logging:log_message:43 - :SnipyBot.my_after_slash_command_invoke: - Snipy#7374 - 710570210159099984 | CodeWithVincent - 920882891024629790 | Command search was executed in 1.654488s
Expected Results
The after_slash_command_invoke is called once (just for the sub_command) or at least the ApplicationCommandInteraction.application_command doesn't get overwrited
Actual Results
after_slash_command_invoke is called twice (once for the parent command and once for it's sub_command) and the ApplicationCommandInteraction.application_command is overwritten
Intents
disnake.Intents.default()
System Information
irrelevantsChecklist
- I have searched the open issues for duplicates.
- I have shown the entire traceback, if possible.
- I have removed my token from display, if visible.