命令优先于子模块组 Discord.Net
Command taking priority over Submodule group Discord.Net
我正在尝试使用组设置一些嵌套命令,但父组的命令似乎优先。
这是我的代码示例。
[Group("foo"), Summary("Testing foo")]
public class TestModule : ModuleBase<SocketCommandContext>
{
[Group("bar"), Summary("Testing bar")]
public class TestModTwo : ModuleBase<SocketCommandContext>
{
[Command, Summary("bar default command")]
public async Task Test()
{
await Context.Channel.SendMessageAsync("bar default command");
}
}
[Command, Summary("foo default command")]
public async Task Test()
{
await Context.Channel.SendMessageAsync("foo default command");
}
[Command, Summary("foo default command with string")]
public async Task Test(string User)
{
await Context.Channel.SendMessageAsync("foo default command with string");
}
}
当 运行 我的命令 w?foo bar
我的机器人 returns "foo default command with string" 而不是所需的 "bar default command"。用字符串注释掉我的测试方法返回了我想要的。有没有办法指定我的嵌套命令,同时仍然能够在父组命令中接受字符串?
您可以通过在内部命令中添加 PriorityAttribute
来实现这种行为。这将告诉 Discord.net 首先检查此命令。
注意:插入到 PriorityAttribute
的最大数字将首先被检查!
我正在尝试使用组设置一些嵌套命令,但父组的命令似乎优先。
这是我的代码示例。
[Group("foo"), Summary("Testing foo")]
public class TestModule : ModuleBase<SocketCommandContext>
{
[Group("bar"), Summary("Testing bar")]
public class TestModTwo : ModuleBase<SocketCommandContext>
{
[Command, Summary("bar default command")]
public async Task Test()
{
await Context.Channel.SendMessageAsync("bar default command");
}
}
[Command, Summary("foo default command")]
public async Task Test()
{
await Context.Channel.SendMessageAsync("foo default command");
}
[Command, Summary("foo default command with string")]
public async Task Test(string User)
{
await Context.Channel.SendMessageAsync("foo default command with string");
}
}
当 运行 我的命令 w?foo bar
我的机器人 returns "foo default command with string" 而不是所需的 "bar default command"。用字符串注释掉我的测试方法返回了我想要的。有没有办法指定我的嵌套命令,同时仍然能够在父组命令中接受字符串?
您可以通过在内部命令中添加 PriorityAttribute
来实现这种行为。这将告诉 Discord.net 首先检查此命令。
注意:插入到 PriorityAttribute
的最大数字将首先被检查!