executeCommand

open suspend fun executeCommand(caller: CommandSender, message: Message, checkPermission: Boolean = true): CommandExecuteResult

解析并执行一个指令.

指令解析流程

  1. CommandCallParserMessageChain 解析为 CommandCall

  2. CommandCallResolverCommandCall 解析为 ResolvedCommandCall

  3. message 的第一个消息元素的 内容 被作为指令名, 在已注册指令列表中搜索. (包含 Command.prefixOptional 相关的处理)

  4. 参数语法分析. 在当前的实现下, message 被以空格和 SingleMessage 分割. 如 "MessageChain("foo bar", Image, " test")" 被分割为 "foo", "bar", Image, "test". 注意: 字符串与消息元素之间不需要空格, 会被强制分割. 如 "barmirai:image:" 会被分割为 "bar" 和 Image 类型的消息元素.

  5. 参数解析. 各类型指令实现不同. 详见 RawCommand, CompositeCommand, SimpleCommand

扩展

参数语法分析过程可能会被扩展, 插件可以自定义处理方式 (CommandCallParser), 因此可能不会简单地使用空格分隔.

Return

执行结果

Parameters

message

一条完整的指令. 如 "/managers add 123456.123456"

checkPermission

true 时检查权限

See also


open suspend fun executeCommand(sender: CommandSender, command: Command, arguments: Message = emptyMessageChain(), checkPermission: Boolean = true): CommandExecuteResult

执行一个确切的指令

Parameters

command

目标指令

arguments

参数列表

See also