plugins
plugins copied to clipboard
[SFW-80] bug: provided a subcommand group is configured with a default match and the command is ran with only the name of the subcommand the default match doesn't get executed.
Is there an existing issue for this?
- [X] I have searched the existing issues
Description of the bug
Provided the following subcommand array:
subcommands: [
{
type: 'group',
name: 'config',
entries: [
{ name: 'edit', messageRun: 'configEdit' },
{ name: 'show', messageRun: 'configShow', default: true },
{ name: 'remove', messageRun: 'configRemove' },
{ name: 'reset', messageRun: 'configReset' }
]
}
]
The expected behaviour is that running !command config would execute show as that is the configured default.
Currently however an error is thrown due to subcommandName.isSome() returning false here:
https://github.com/sapphiredev/plugins/blob/79d7230c84ad59338197d8109e6f3ba46a5c2158/packages/subcommands/src/lib/Subcommand.ts#L153
Steps To Reproduce
- Copy the following subcommand code as a new command:
import { Subcommand } from '@sapphire/plugin-subcommands';
import type { Message } from 'discord.js';
export class UserCommand extends Subcommand {
public constructor(context: Subcommand.Context) {
super(context, {
aliases: ['sg'],
description: 'A message command with some subcommand groups',
subcommands: [
{
type: 'group',
name: 'config',
entries: [
{ name: 'edit', messageRun: 'configEdit' },
{ name: 'show', messageRun: 'configShow', default: true },
{ name: 'remove', messageRun: 'configRemove' },
{ name: 'reset', messageRun: 'configReset' }
]
}
]
});
}
public async configShow(message: Message) {
return message.channel.send('Showing!');
}
public async configEdit(message: Message) {
return message.channel.send('Editing!');
}
public async configRemove(message: Message) {
return message.channel.send('Removing!');
}
public async configReset(message: Message) {
return message.channel.send('Resetting!');
}
}
- Run
!sg config - Observe that
showsubcommand does not get executed and instead amessageSubcommandNoMatcherror is thrown.
Expected behavior
The default subcommand within the subcommand group executes as described
Screenshots
No response
Additional context
No response