业务注册与管线装配
消息类型
QQ 服务器传入的消息被 onebot 协议 定义为四类
message:消息事件notice:通知事件request:请求事件meta_event:元事件
详见

onebot-11 - event
https://github.com/botuniverse/onebot-11/blob/master/event/README.md
业务注册
对于常见的事件,比如 message 中的私聊 和 群聊,我们提供了 mapper 装饰器让阁下以一种比较优雅的方法快速实现阁下的函数方法。它们的写法如下:
import { mapper, LagrangeContext, PrivateMessage } from 'lagrange.onebot';
export class ... {
@mapper.onPrivateUser(1193466151)
async handleJinhui(c: LagrangeContext<PrivateMessage>) {
// ...
}
@mapper.onGroup(956419963)
async handleTestGroup(c: LagrangeContext<GroupMessage>) {
// ...
}
}
上面的函数注册了对于用户 1193466151 的私聊事务 和 对于群聊 956419963 的群聊事务。
私聊业务
私聊业务的模板如下
export class ... {
@mapper.onPrivateUser(1193466151)
async handleJinhui(c: LagrangeContext<PrivateMessage>) {
// ...
}
}
需要注意,由于我对装饰器的签名做了泛型约束,所以对于私聊事务而言,它的上下文必须是 LagrangeContext<PrivateMessage>,这代表 c.message 的数据类型为 PrivateMessage.
群聊业务
群聊业务的模板如下
export class ... {
@mapper.onGroup(956419963)
async handleTestGroup(c: LagrangeContext<GroupMessage>) {
// ...
}
}
和私聊一样,群聊的上下文必须是 LagrangeContext<GroupMessage>。
默认情况下(也就是上面写得这样),阁下注册的函数在每次有人在群里发消息时都会被调用。但是很多时候,我们希望只有当有人 @ 机器人时,我们注册的函数才被调用,此时可以启动装饰器的 at 参数:
@mapper.onGroup(956419963, { at: true })
这样,进行装配时,框架会自动帮阁下过滤非 @ 的信息。而且 c.message.message 和 c.message.raw_message 也会被自动过滤掉开头的 @ 字段。
