跳转到正文
iPlugin

条件动作

使用 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无法打开'"
      - false

pre_open 的最后结果为 false 时取消打开。示例在权限不满足时发送消息,然后明确返回 false。

展示按钮状态使用子图标,点击时执行的条件写在 action 中。

最后更新于