From 2c24422478dc5b08afb6940a0950a8969e77f448 Mon Sep 17 00:00:00 2001 From: idranme Date: Wed, 18 Sep 2024 20:47:45 +0800 Subject: [PATCH] feat: support setting remark when agreeing to a friend request --- src/ntqqapi/api/friend.ts | 14 +++++++------- src/onebot11/action/user/SetFriendAddRequest.ts | 11 ++++++++++- src/onebot11/helper/quickOperation.ts | 12 ++++++++++-- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/ntqqapi/api/friend.ts b/src/ntqqapi/api/friend.ts index 27595f8..b05edce 100644 --- a/src/ntqqapi/api/friend.ts +++ b/src/ntqqapi/api/friend.ts @@ -42,13 +42,7 @@ export class NTQQFriendApi extends Service { return _friends } - async handleFriendRequest(flag: string, accept: boolean) { - const data = flag.split('|') - if (data.length < 2) { - return - } - const friendUid = data[0] - const reqTime = data[1] + async handleFriendRequest(friendUid: string, reqTime: string, accept: boolean) { const session = getSession() if (session) { return session.getBuddyService().approvalFriendRequest({ @@ -194,4 +188,10 @@ export class NTQQFriendApi extends Service { const ret = await invoke('nodeIKernelBuddyService/getBuddyRecommendContactArkJson', [{ uin }, null]) return ret.arkMsg } + + async setBuddyRemark(uid: string, remark: string) { + return await invoke('nodeIKernelBuddyService/setBuddyRemark', [{ + remarkParams: { uid, remark } + }, null]) + } } diff --git a/src/onebot11/action/user/SetFriendAddRequest.ts b/src/onebot11/action/user/SetFriendAddRequest.ts index 65330a5..c87ee76 100644 --- a/src/onebot11/action/user/SetFriendAddRequest.ts +++ b/src/onebot11/action/user/SetFriendAddRequest.ts @@ -12,7 +12,16 @@ export default class SetFriendAddRequest extends BaseAction { protected async _handle(payload: Payload): Promise { const approve = payload.approve?.toString() !== 'false' - await this.ctx.ntFriendApi.handleFriendRequest(payload.flag, approve) + const data = payload.flag.split('|') + if (data.length < 2) { + throw new Error('无效的flag') + } + const uid = data[0] + const reqTime = data[1] + await this.ctx.ntFriendApi.handleFriendRequest(uid, reqTime, approve) + if (payload.remark) { + await this.ctx.ntFriendApi.setBuddyRemark(uid, payload.remark) + } return null } } diff --git a/src/onebot11/helper/quickOperation.ts b/src/onebot11/helper/quickOperation.ts index cf0214e..1f0973f 100644 --- a/src/onebot11/helper/quickOperation.ts +++ b/src/onebot11/helper/quickOperation.ts @@ -112,8 +112,16 @@ async function handleMsg(ctx: Context, msg: OB11Message, quickAction: QuickOpera async function handleFriendRequest(ctx: Context, request: OB11FriendRequestEvent, quickAction: QuickOperationFriendRequest) { if (!isNullable(quickAction.approve)) { - // todo: set remark - ctx.ntFriendApi.handleFriendRequest(request.flag, quickAction.approve).catch(e => ctx.logger.error(e)) + const data = request.flag.split('|') + if (data.length < 2) { + return + } + const uid = data[0] + const reqTime = data[1] + await ctx.ntFriendApi.handleFriendRequest(uid, reqTime, quickAction.approve).catch(e => ctx.logger.error(e)) + if (!isNullable(quickAction.remark)) { + ctx.ntFriendApi.setBuddyRemark(uid, quickAction.remark).catch(e => ctx.logger.error(e)) + } } }