# 内置 Matcher 列表
所有内置 Matcher 都在 dolores::matchers
命名空间中。
# all
要求事件同时满足若干个特定 Matcher
- 用于:任意事件
- 示例:
all(contains("a"), contains("b"), contains("c"))
# type
要求事件是特定类型
- 用于:任意事件
- 示例:
type<cq::PrivateMessageEvent>
# unblocked
要求事件没有被阻止传递
- 用于:任意事件
- 示例:
unblocked()
# startswith
要求消息以特定字符串开头
- 用于:消息事件,属于 MessageMatcher
- 示例:
startswith("prefix")
# endswith
要求消息以特定字符串结尾
- 用于:消息事件,属于 MessageMatcher
- 示例:
endswith("suffix")
# contains
要求消息包含特定字符串
- 用于:消息事件,属于 MessageMatcher
- 示例:
contains("sub string")
# command
要求消息是命令调用
- 用于:消息事件,属于 MessageMatcher
- 示例:
command("echo") command({"echo", "say"}) command("echo", {"", "/", "!"}) // 可通过第二个参数修改命令起始符
# to_me
要求消息@了机器人
- 用于:消息事件,属于 MessageMatcher
- 示例:
to_me() to_me(command("echo")) // 可接受 MessageMatcher 作为参数,从而在去除开头或结尾的@之后进行匹配 to_me(command("hello") || startswith("你好"))
# user
要求事件由特定用户触发(不限制私聊或群)
- 用于:任意事件
- 示例:
user({10001000, 10001001})
# user::exclude
要求事件不是由特定用户触发(不限制私聊或群)
- 用于:任意事件
- 示例:
user::exclude({10001000, 10001001})
# direct
要求事件由私聊触发
- 用于:任意事件
- 示例:
direct() direct({10001000, 10001001}) // 可要求特定用户,类似 user 条件
# direct::exclude
要求事件不是由特定用户私聊触发
- 用于:任意事件
- 示例:
direct::exclude({10001000, 10001001})
# group
要求事件由群触发
- 用于:任意事件
- 示例:
group() group({10001000, 10001001}) // 可要求特定群,类似 user 条件
# group::exclude
要求事件不是由特定群触发
- 用于:任意事件
- 示例:
group::exclude({10001000, 10001001})
# discuss
要求事件由讨论组触发
- 用于:任意事件
- 示例:
discuss()
# group_roles
要求事件由群特定角色触发(不限制非群事件)
- 用于:任意事件
- 示例:
group_roles({cq::GroupRole::MEMBER}) // 要求事件由普通群成员触发 group_roles({cq::GroupRole::OWNER}) // 要求事件由群主触发
# admin
要求事件由群管理员触发(不限制非群事件)
- 用于:任意事件
- 示例:
admin() // 等价于 group_roles({cq::GroupRole::ADMIN, cq::GroupRole::OWNER})
# owner
要求事件由群主触发(不限制非群事件)
- 用于:任意事件
- 示例:
owner() // 等价于 group_roles({cq::GroupRole::OWNER})