From 09a60a2204c02b14e7734a8263d1b9995fc9f914 Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Sun, 20 Oct 2024 23:09:38 +0800 Subject: [PATCH] feat: add `friend_poke` OneBot11 API --- src/core/apis/packet.ts | 4 ++-- src/core/packet/packer.ts | 4 ++-- src/onebot/action/group/GroupPoke.ts | 2 +- src/onebot/action/index.ts | 2 ++ src/onebot/action/types.ts | 1 + src/onebot/action/user/FriendPoke.ts | 22 ++++++++++++++++++++++ 6 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 src/onebot/action/user/FriendPoke.ts diff --git a/src/core/apis/packet.ts b/src/core/apis/packet.ts index 8339091f..dd5a6bb6 100644 --- a/src/core/apis/packet.ts +++ b/src/core/apis/packet.ts @@ -73,8 +73,8 @@ export class NTQQPacketApi { return this.packetSession!.client.sendPacket(cmd, data, rsp); } - async sendPokePacket(group: number, peer: number) { - const data = this.packetSession?.packer.packPokePacket(group, peer); + async sendPokePacket(peer: number, group?: number) { + const data = this.packetSession?.packer.packPokePacket(peer, group); await this.sendPacket('OidbSvcTrpcTcp.0xed3_1', data!, false); } diff --git a/src/core/packet/packer.ts b/src/core/packet/packer.ts index 72858455..5de0c754 100644 --- a/src/core/packet/packer.ts +++ b/src/core/packet/packer.ts @@ -47,11 +47,11 @@ export class PacketPacker { }); } - packPokePacket(group: number, peer: number): PacketHexStr { + packPokePacket(peer: number, group?: number): PacketHexStr { const oidb_0xed3 = new NapProtoMsg(OidbSvcTrpcTcp0XED3_1).encode({ uin: peer, groupUin: group, - friendUin: group, + friendUin: group ?? peer, ext: 0 }); return this.toHexStr(this.packOidbPacket(0xed3, 1, oidb_0xed3)); diff --git a/src/onebot/action/group/GroupPoke.ts b/src/onebot/action/group/GroupPoke.ts index 7c1f0b80..70db5e8f 100644 --- a/src/onebot/action/group/GroupPoke.ts +++ b/src/onebot/action/group/GroupPoke.ts @@ -18,6 +18,6 @@ export class GroupPoke extends GetPacketStatusDepends { payloadSchema = SchemaData; async _handle(payload: Payload) { - await this.core.apis.PacketApi.sendPokePacket(+payload.group_id, +payload.user_id); + await this.core.apis.PacketApi.sendPokePacket(+payload.user_id, +payload.group_id); } } diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index aa361e56..8745827f 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -91,6 +91,7 @@ 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"; export type ActionMap = Map>; @@ -189,6 +190,7 @@ export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCo new FetchUserProfileLike(obContext, core), new GetPacketStatus(obContext, core), new GroupPoke(obContext, core), + new FriendPoke(obContext, core), new GetUserStatus(obContext, core), new GetRkey(obContext, core), new SetSpecialTittle(obContext, core), diff --git a/src/onebot/action/types.ts b/src/onebot/action/types.ts index f9894910..cb299633 100644 --- a/src/onebot/action/types.ts +++ b/src/onebot/action/types.ts @@ -17,6 +17,7 @@ export enum ActionName { // 以下为扩展napcat扩展 Unknown = 'unknown', GroupPoke = 'group_poke', + FriendPoke = 'friend_poke', SharePeer = 'ArkSharePeer', ShareGroupEx = 'ArkShareGroup', RebootNormal = 'reboot_normal',//无快速登录重新启动 diff --git a/src/onebot/action/user/FriendPoke.ts b/src/onebot/action/user/FriendPoke.ts new file mode 100644 index 00000000..5b242fb1 --- /dev/null +++ b/src/onebot/action/user/FriendPoke.ts @@ -0,0 +1,22 @@ +import { ActionName } from '../types'; +import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import {GetPacketStatusDepends} from "@/onebot/action/packet/GetPacketStatus"; + +const SchemaData = { + type: 'object', + properties: { + user_id: { type: ['number', 'string'] }, + }, + required: ['user_id'], +} as const satisfies JSONSchema; + +type Payload = FromSchema; + +export class FriendPoke extends GetPacketStatusDepends { + actionName = ActionName.FriendPoke; + payloadSchema = SchemaData; + + async _handle(payload: Payload) { + await this.core.apis.PacketApi.sendPokePacket(+payload.user_id); + } +}