其他机制
钩子问答
对于特定的事件,Koishi 还提供了钩子问答机制。
署名机制
为了方便管理,教学系统中的每个问答都是可以被署名的。当一个问答被添加时,添加者将被默认标记为问答的作者。作者可以完全控制自己所署名的问答(修改和删除),但想要控制其他用户署名的问答就必须拥有 3 级权限。
如果想要手动设置作者,可以使用 -w uid
或者 -w @user
的方式。除此以外,Koishi 也允许匿名教学。任何用户都可以通过 -W
来设置匿名问答(但是如果没有 3 级权限,即使是作者本人也无法修改)。这两个选项在搜索中也可以使用,例如用 -W
表示只搜索匿名添加的问答。
除此以外,还有极少数的题目被标记为锁定。标记为锁定的问题无论是否匿名,必须 4 级权限才能修改。可以使用 -f
将一个问答标记为锁定,使用 -F
进行解锁。不过这个功能只是为了保护核心问答不被篡改而设计的,使用这两个选项本身的最低权限也是 4 级,绝大部分玩家都不会有这个权限。
设置触发时段
我们有时也希望问答仅在一定的时间段被触发。此时,可以使用 -t
和 -T
来控制触发的时段。下面给出一些简单的示例:
命令 | 效果 |
---|---|
# 问题 回答 -t 10:00 -T 12:30 | 添加在每天 10:00~12:30 触发的问答 |
# 问题 回答 -t 22 -T 4 | 添加在每天 22 时到次日 4 时触发的问答 |
#123 -t 12:00 | 将问题 123 的触发时段起始时间设置为每天 12:00 |
同样与好感度类似,上述定义为前闭后开区间,且如果 t=T 则认为所有时间都允许触发。在搜索时,我们也用 -t
和 -T
表示允许触发和不允许触发的时间节点。例如,t=15, T=1 可以匹配 t=10, T=20 的问题,但是不能匹配 t=10, T=4 或 t=23, T=11 的问题。
防刷屏机制
为了控制机器人在单一群触发教学问答的频率,我们可以设定当机器人在 1 分钟内在某个群中触发过超过 10 次问答,则 Koishi 将忽略该群内的消息直到这个数字降低到 10 以下为止。这里的数值都是可以配置的:
plugins:
teach:
throttle:
responses: 10
interval: 60000
为了防止多个机器人之间的循环触发,以及部分用户的攻击性刷屏行为,我们可以设定如果最近的 5 次教学问答都由某 1 个用户触发,则 Koishi 将不会继续响应来自该用户的教学问答。该效果会在该用户没有发送除指令调用以外消息之后的 5 分钟内被解除。这里的数值也都是可以配置的:
plugins:
teach:
preventLoop:
length: 5
participants: 1
debounce: 300000