条件动作
使用 if、all、any 或 case 根据条件执行动作。
单个条件
写在图标 action、菜单事件等接受动作的位置:
# 图标 action 字段
action:
if: 'perm invero.vip'
then: "mmsg '&a你有权限'"
else: "mmsg '&c你没有权限'"if 是条件语句,满足时执行 then,否则执行 else;至少配置一个响应分支。perm 的用法见 Kether 列表。
多个条件
action:
all:
- 'perm invero.vip'
- 'ctx has selected'
then: "mmsg '&a两个条件都满足'"
else: "mmsg '&c条件尚未满足'"| 字段 | 类型 | 必填 | 默认行为 | 说明 |
|---|---|---|---|---|
if | 条件语句文本 | 与其他结构择一 | — | 单个条件满足时选择 then |
if_not(if not) | 条件语句文本 | 与其他结构择一 | — | 单个条件不满足时选择 then |
all | 条件语句列表 | 与其他结构择一 | — | 全部满足时选择 then |
any | 条件语句列表 | 与其他结构择一 | — | 任意一个满足时选择 then |
none | 条件语句列表 | 与其他结构择一 | — | 全部不满足时选择 then |
then | 动作、动作列表或布尔值 | 与 else 至少填写一项 | 不执行满足分支 | 条件满足时执行 |
else | 动作、动作列表或布尔值 | 与 then 至少填写一项 | 不执行不满足分支 | 条件不满足时执行 |
上述字段写在同一个条件动作对象中,条件结构只选一种。列表逐项填写条件语句,then、else 可以填写动作,也可以返回 true 或 false。
数量阈值限制
any 默认判断至少一个条件满足。它的整数参数 atLeast(别名 amount、at_least,默认 1)存在数量判断问题,不能保证“至少 N 条满足”;设置为大于 1 时仍可能只需一个条件满足。
任意一个条件满足使用 any,全部满足使用 all。不要将 atLeast 当作可靠的多条件数量阈值。
按值选择分支
action:
case: 'ctx get category'
when:
vip: "mmsg '&aVIP 分类'"
normal: "mmsg '&f普通分类'"
else: "mmsg '&7请选择分类'"以下字段写在 case 动作对象中:
| 字段 | 类型 | 必填 | 默认行为 | 说明 |
|---|---|---|---|---|
case | 语句文本 | 是 | — | 取得用于比较的值 |
when | 分支映射 | 是 | — | 键是匹配规则,值是对应动作;按配置顺序判断 |
else(default) | 动作、动作列表或布尔值 | 否 | 不执行额外动作 | 没有匹配分支时执行 |
使用 ctx set category to vip 设置分类;上例会发送 VIP 分类消息。case 取得要比较的值,when 按配置顺序选择首个匹配项;没有匹配时执行 else,该默认分支也可写为 default。普通键表示文字相等;数字比较可使用带引号的键 '>= 10'、'< 10'。
控制菜单打开
events:
pre_open:
if: 'perm invero.use'
then: true
else:
- "mmsg '&c无法打开'"
- falsepre_open 的最后结果为 false 时取消打开。示例在权限不满足时发送消息,然后明确返回 false。
展示按钮状态使用子图标,点击时执行的条件写在 action 中。
最后更新于