# Controller 进阶特性
# QMsg 注解
我们先来看一看 QMsg 注解的结构。
annotation class QMsg(
// 回复消息时 At 对方。
val at: Boolean = false,
// 回复消息时使用回复功能,回复消息。
val reply: Boolean = false,
// 如果 at 为 true 时,回复消息 At 对方并换行。
val atNewLine: Boolean = false,
// 声明本 Action 必须 @机器人,或者直呼机器人名字触发。
val mastAtBot: Boolean = false,
// 回复消息间隔时间自动撤回。
val recall: Long = 0,
// 完全匹配路由,当下级存在内容时不匹配本命令。
val forceMatch: Boolean = false,
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
通过注释,我们可以很清楚的看到 QMsg 注解的结构。
同时也很清晰的理解 QMsg 注解的作用。
当您有需要的时候可以直接通过为 Action 方法声明 QMsg 注解并书写相应声明而实现功能。
# 单 Action 发送多条消息
如果您有一个 Action 中发送多条消息的需求,您可以通过构建并返回一个 Object 数组来快速实现。
您也可以在多条 Message 中穿插 Int 与 Long,来指定多条 Message 之间的发送间隔。
发送间隔单位为毫秒。
new Object(){message1, 1000, message2, 5000, message3};
1
在这条示例代码中,当 Action 执行完毕时,会立即发送 message1,并间隔 1 秒后发送 message2,再次间隔 5 秒后发送 message3。
返回的 Object 数据将接受如下数据类型:
- Int(作为时间间隔)
- Long(作为时间间隔)
- String(作为消息,可根据配置作为 RainCodeString 解析)
- MessageItem(会被自动构建为 Message 并发送)
- Message(作为消息,可正常触发自动撤回)
- MessageLineQ(会被自动解析为 Message,然后发送)
当出现不符合如上规则的内容时,将自动调用其 toString 方法,并作为 String 参数使用。