From d525f9b03d21fb57f6b29ff274edb04274720e0f 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: Sat, 22 Nov 2025 13:14:46 +0800 Subject: [PATCH] Refactor and standardize share and message history APIs Standardized field names (e.g., 'reverseOrder' to 'reverse_order', 'phoneNumber' to 'phone_number') and added new action names and classes for sharing contacts and group cards (SendArkShare, SendGroupArkShare). Deprecated old action names, updated API schemas and routes, and ensured backward compatibility for legacy fields. Updated frontend API definitions to match backend changes. --- .../action/extends/ShareContact.ts | 25 +++++++++++++------ .../action/go-cqhttp/GetFriendMsgHistory.ts | 5 ++-- .../action/go-cqhttp/GetGroupMsgHistory.ts | 5 ++-- packages/napcat-onebot/action/index.ts | 4 ++- packages/napcat-onebot/action/router.ts | 7 ++++-- .../src/const/ob_api/message/index.ts | 4 +-- .../src/const/ob_api/user.ts | 6 ++--- 7 files changed, 37 insertions(+), 19 deletions(-) diff --git a/packages/napcat-onebot/action/extends/ShareContact.ts b/packages/napcat-onebot/action/extends/ShareContact.ts index aa227114..63d60a67 100644 --- a/packages/napcat-onebot/action/extends/ShareContact.ts +++ b/packages/napcat-onebot/action/extends/ShareContact.ts @@ -6,23 +6,23 @@ import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ user_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), group_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), - phoneNumber: Type.String({ default: '' }), + phone_number: Type.String({ default: '' }), }); type Payload = Static; -export class SharePeer extends OneBotAction { - override actionName = ActionName.SharePeer; + override payloadSchema = SchemaData; async _handle (payload: Payload) { if (payload.group_id) { return await this.core.apis.GroupApi.getGroupRecommendContactArkJson(payload.group_id.toString()); } else if (payload.user_id) { - return await this.core.apis.UserApi.getBuddyRecommendContactArkJson(payload.user_id.toString(), payload.phoneNumber); + return await this.core.apis.UserApi.getBuddyRecommendContactArkJson(payload.user_id.toString(), payload.phone_number); } throw new Error('group_id or user_id is required'); } @@ -31,14 +31,25 @@ export class SharePeer extends OneBotAction; -export class ShareGroupEx extends OneBotAction { - override actionName = ActionName.ShareGroupEx; +export class ShareGroupExBase extends OneBotAction { override payloadSchema = SchemaDataGroupEx; async _handle (payload: PayloadGroupEx) { return await this.core.apis.GroupApi.getArkJsonGroupShare(payload.group_id.toString()); } } +export class ShareGroupEx extends ShareGroupExBase { + override actionName = ActionName.ShareGroupEx; +} +export class SendGroupArkShare extends ShareGroupExBase { + override actionName = ActionName.SendGroupArkShare; +} + +export class SendArkShare extends SharePeerBase { + override actionName = ActionName.SendArkShare; +} \ No newline at end of file diff --git a/packages/napcat-onebot/action/go-cqhttp/GetFriendMsgHistory.ts b/packages/napcat-onebot/action/go-cqhttp/GetFriendMsgHistory.ts index 4c4f90b2..e6758f51 100644 --- a/packages/napcat-onebot/action/go-cqhttp/GetFriendMsgHistory.ts +++ b/packages/napcat-onebot/action/go-cqhttp/GetFriendMsgHistory.ts @@ -14,10 +14,11 @@ const SchemaData = Type.Object({ user_id: Type.String(), message_seq: Type.Optional(Type.String()), count: Type.Number({ default: 20 }), - reverseOrder: Type.Boolean({ default: false }), + reverse_order: Type.Boolean({ default: false }), disable_get_url: Type.Boolean({ default: false }), parse_mult_msg: Type.Boolean({ default: true }), quick_reply: Type.Boolean({ default: false }), + reverseOrder: Type.Boolean({ default: false }),// @deprecated 兼容旧版本 }); type Payload = Static; @@ -35,7 +36,7 @@ export default class GetFriendMsgHistory extends OneBotAction const hasMessageSeq = !payload.message_seq ? !!payload.message_seq : !(payload.message_seq?.toString() === '' || payload.message_seq?.toString() === '0'); const startMsgId = hasMessageSeq ? (MessageUnique.getMsgIdAndPeerByShortId(+payload.message_seq!)?.MsgId ?? payload.message_seq!.toString()) : '0'; const msgList = hasMessageSeq - ? (await this.core.apis.MsgApi.getMsgHistory(peer, startMsgId, +payload.count, payload.reverseOrder)).msgList + ? (await this.core.apis.MsgApi.getMsgHistory(peer, startMsgId, +payload.count, payload.reverse_order || payload.reverseOrder)).msgList : (await this.core.apis.MsgApi.getAioFirstViewLatestMsgs(peer, +payload.count)).msgList; if (msgList.length === 0) throw new Error(`消息${payload.message_seq}不存在`); // 转换序号 diff --git a/packages/napcat-onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/packages/napcat-onebot/action/go-cqhttp/GetGroupMsgHistory.ts index 40b74411..47407b3d 100644 --- a/packages/napcat-onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/packages/napcat-onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -14,10 +14,11 @@ const SchemaData = Type.Object({ group_id: Type.String(), message_seq: Type.Optional(Type.String()), count: Type.Number({ default: 20 }), - reverseOrder: Type.Boolean({ default: false }), + reverse_order: Type.Boolean({ default: false }), disable_get_url: Type.Boolean({ default: false }), parse_mult_msg: Type.Boolean({ default: true }), quick_reply: Type.Boolean({ default: false }), + reverseOrder: Type.Boolean({ default: false }),// @deprecated 兼容旧版本 }); type Payload = Static; @@ -32,7 +33,7 @@ export default class GoCQHTTPGetGroupMsgHistory extends OneBotAction @@ -45,7 +45,7 @@ const oneBotHttpApiUser = { }), }), }, - '/ArkShareGroup': { + '/send_group_ark_share': { description: '获取推荐群聊卡片', request: z.object({ group_id: z.union([z.string(), z.number()]).describe('群聊ID'),