mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-12-19 05:05:44 +08:00
Introduces a typed event emitter for app events in napcat-core, specifically for emoji like events in groups. OlPushService now emits 'event:emoji_like' when a group reaction is detected. napcat-onebot listens for this event and emits corresponding OneBot events. Refactors and adds missing type definitions and improves method formatting for consistency.
38 lines
1.9 KiB
TypeScript
38 lines
1.9 KiB
TypeScript
import { NapProtoMsg } from "napcat-protobuf";
|
|
import { appEvent } from "../packet/handler/eventList";
|
|
import { ReceiveService, ServiceBase } from "../packet/handler/serviceRegister";
|
|
import { GroupReactNotify, PushMsg } from "../packet/transformer/proto";
|
|
|
|
@ReceiveService('trpc.msg.olpush.OlPushService.MsgPush')
|
|
export class OlPushService extends ServiceBase {
|
|
async handler(_seq: number, hex_data: string) {
|
|
const data = new NapProtoMsg(PushMsg).decode(Buffer.from(hex_data, 'hex'));
|
|
if (data.message.contentHead.type === 732 && data.message.contentHead.subType === 16) {
|
|
const pbNotify = data.message.body?.msgContent?.slice(7);
|
|
if (!pbNotify) {
|
|
return;
|
|
}
|
|
// 开始解析Notify
|
|
const notify = new NapProtoMsg(GroupReactNotify).decode(pbNotify);
|
|
if ((notify.field13 ?? 0) === 35) {
|
|
// Group React Notify
|
|
const groupCode = notify.groupUin?.toString() ?? '';
|
|
const operatorUid = notify.groupReactionData?.data?.data?.groupReactionDataContent?.operatorUid ?? '';
|
|
const type = notify.groupReactionData?.data?.data?.groupReactionDataContent?.type ?? 0;
|
|
const seq = notify.groupReactionData?.data?.data?.groupReactionTarget?.seq?.toString() ?? '';
|
|
const code = notify.groupReactionData?.data?.data?.groupReactionDataContent?.code ?? '';
|
|
const count = notify.groupReactionData?.data?.data?.groupReactionDataContent?.count ?? 0;
|
|
const senderUin = await this.core.apis.UserApi.getUinByUidV2(operatorUid);
|
|
appEvent.emit('event:emoji_like', {
|
|
groupId: groupCode,
|
|
senderUin: senderUin,
|
|
emojiId: code,
|
|
msgSeq: seq,
|
|
isAdd: type === 1,
|
|
count: count
|
|
});
|
|
}
|
|
}
|
|
|
|
}
|
|
} |