JCompositeCommand

abstract class JCompositeCommand @JvmOverloads constructor(owner: CommandOwner, primaryName: String, secondaryNames: String, parentPermission: Permission) : 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 被调用了")
}

// 支持 Image 类型, 需在聊天中执行此指令.
@SubCommand
public void test(CommandSender sender, Image image) { // 执行 "/manage test <一张图片>" 时调用这个方法
sender.sendMessage("/manage image 被调用了, 图片是 " + image.imageId)
}
}

Kotlin 示例查看 CompositeCommand

See also

Constructors

JCompositeCommand
Link copied to clipboard
fun JCompositeCommand(owner: CommandOwner, primaryName: String, vararg secondaryNames: String, parentPermission: Permission = owner.parentPermission)

Properties

context
Link copied to clipboard
override val context: CommandArgumentContext
description
Link copied to clipboard
override var description: String

指令描述, 用于显示在 BuiltInCommands.HelpCommand

overloads
Link copied to clipboard

指令可能的参数列表.

owner
Link copied to clipboard
abstract val owner: CommandOwner

指令拥有者.

permission
Link copied to clipboard
override var permission: Permission

为此指令分配的权限.

prefixOptional
Link copied to clipboard
override var prefixOptional: Boolean = false

true 时表示 指令前缀 可选

primaryName
Link copied to clipboard
abstract val primaryName: String

主指令名. 将会参与构成 Permission.id.

secondaryNames
Link copied to clipboard
abstract val secondaryNames: Array<out String>

次要指令名

usage
Link copied to clipboard
open override val usage: String

自动根据带有 SubCommand 注解的函数签名生成 usage. 也可以被覆盖.