JCompositeCommand
abstract class JCompositeCommand @JvmOverloads constructor(owner: CommandOwner, primaryName: String, secondaryNames: String, parentPermission: Permission = owner.parentPermission) : CompositeCommand
复合指令. 指令注册时候会通过反射构造指令解析器.
示例:
public final class MyCompositeCommand extends CompositeCommand {
public static final MyCompositeCommand INSTANCE = new MyCompositeCommand();
private MyCompositeCommand() {
super(MyPluginMain.INSTANCE, "manage") // "manage" 是主指令名
}
// [参数智能解析]
//
//
// 在控制台执行 "/manage <群号>.<群员> <持续时间>",
// 或在聊天群内发送 "/manage <@一个群员> <持续时间>",
// 或在聊天群内发送 "/manage <目标群员的群名> <持续时间>",
// 或在聊天群内发送 "/manage <目标群员的账号> <持续时间>"
// 时调用这个函数
@SubCommand
public void mute(CommandSender sender, Member target, int duration) { // 通过 /manage mute <target> <duration> 调用.
sender.sendMessage("/manage mute 被调用了, 参数为: " + target + ", " + duration);
String result;
try {
result = target.mute(duration).toString();
} catch(Exception e) {
result = ExceptionsKt.stackTraceToString(e);
}
sender.sendMessage("结果: " + result);
}
@SubCommand
public void list(CommandSender sender) { // 执行 "/manage list" 时调用这个方法
sender.sendMessage("/manage list 被调用了");
}
@SubCommand
public void repeat(CommandContext context) {
// 使用 CommandContext 作为参数,可以获得触发指令的原消息链 originalMessage,其中包含 MessageMetadata。
context.getSender().sendMessage(context.getOriginalMessage());
}
// 支持 Image 类型, 需在聊天中执行此指令.
@SubCommand
public void test(CommandSender sender, Image image) { // 执行 "/manage test <一张图片>" 时调用这个方法
sender.sendMessage("/manage image 被调用了, 图片是 " + image.imageId)
}
}
Content copied to clipboard
Kotlin 示例查看 CompositeCommand
See also
Constructors
Link copied to clipboard
constructor(owner: CommandOwner, primaryName: String, vararg secondaryNames: String, parentPermission: Permission = owner.parentPermission)
Functions
Link copied to clipboard
inline suspend fun Command.execute(sender: CommandSender, vararg arguments: Message = emptyArray(), checkPermission: Boolean = true): CommandExecuteResult
inline suspend fun Command.execute(sender: CommandSender, arguments: String = "", checkPermission: Boolean = true): CommandExecuteResult
执行一个确切的指令
Link copied to clipboard
Link copied to clipboard
Properties
Link copied to clipboard
获取所有指令名称 (包含 primaryName 和 secondaryNames).
Link copied to clipboard
智能参数解析环境
Link copied to clipboard
指令描述, 用于显示在 BuiltInCommands.HelpCommand
Link copied to clipboard
Link copied to clipboard
指令可能的参数列表.
Link copied to clipboard
指令拥有者.
Link copied to clipboard
为此指令分配的权限.
Link copied to clipboard
为 true
时表示 指令前缀 可选
Link copied to clipboard
主指令名. 将会参与构成 Permission.id.
Link copied to clipboard
次要指令名
Link copied to clipboard
自动根据带有 SubCommand 注解的函数签名生成 usage. 也可以被覆盖.