type DomainType = string | RegExp | ((source: string) => any)
指令 (Command)
指令系统是 Koishi 的核心功能之一。通过 ctx.command() 方法获得的是指令的实例。
指令本身的用法详见 上下文 API。它含有下面的方法:
Argv 对象
Argv 对象会作为 cmd.action(), cmd.userFields() 等方法的回调函数中的第一个参数。它具有以下的属性:
- args: 
any[]参数列表 - options: 
{}选项列表 - next: 
NextFunction中间件的 next 回调函数 - session: 
Session所在的会话对象 
cmd.option(name, desc?, config?)
- name: 
string选项的名字 - desc: 
string选项的描述 - config: 
OptionConfig - 返回值: 
this 
为指令添加一个选项。
cmd.removeOption(name)
- name: 
string指令的名称 - 返回值: 
this 
删除一个选项。注意:如果你为一个选项注册了多个别名,则删除任何一个别名都相当于删除整个选项。
cmd.usage(text)
- text: 
string使用方法说明 - 返回值: 
this 
为指令添加使用方法。多次调用此方法只会保留最后一次的定义。
cmd.example(example)
- example: 
text使用示例 - 返回值: 
this 
为指令添加使用示例。多次调用此方法会一并保留并显示在帮助的最后面。
cmd.action(action, prepend?)
- action: 
CommandAction执行函数 - prepend: 
boolean是否前置 - 返回值: 
this 
为指令添加执行函数。
type Awaitable<T> = T extends Promise<unknown> ? T : T | Promise<T>
type CommandAction = (argv: Argv, ...args: any[]) => Awaitable<string | void>
cmd.check(action, append?)
- action: 
CommandAction执行函数 - append: 
boolean是否后置 - 返回值: 
this 
为指令添加检测函数。
cmd.userFields(fields)
- fields: 
FieldCollector<UserField>要请求的用户字段 - 返回值: 
this 
如果指令需要用到用户数据,你可以提前声明,这样有助于合并多次请求,从而提高性能。 参见按需加载章节。
type FieldCollector<K extends string> =
  | Iterable<K>
  | ((argv: Argv, fields: Set<K>) => void)
cmd.channelFields(fields)
- fields: 
FieldCollector<ChannelField>要请求的频道字段 - 返回值: 
this 
如果指令需要用到频道数据,你可以提前声明,这样有助于合并多次请求,从而提高性能。 参见按需加载章节。
cmd.alias(...names)
- names: 
string[]要设置的别名 - 返回值: 
this 
设置指令别名。
cmd.shortcut(name, config?)
- name: 
string | RegExp快捷方式名 - config: 
ShortcutConfig- config.prefix: 
boolean调用时要求保留前缀 - config.fuzzy: 
boolean允许在快捷方式后带参数 - config.greedy: 
boolean将所有后面的内容解析成一个参数 - config.args: 
any[]要带的参数列表,将与传入的参数合并 - config.options: 
Record<string, any>要带的选项列表,将与传入的选项合并 
 - config.prefix: 
 - 返回值: 
this 
设置快捷方式。
cmd.subcommand(name, desc?, config?)
- name: 
string指令名以及可能的参数 - desc: 
string指令的描述 - config: 
CommandConfig指令的配置 - 返回值: 
Command注册或修改的指令 
注册或修改子指令。子指令会继承当期指令的上下文。参见指令的多级结构章节。
cmd.parse(input)
- input: 
Argv令牌化的输入,通常是Argv.parse()的返回值 - 返回值: 
Argv解析结果,包含了args和options等属性 
解析一段指令调用文本。
cmd.execute(argv, next?)
- argv: 
Argv执行配置- argv.args: 
any[]指令的参数列表 - argv.options: 
Record<string, any>指令的选项 - argv.session: 
Session当前的会话对象 
 - argv.args: 
 - next: 
NextFunction所处的中间件的next回调函数 - 返回值: 
Promise<string>执行函数的返回结果,可用于指令插值 
执行当前指令。
cmd.dispose()
- 返回值: 
void 
移除当前指令及其所有子指令。
静态属性和方法
这里包含了与 Command 类相关的静态属性和方法。
Command.defaultConfig
默认的指令配置。
Command.defaultOptionConfig
默认的选项配置。
Command.userFields(fields)
- fields: 
FieldCollector<UserField>要请求的用户字段 
如果所有指令都需要用到用户数据,你可以提前声明,这样有助于合并多次请求,从而提高性能。 参见按需加载章节。
Command.channelFields(fields)
- fields: 
FieldCollector<ChannelField>要请求的频道字段 
如果所有指令都需要用到频道数据,你可以提前声明,这样有助于合并多次请求,从而提高性能。 参见按需加载章节。