全局配置里 prefix 和 nickname 都是空的,但即使填了也会直接对群里的消息进行响应。
希望能实现at机器人之后才会对“@昵称”后方的信息进行响应,该如何配置呢?
- 如果你的响应是指令,prefix 提供之后就不会响应了
- 如果不是指令,那么说明某个插件无视了你设置的规则乱响应了,你需要检查是哪个插件响应的,然后修改这个插件的配置使其不响应
试了一下,指令确实要加前缀了。那怎么设置才能让它只对at它的消息有反应呢?
感激不尽
设置一个不会误触的前缀就可以只对 at 他的消息有反应了。
另外一个方法是使用 assign 机制,可以在论坛搜索「assign」查看此方法的详细使用方法。
将 prefix 设置为空数组(注意,不是空着不填而是把数组清空)可以做到只有 at 响应。
prefix 的几种设置:
- 一个空白输入框:任何情况下都尝试触发指令
- 输入框中填写
.
:仅当 at 或者.
开头时触发指令 - 两个输入框,分别填写
.
和。
:仅当 at 或者.
或。
开头时触发指令 - 没有输入框:只有 at 会触发指令
原来还有这样的方法,学到了
啊我明白问题了,这个只对指令生效,我写的对特定文本生效的就不能通过at来触发了。
是的,绝大多数情况下都应该使用指令完成需求,因为指令天生自带调用前缀、指令管理、权限控制、速率限制等等一些列非常方便的功能,其他方法都不会携带这些功能。
那我产生了新的问题,希望没有打扰到您。
我方才提到的特定文本的,是自己写的一个扔骰子的小玩具,期望的需求是:输入3D100的时候,能回复“3D100 = a,b,c”,其中abc分别是3次随机的结果。目前是写的如果收到消息第二个字符是"D"就开始执行随机并输出。
如果用指令的话应该怎么实现呢?
再次感谢
在论坛提问的一大优势就是不会打扰到任何人,这是我们鼓励在论坛提问的原因之一。
如果你使用 Blockly 编程,你需要使用指令进行调用。调用的方法类似:
roll 3D100
如果你使用代码编程,你也可以使用 roll 3D100
的方法进行调用。此外,Koishi 提供了名为 快捷匹配 的功能,使用这个功能可以直接以 3D100
的方法调用指令,可以查阅该功能的文档以了解更多。
值得一提的是,Koishi 的插件市场内已经存在名为 dice 的认证插件,其实现 roll 功能的代码 在这里 ,可供参考。
十分感谢OwO
但我说的3D100只是一个例子,期望里3和100是两个自己输入的参数
目前打算改成指令rd后跟两个参数的格式输入了
我再研究一下,再次感谢<3
翻了一下我之前写的垃圾骰子,真的好垃圾
middleware
也是可以检测是否被 at 或者回复的,我记得以前我用过一个属性是 quoted
,不过刚刚文档没翻到,不知道现在推荐的做法是什么
- 实现一个
roll
指令,接受一个掷骰表达式
参数 - 实现一个
shortcut
(快捷匹配),使用正则表达式匹配形如XdX
的格式,shortcut
可以要求前缀 - 如果有更高级的需求,可以手写中间件,使用 session.execute 调用指令
好哒,我研究一下,谢啦
话说blockly有快捷匹配吗……
没有的,你需要使用普通指令