Fraqv0.14.0

配置指令触发方式

fraq.yml 中,可以通过修改 activation 字段来改变指令的触发方式,例如要求用户先 @ 机器人或者使用特定前缀才能触发指令,从而避免其他人的消息意外触发插件。

触发方式

Fraq 支持以下几种触发方式:

触发方式含义
direct不需要任何先导条件即可触发(默认行为)
mention需要 @ 当前机器人触发
{ type: 'prefix', prefix: '/' }需要用指定文本前缀触发,例如 /ping 中的 /
{ type: 'mention', prefix: '/' }需要先 @ 当前机器人并使用文本前缀,例如 @bot /ping

directmention 可以用字符串简写。触发方式在消息中的匹配位置详见命令路由中的"触发方式"

简写形式

如果你希望所有指令都使用同一种触发方式,可以直接在 activation 字段下填写触发方式。例如,让所有指令都需要先 @ 机器人才能触发:

activation: mention

也可以填写一个由多种触发方式组成的数组,数组中的触发方式是"或"的关系,满足其中任意一种即可触发。例如,让所有指令都可以通过 @ 机器人或者使用 / 前缀来触发:

activation:
  - mention
  - { type: 'prefix', prefix: '/' }

如果不配置 activation,则默认使用 direct 触发方式。

针对特定指令覆盖

如果你希望针对不同的指令设置不同的触发方式,可以使用 defaultoverrides 字段。default 指定默认的触发方式,overrides 是一个数组,其中每个元素包含 matchrule。Fraq 会按照 overrides 的顺序依次匹配,第一个匹配成功的 rule 会被应用;如果没有匹配成功,则使用 default

match 支持以下属性,所有指定的属性都必须同时满足:

属性含义
plugin匹配指令所属的插件名,可以是字符串或字符串数组
context匹配指令所在的 Context 名,可以是字符串或字符串数组
tag匹配指令的标签(由插件的 .tag() 方法设置),可以是字符串或字符串数组
command匹配指令名(仅对 command 路由生效),可以是字符串或字符串数组

例如,让 statusretrieve 插件的指令使用 / 前缀触发,其他指令都需要先 @ 机器人:

activation:
  default: mention
  overrides:
    - match:
        plugin: [status, retrieve]
      rule: { type: 'prefix', prefix: '/' }

也可以基于标签来匹配。例如,让所有带有 admin 标签的指令必须先 @ 机器人并使用 / 前缀触发:

activation:
  default: direct
  overrides:
    - match:
        tag: admin
      rule: { type: 'mention', prefix: '/' }

关于路由标签和元信息的详细介绍可以参考开发文档中的相关章节。一般而言,插件会在 README 中说明它们的指令是否带有特定的标签。

On this page