Compare commits

...

13 Commits

Author SHA1 Message Date
手瓜一十雪
8248011a12 fix: #667 2024-12-29 11:54:09 +08:00
手瓜一十雪
5f454456d2 fix: #655 #663 2024-12-29 11:47:09 +08:00
手瓜一十雪
e99a619c23 Merge pull request #665 from clansty/feat/group_name
fix: wrong notice_type sub_type
2024-12-28 21:42:14 +08:00
Clansty
1fc791bb68 fix: wrong notice_type sub_type 2024-12-28 21:40:32 +08:00
手瓜一十雪
f1d83f7c16 Merge pull request #664 from clansty/feat/group_name
feat: 群名称变更事件
2024-12-28 21:05:50 +08:00
Clansty
527bb72bcf feat: 群名称变更事件 2024-12-28 20:54:41 +08:00
手瓜一十雪
d78409fd07 Merge pull request #662 from Shua-github/main
新增send_poke
2024-12-27 15:16:11 +08:00
手瓜一十雪
d5e7e8944f feat: send_poke 2024-12-27 15:14:57 +08:00
Shua-github
fb405a5c1c all_poke替换成send_poke 2024-12-27 13:15:10 +08:00
Shua-github
a9e471deca 新增all_poke 2024-12-27 00:24:35 +08:00
Mlikiowa
9cd15ae337 release: v4.2.42 2024-12-26 12:37:35 +00:00
手瓜一十雪
8ed4cc4b0a feat: send_packet 2024-12-26 20:36:53 +08:00
Mlikiowa
a62de441cf release: v4.2.41 2024-12-26 05:31:09 +00:00
11 changed files with 91 additions and 9 deletions

View File

@@ -4,7 +4,7 @@
"name": "NapCatQQ",
"slug": "NapCat.Framework",
"description": "高性能的 OneBot 11 协议实现",
"version": "4.2.40",
"version": "4.2.42",
"icon": "./logo.png",
"authors": [
{

View File

@@ -2,7 +2,7 @@
"name": "napcat",
"private": true,
"type": "module",
"version": "4.2.40",
"version": "4.2.42",
"scripts": {
"build:universal": "npm run build:webui && vite build --mode universal || exit 1",
"build:framework": "npm run build:webui && vite build --mode framework || exit 1",

View File

@@ -1 +1 @@
export const napCatVersion = '4.2.40';
export const napCatVersion = '4.2.42';

View File

@@ -23,7 +23,9 @@ export class PacketClientSession {
get operation() {
return this.context.operation;
}
get client() {
return this.context.client;
}
// TODO: global message element adapter (?
get msgConverter() {
return this.context.msgConverter;

View File

@@ -0,0 +1,21 @@
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
const SchemaData = Type.Object({
cmd: Type.String(),
data: Type.String(),
rsp: Type.Union([Type.String(), Type.Boolean()], { default: true }),
});
type Payload = Static<typeof SchemaData>;
export class SendPacket extends GetPacketStatusDepends<Payload, any> {
payloadSchema = SchemaData;
actionName = ActionName.SendPacket;
async _handle(payload: Payload) {
const rsp = typeof payload.rsp === 'boolean' ? payload.rsp : payload.rsp === 'true';
const data = await this.core.apis.PacketApi.pkt.client.sendOidbPacket({ cmd: payload.cmd, data: payload.data as any }, rsp);
return typeof data === 'object' ? data.toString('hex') : undefined;
}
}

View File

@@ -103,7 +103,9 @@ import { GetAiCharacters } from "@/onebot/action/extends/GetAiCharacters";
import { GetGuildList } from './guild/GetGuildList';
import { GetGuildProfile } from './guild/GetGuildProfile';
import { GetClientkey } from './extends/GetClientkey';
import { SendPacket } from './extends/SendPacket';
import { SendPoke } from "@/onebot/action/packet/SendPoke";
export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCore) {
const actionHandlers = [
@@ -218,6 +220,8 @@ export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCo
new GetAiRecord(obContext, core),
new SendGroupAiRecord(obContext, core),
new GetAiCharacters(obContext, core),
new SendPacket(obContext, core),
new SendPoke(obContext, core),
];
type HandlerUnion = typeof actionHandlers[number];

View File

@@ -0,0 +1,23 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus";
import { Static, Type } from '@sinclair/typebox';
const SchemaData = Type.Object({
group_id: Type.Optional(Type.Union([Type.Number(), Type.String()])),
user_id: Type.Union([Type.Number(), Type.String()]),
});
type Payload = Static<typeof SchemaData>;
export class SendPoke extends GetPacketStatusDepends<Payload, any> {
actionName = ActionName.SendPoke;
payloadSchema = SchemaData;
async _handle(payload: Payload) {
if (payload.group_id) {
this.core.apis.PacketApi.pkt.operation.GroupPoke(+payload.group_id, +payload.user_id);
} else {
this.core.apis.PacketApi.pkt.operation.FriendPoke(+payload.user_id);
}
}
}

View File

@@ -137,7 +137,7 @@ export const ActionName = {
SetGroupSign: "set_group_sign",
SendGroupSign: "send_group_sign",
SendPacket: "send_packet",
GetMiniAppArk: "get_mini_app_ark",
// UploadForwardMsg : "upload_forward_msg",
GetAiRecord: "get_ai_record",
@@ -145,4 +145,6 @@ export const ActionName = {
SendGroupAiRecord: "send_group_ai_record",
GetClientkey: "get_clientkey",
SendPoke: 'send_poke',
} as const;

View File

@@ -8,6 +8,8 @@ import {
NapCatCore,
NTGrayTipElementSubTypeV2,
RawMessage,
TipGroupElement,
TipGroupElementType,
} from '@/core';
import { NapCatOneBot11Adapter } from '@/onebot';
import { OB11GroupBanEvent } from '@/onebot/event/notice/OB11GroupBanEvent';
@@ -19,6 +21,7 @@ import { OB11GroupPokeEvent } from '@/onebot/event/notice/OB11PokeEvent';
import { OB11GroupEssenceEvent } from '@/onebot/event/notice/OB11GroupEssenceEvent';
import { OB11GroupTitleEvent } from '@/onebot/event/notice/OB11GroupTitleEvent';
import { OB11GroupUploadNoticeEvent } from '../event/notice/OB11GroupUploadNoticeEvent';
import { OB11GroupNameEvent } from '../event/notice/OB11GroupNameEvent';
import { pathToFileURL } from 'node:url';
import { FileNapCatOneBotUUID } from '@/common/helper';
@@ -204,11 +207,25 @@ export class OneBotGroupApi {
);
}
async parseGroupElement(msg: RawMessage, element: TipGroupElement, elementWrapper: GrayTipElement) {
if (element.type === TipGroupElementType.KGROUPNAMEMODIFIED) {
this.core.context.logger.logDebug('收到群名称变更事件', element);
return new OB11GroupNameEvent(
this.core,
parseInt(msg.peerUid),
parseInt(await this.core.apis.UserApi.getUinByUidV2(element.memberUid)),
element.groupName,
);
} else if (element.type === TipGroupElementType.KSHUTUP) {
let event = await this.parseGroupBanEvent(msg.peerUid, elementWrapper);
return event;
}
}
async parseGrayTipElement(msg: RawMessage, grayTipElement: GrayTipElement) {
if (grayTipElement.subElementType === NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_GROUP) {
// 解析群组事件 由sysmsg解析
// return await this.parseGroupElement(msg, grayTipElement.groupElement, grayTipElement);
return await this.parseGroupElement(msg, grayTipElement.groupElement, grayTipElement);
} else if (grayTipElement.subElementType === NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_XMLMSG) {
// 筛选出表情回应 事件
if (grayTipElement.xmlElement?.templId === '10382') {

View File

@@ -990,7 +990,7 @@ export class OneBotMsgApi {
if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) {
const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent);
this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch();
const operatorUid = groupChange.operatorInfo?.toString();
const operatorUid = groupChange.operatorInfo ? Buffer.from(groupChange.operatorInfo).toString() : '';
return new OB11GroupIncreaseEvent(
this.core,
groupChange.groupUin,

View File

@@ -0,0 +1,13 @@
import { OB11GroupNoticeEvent } from './OB11GroupNoticeEvent';
import { NapCatCore } from '@/core';
export class OB11GroupNameEvent extends OB11GroupNoticeEvent {
notice_type = 'notify';
sub_type = 'group_name';
name_new: string;
constructor(core: NapCatCore, groupId: number, userId: number, nameNew: string) {
super(core, groupId, userId);
this.name_new = nameNew;
}
}