mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-05 15:11:15 +00:00
Moved action example files into a new 'example' directory and updated all imports accordingly. Removed the monolithic 'examples.ts' and redefined ActionExamples in OneBotAction.ts to only include common error codes. This improves code organization and maintainability.
45 lines
1.9 KiB
TypeScript
45 lines
1.9 KiB
TypeScript
import { OneBotAction } from '@/napcat-onebot/action/OneBotAction';
|
|
import { ActionName } from '@/napcat-onebot/action/router';
|
|
import { Static, Type } from '@sinclair/typebox';
|
|
import { GoCQHTTPActionsExamples } from '../example/GoCQHTTPActionsExamples';
|
|
|
|
export const GoCQHTTPDeleteFriendPayloadSchema = Type.Object({
|
|
friend_id: Type.Optional(Type.Union([Type.String(), Type.Number()], { description: '好友 QQ 号' })),
|
|
user_id: Type.Optional(Type.Union([Type.String(), Type.Number()], { description: '用户 QQ 号' })),
|
|
temp_block: Type.Optional(Type.Boolean({ description: '是否加入黑名单' })),
|
|
temp_both_del: Type.Optional(Type.Boolean({ description: '是否双向删除' })),
|
|
});
|
|
|
|
export type GoCQHTTPDeleteFriendPayload = Static<typeof GoCQHTTPDeleteFriendPayloadSchema>;
|
|
|
|
export class GoCQHTTPDeleteFriend extends OneBotAction<GoCQHTTPDeleteFriendPayload, any> {
|
|
override actionName = ActionName.GoCQHTTP_DeleteFriend;
|
|
override payloadSchema = GoCQHTTPDeleteFriendPayloadSchema;
|
|
override returnSchema = Type.Any();
|
|
override actionSummary = '删除好友';
|
|
override actionDescription = '从好友列表中删除指定用户';
|
|
override actionTags = ['Go-CQHTTP'];
|
|
override payloadExample = GoCQHTTPActionsExamples.GoCQHTTPDeleteFriend.payload;
|
|
override returnExample = GoCQHTTPActionsExamples.GoCQHTTPDeleteFriend.response;
|
|
|
|
async _handle (payload: GoCQHTTPDeleteFriendPayload) {
|
|
const uin = payload.friend_id ?? payload.user_id ?? '';
|
|
const uid = await this.core.apis.UserApi.getUidByUinV2(uin.toString());
|
|
|
|
if (!uid) {
|
|
return {
|
|
valid: false,
|
|
message: '好友不存在',
|
|
};
|
|
}
|
|
const isBuddy = await this.core.apis.FriendApi.isBuddy(uid);
|
|
if (!isBuddy) {
|
|
return {
|
|
valid: false,
|
|
message: '不是好友',
|
|
};
|
|
}
|
|
return await this.core.apis.FriendApi.delBuddy(uid, payload.temp_block, payload.temp_both_del);
|
|
}
|
|
}
|