From 20d1ac9d01f170ec371c01f5d571bd260ceed200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 18 May 2025 20:15:38 +0800 Subject: [PATCH 1/5] fix: #1018 --- src/core/packet/context/operationContext.ts | 6 +++--- src/core/packet/transformer/action/SendPoke.ts | 2 +- src/core/packet/transformer/oidb/oidbBase.ts | 2 +- src/onebot/action/packet/SendPoke.ts | 3 ++- src/onebot/action/user/FriendPoke.ts | 5 +++-- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/core/packet/context/operationContext.ts b/src/core/packet/context/operationContext.ts index 76866709..3f822dad 100644 --- a/src/core/packet/context/operationContext.ts +++ b/src/core/packet/context/operationContext.ts @@ -31,12 +31,12 @@ export class PacketOperationContext { } async GroupPoke(groupUin: number, uin: number) { - const req = trans.SendPoke.build(uin, groupUin); + const req = trans.SendPoke.build(true, uin, groupUin); await this.context.client.sendOidbPacket(req); } - async FriendPoke(uin: number) { - const req = trans.SendPoke.build(uin); + async FriendPoke(uin: number, target?: number) { + const req = trans.SendPoke.build(false, uin, target ?? uin); await this.context.client.sendOidbPacket(req); } diff --git a/src/core/packet/transformer/action/SendPoke.ts b/src/core/packet/transformer/action/SendPoke.ts index 4067e48d..8ff5dc27 100644 --- a/src/core/packet/transformer/action/SendPoke.ts +++ b/src/core/packet/transformer/action/SendPoke.ts @@ -8,7 +8,7 @@ class SendPoke extends PacketTransformer { super(); } - build(peer: number, group?: number): OidbPacket { + build(is_group: boolean, peer: number, group?: number): OidbPacket { const data = new NapProtoMsg(proto.OidbSvcTrpcTcp0XED3_1).encode({ uin: peer, groupUin: group, diff --git a/src/core/packet/transformer/oidb/oidbBase.ts b/src/core/packet/transformer/oidb/oidbBase.ts index 83cf0ee4..632a4b10 100644 --- a/src/core/packet/transformer/oidb/oidbBase.ts +++ b/src/core/packet/transformer/oidb/oidbBase.ts @@ -7,7 +7,7 @@ class OidbBase extends PacketTransformer { super(); } - build(cmd: number, subCmd: number, body: Uint8Array, isUid: boolean = true, isLafter: boolean = false): OidbPacket { + build(cmd: number, subCmd: number, body: Uint8Array, isUid: boolean = true, _isLafter: boolean = false): OidbPacket { const data = new NapProtoMsg(proto.OidbSvcTrpcTcpBase).encode({ command: cmd, subCommand: subCmd, diff --git a/src/onebot/action/packet/SendPoke.ts b/src/onebot/action/packet/SendPoke.ts index 5cdf74c1..f459175c 100644 --- a/src/onebot/action/packet/SendPoke.ts +++ b/src/onebot/action/packet/SendPoke.ts @@ -5,6 +5,7 @@ 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()]), + target_id: Type.Union([Type.Number(), Type.String()]), }); type Payload = Static; @@ -17,7 +18,7 @@ export class SendPoke extends GetPacketStatusDepends { if (payload.group_id) { await this.core.apis.PacketApi.pkt.operation.GroupPoke(+payload.group_id, +payload.user_id); } else { - await this.core.apis.PacketApi.pkt.operation.FriendPoke(+payload.user_id); + await this.core.apis.PacketApi.pkt.operation.FriendPoke(+payload.user_id, payload.target_id ? +payload.target_id : undefined); } } } diff --git a/src/onebot/action/user/FriendPoke.ts b/src/onebot/action/user/FriendPoke.ts index e447a987..2a84ab28 100644 --- a/src/onebot/action/user/FriendPoke.ts +++ b/src/onebot/action/user/FriendPoke.ts @@ -3,7 +3,8 @@ import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ - user_id: Type.Union([Type.Number(), Type.String()]) + user_id: Type.Number(), + target_id: Type.Union([Type.Number(), Type.String()]), }); type Payload = Static; @@ -13,6 +14,6 @@ export class FriendPoke extends GetPacketStatusDepends { override payloadSchema = SchemaData; async _handle(payload: Payload) { - await this.core.apis.PacketApi.pkt.operation.FriendPoke(+payload.user_id); + await this.core.apis.PacketApi.pkt.operation.FriendPoke(payload.user_id, payload.target_id ? +payload.target_id : undefined); } } From 32bc0dd8207e1730e076e1714cbe4cedd77a4e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 18 May 2025 20:16:55 +0800 Subject: [PATCH 2/5] fix --- src/core/packet/transformer/action/SendPoke.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/packet/transformer/action/SendPoke.ts b/src/core/packet/transformer/action/SendPoke.ts index 8ff5dc27..d8b900d5 100644 --- a/src/core/packet/transformer/action/SendPoke.ts +++ b/src/core/packet/transformer/action/SendPoke.ts @@ -8,11 +8,18 @@ class SendPoke extends PacketTransformer { super(); } - build(is_group: boolean, peer: number, group?: number): OidbPacket { + build(is_group: boolean, peer: number, target: number): OidbPacket { + if (is_group) { + const data = new NapProtoMsg(proto.OidbSvcTrpcTcp0XED3_1).encode({ + uin: target, + groupUin: peer, + ext: 0 + }); + return OidbBase.build(0xED3, 1, data); + } const data = new NapProtoMsg(proto.OidbSvcTrpcTcp0XED3_1).encode({ - uin: peer, - groupUin: group, - friendUin: group ?? peer, + uin: target, + friendUin: peer, ext: 0 }); return OidbBase.build(0xED3, 1, data); From 71a15f92fb5da874c044c945aa7c4f174a58e5c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 18 May 2025 20:19:53 +0800 Subject: [PATCH 3/5] fix --- src/onebot/action/packet/SendPoke.ts | 6 +++--- src/onebot/action/user/FriendPoke.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/onebot/action/packet/SendPoke.ts b/src/onebot/action/packet/SendPoke.ts index f459175c..6b47ebe3 100644 --- a/src/onebot/action/packet/SendPoke.ts +++ b/src/onebot/action/packet/SendPoke.ts @@ -3,9 +3,9 @@ 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()]), - target_id: Type.Union([Type.Number(), Type.String()]), + group_id: Type.Optional(Type.String()), + user_id: Type.String(), + target_id: Type.Optional(Type.String()), }); type Payload = Static; diff --git a/src/onebot/action/user/FriendPoke.ts b/src/onebot/action/user/FriendPoke.ts index 2a84ab28..80b024fc 100644 --- a/src/onebot/action/user/FriendPoke.ts +++ b/src/onebot/action/user/FriendPoke.ts @@ -4,7 +4,7 @@ import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ user_id: Type.Number(), - target_id: Type.Union([Type.Number(), Type.String()]), + target_id: Type.Optional(Type.String()), }); type Payload = Static; From 3f60440e72c2025b00e077593de51d1bb36b8f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 18 May 2025 20:24:49 +0800 Subject: [PATCH 4/5] fix --- src/core/packet/context/operationContext.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/packet/context/operationContext.ts b/src/core/packet/context/operationContext.ts index 3f822dad..43161e91 100644 --- a/src/core/packet/context/operationContext.ts +++ b/src/core/packet/context/operationContext.ts @@ -31,7 +31,7 @@ export class PacketOperationContext { } async GroupPoke(groupUin: number, uin: number) { - const req = trans.SendPoke.build(true, uin, groupUin); + const req = trans.SendPoke.build(true, groupUin, uin); await this.context.client.sendOidbPacket(req); } From e9936c5524dd3548ed397bedc6db38415474cd3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 18 May 2025 20:42:03 +0800 Subject: [PATCH 5/5] fix --- src/core/packet/context/operationContext.ts | 13 +++++++--- src/onebot/action/group/GroupPoke.ts | 19 --------------- src/onebot/action/index.ts | 4 +-- src/onebot/action/packet/SendPoke.ts | 27 +++++++++++++++------ src/onebot/action/user/FriendPoke.ts | 19 --------------- 5 files changed, 29 insertions(+), 53 deletions(-) delete mode 100644 src/onebot/action/group/GroupPoke.ts delete mode 100644 src/onebot/action/user/FriendPoke.ts diff --git a/src/core/packet/context/operationContext.ts b/src/core/packet/context/operationContext.ts index 43161e91..b1fee47b 100644 --- a/src/core/packet/context/operationContext.ts +++ b/src/core/packet/context/operationContext.ts @@ -30,13 +30,18 @@ export class PacketOperationContext { return await this.context.client.sendOidbPacket(pkt, rsp); } - async GroupPoke(groupUin: number, uin: number) { - const req = trans.SendPoke.build(true, groupUin, uin); + async GroupPoke(peer: number, uin: number) { + const req = trans.SendPoke.build(true, peer, uin); await this.context.client.sendOidbPacket(req); } - async FriendPoke(uin: number, target?: number) { - const req = trans.SendPoke.build(false, uin, target ?? uin); + async FriendPoke(peer: number, target?: number) { + const req = trans.SendPoke.build(false, peer, target ?? peer); + await this.context.client.sendOidbPacket(req); + } + + async SendPoke(is_group: boolean, peer: number, target?: number) { + const req = trans.SendPoke.build(is_group, peer, target ?? peer); await this.context.client.sendOidbPacket(req); } diff --git a/src/onebot/action/group/GroupPoke.ts b/src/onebot/action/group/GroupPoke.ts deleted file mode 100644 index 8dcc8815..00000000 --- a/src/onebot/action/group/GroupPoke.ts +++ /dev/null @@ -1,19 +0,0 @@ -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.Union([Type.Number(), Type.String()]), - user_id: Type.Union([Type.Number(), Type.String()]), -}); - -type Payload = Static; - -export class GroupPoke extends GetPacketStatusDepends { - override actionName = ActionName.GroupPoke; - override payloadSchema = SchemaData; - - async _handle(payload: Payload) { - await this.core.apis.PacketApi.pkt.operation.GroupPoke(+payload.group_id, +payload.user_id); - } -} diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index 37dc07f5..34294063 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -78,7 +78,6 @@ import { GetGroupFileSystemInfo } from '@/onebot/action/go-cqhttp/GetGroupFileSy import { GetGroupRootFiles } from '@/onebot/action/go-cqhttp/GetGroupRootFiles'; import { GetGroupFilesByFolder } from '@/onebot/action/go-cqhttp/GetGroupFilesByFolder'; import { GetGroupSystemMsg } from './system/GetSystemMsg'; -import { GroupPoke } from './group/GroupPoke'; import { GetUserStatus } from './extends/GetUserStatus'; import { GetRkey } from './extends/GetRkey'; import { SetSpecialTitle } from './extends/SetSpecialTitle'; @@ -86,7 +85,6 @@ import { GetGroupShutList } from './group/GetGroupShutList'; import { GetGroupMemberList } from './group/GetGroupMemberList'; import { GetGroupFileUrl } from '@/onebot/action/file/GetGroupFileUrl'; import { GetPacketStatus } from '@/onebot/action/packet/GetPacketStatus'; -import { FriendPoke } from '@/onebot/action/user/FriendPoke'; import { GetCredentials } from './system/GetCredentials'; import { SendGroupSign, SetGroupSign } from './extends/SetGroupSign'; import { GoCQHTTPGetGroupAtAllRemain } from './go-cqhttp/GetGroupAtAllRemain'; @@ -102,7 +100,7 @@ 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'; +import { FriendPoke, GroupPoke, SendPoke } from '@/onebot/action/packet/SendPoke'; import { SetDiyOnlineStatus } from './extends/SetDiyOnlineStatus'; import { BotExit } from './extends/BotExit'; import { ClickInlineKeyboardButton } from './extends/ClickInlineKeyboardButton'; diff --git a/src/onebot/action/packet/SendPoke.ts b/src/onebot/action/packet/SendPoke.ts index 6b47ebe3..479aa6e6 100644 --- a/src/onebot/action/packet/SendPoke.ts +++ b/src/onebot/action/packet/SendPoke.ts @@ -4,21 +4,32 @@ import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ group_id: Type.Optional(Type.String()), - user_id: Type.String(), + user_id: Type.Optional(Type.String()), target_id: Type.Optional(Type.String()), }); type Payload = Static; - -export class SendPoke extends GetPacketStatusDepends { - override actionName = ActionName.SendPoke; +export class SendPokeBase extends GetPacketStatusDepends { override payloadSchema = SchemaData; async _handle(payload: Payload) { - if (payload.group_id) { - await this.core.apis.PacketApi.pkt.operation.GroupPoke(+payload.group_id, +payload.user_id); - } else { - await this.core.apis.PacketApi.pkt.operation.FriendPoke(+payload.user_id, payload.target_id ? +payload.target_id : undefined); + const target_id = payload.target_id ?? payload.user_id; + const peer_id = payload.group_id ?? payload.user_id; + const is_group = !!payload.group_id; + if (!target_id || !peer_id) { + throw new Error('请检查参数,缺少 user_id 或 group_id'); } + await this.core.apis.PacketApi.pkt.operation.SendPoke(is_group, +peer_id, +target_id); } } + + +export class SendPoke extends SendPokeBase { + override actionName = ActionName.SendPoke; +} +export class GroupPoke extends SendPokeBase { + override actionName = ActionName.GroupPoke; +} +export class FriendPoke extends SendPokeBase { + override actionName = ActionName.FriendPoke; +} diff --git a/src/onebot/action/user/FriendPoke.ts b/src/onebot/action/user/FriendPoke.ts deleted file mode 100644 index 80b024fc..00000000 --- a/src/onebot/action/user/FriendPoke.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ActionName } from '@/onebot/action/router'; -import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; -import { Static, Type } from '@sinclair/typebox'; - -const SchemaData = Type.Object({ - user_id: Type.Number(), - target_id: Type.Optional(Type.String()), -}); - -type Payload = Static; - -export class FriendPoke extends GetPacketStatusDepends { - override actionName = ActionName.FriendPoke; - override payloadSchema = SchemaData; - - async _handle(payload: Payload) { - await this.core.apis.PacketApi.pkt.operation.FriendPoke(payload.user_id, payload.target_id ? +payload.target_id : undefined); - } -}