diff --git a/src/onebot/action/extends/SetSelfProfile.ts b/src/onebot/action/extends/SetSelfProfile.ts deleted file mode 100644 index 4c60f0ea..00000000 --- a/src/onebot/action/extends/SetSelfProfile.ts +++ /dev/null @@ -1,32 +0,0 @@ -import BaseAction from '../BaseAction'; -import { ActionName } from '../types'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; - -const SchemaData = { - type: 'object', - properties: { - nick: { type: 'string' }, - longNick: { type: 'string' }, - sex: { type: ['number', 'string'] },//传Sex值?建议传0 - }, - required: ['nick', 'longNick', 'sex'], -} as const satisfies JSONSchema; - -type Payload = FromSchema; - -export class SetSelfProfile extends BaseAction { - actionName = ActionName.SetSelfProfile; - PayloadSchema = SchemaData; - - async _handle(payload: Payload) { - const NTQQUserApi = this.CoreContext.apis.UserApi; - const ret = await NTQQUserApi.modifySelfProfile({ - nick: payload.nick, - longNick: payload.longNick, - sex: parseInt(payload.sex.toString()), - birthday: { birthday_year: '', birthday_month: '', birthday_day: '' }, - location: undefined, - }); - return ret; - } -} diff --git a/src/onebot/action/extends/SetGroupHeader.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts similarity index 72% rename from src/onebot/action/extends/SetGroupHeader.ts rename to src/onebot/action/go-cqhttp/SetGroupPortrait.ts index bfd60f4e..7034d40e 100644 --- a/src/onebot/action/extends/SetGroupHeader.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -7,18 +7,18 @@ import { checkFileReceived, uri2local } from '@/common/utils/file'; interface Payload { file: string, - groupCode: string + group_id: number } -export default class SetGroupHeader extends BaseAction { - actionName = ActionName.SetGroupHeader; +export default class SetGroupPortrait extends BaseAction { + actionName = ActionName.SetGroupPortrait; // 用不着复杂检测 protected async check(payload: Payload): Promise { - if (!payload.file || typeof payload.file != 'string' || !payload.groupCode || typeof payload.groupCode != 'string') { + if (!payload.file || typeof payload.file != 'string' || !payload.group_id || typeof payload.group_id != 'number') { return { valid: false, - message: 'file和groupCode字段不能为空或者类型错误', + message: 'file和group_id字段不能为空或者类型错误', }; } return { @@ -34,7 +34,7 @@ export default class SetGroupHeader extends BaseAction { } if (path) { await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 - const ret = await NTQQGroupApi.setGroupAvatar(payload.groupCode, path); + const ret = await NTQQGroupApi.setGroupAvatar(payload.group_id.toString(), path) as any; if (!isLocal) { fs.unlink(path, () => { }); @@ -43,11 +43,11 @@ export default class SetGroupHeader extends BaseAction { throw `头像${payload.file}设置失败,api无返回`; } // log(`头像设置返回:${JSON.stringify(ret)}`) - // if (ret['result'] == 1004022) { - // throw `头像${payload.file}设置失败,文件可能不是图片格式`; - // } else if (ret['result'] != 0) { - // throw `头像${payload.file}设置失败,未知的错误,${ret['result']}:${ret['errMsg']}`; - // } + if (ret['result'] == 1004022) { + throw `头像${payload.file}设置失败,文件可能不是图片格式或权限不足`; + } else if (ret['result'] != 0) { + throw `头像${payload.file}设置失败,未知的错误,${ret['result']}:${ret['errMsg']}`; + } return ret; } else { if (!isLocal) { diff --git a/src/onebot/action/go-cqhttp/SetQQProfile.ts b/src/onebot/action/go-cqhttp/SetQQProfile.ts new file mode 100644 index 00000000..73334115 --- /dev/null +++ b/src/onebot/action/go-cqhttp/SetQQProfile.ts @@ -0,0 +1,34 @@ +import BaseAction from '../BaseAction'; +import { ActionName } from '../types'; +import { FromSchema, JSONSchema } from 'json-schema-to-ts'; + +const SchemaData = { + type: 'object', + properties: { + nickname: { type: 'string' }, + personal_note: { type: 'string' }, + sex: { type: ['number', 'string'] },//传Sex值?建议传0 + }, + required: ['nickname'], +} as const satisfies JSONSchema; + +type Payload = FromSchema; + +export class SetQQProfile extends BaseAction { + actionName = ActionName.SetQQProfile; + PayloadSchema = SchemaData; + + async _handle(payload: Payload) { + const NTQQUserApi = this.CoreContext.apis.UserApi; + const self = this.CoreContext.selfInfo; + const OldProfile = await NTQQUserApi.getUserDetailInfo(self.uid); + const ret = await NTQQUserApi.modifySelfProfile({ + nick: payload.nickname, + longNick: payload?.personal_note ?? OldProfile?.longNick!, + sex: parseInt(payload?.sex ? payload?.sex.toString() : OldProfile?.sex!.toString()), + birthday: { birthday_year: OldProfile?.birthday_year!.toString(), birthday_month: OldProfile?.birthday_month!.toString(), birthday_day: OldProfile?.birthday_day!.toString() }, + location: undefined, + }); + return ret; + } +} diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index 7ff7da6d..a486c044 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -61,7 +61,7 @@ import { TranslateEnWordToZn } from './extends/TranslateEnWordToZn'; import { SetGroupFileFolder } from './file/SetGroupFileFolder'; import { DelGroupFile } from './file/DelGroupFile'; import { DelGroupFileFolder } from './file/DelGroupFileFolder'; -import { SetSelfProfile } from './extends/SetSelfProfile'; +import { SetQQProfile } from './go-cqhttp/SetQQProfile' import { ShareGroupEx, SharePeer } from './extends/ShareContact'; import { CreateCollection } from './extends/CreateCollection'; import { SetLongNick } from './extends/SetLongNick'; @@ -69,7 +69,7 @@ import DelEssenceMsg from './group/DelEssenceMsg'; import SetEssenceMsg from './group/SetEssenceMsg'; import GetRecentContact from './user/GetRecentContact'; import { GetProfileLike } from './extends/GetProfileLike'; -import SetGroupHeader from './extends/SetGroupHeader'; +import SetGroupPortrait from './go-cqhttp/SetGroupPortrait'; import { FetchCustomFace } from './extends/FetchCustomFace'; import GoCQHTTPUploadPrivateFile from './go-cqhttp/UploadPrivareFile'; import { FetchEmojiLike } from './extends/FetchEmojiLike'; @@ -86,7 +86,7 @@ export function createActionMap(onebotContext: NapCatOneBot11Adapter, coreContex const actionHandlers = [ new FetchEmojiLike(onebotContext, coreContext), new GetFile(onebotContext, coreContext), - new SetSelfProfile(onebotContext, coreContext), + new SetQQProfile(onebotContext, coreContext), new ShareGroupEx(onebotContext, coreContext), new SharePeer(onebotContext, coreContext), new CreateCollection(onebotContext, coreContext), @@ -161,7 +161,7 @@ export function createActionMap(onebotContext: NapCatOneBot11Adapter, coreContex new GetRecentContact(onebotContext, coreContext), new MarkAllMsgAsRead(onebotContext, coreContext), new GetProfileLike(onebotContext, coreContext), - new SetGroupHeader(onebotContext, coreContext), + new SetGroupPortrait(onebotContext, coreContext), new FetchCustomFace(onebotContext, coreContext), new GoCQHTTPUploadPrivateFile(onebotContext, coreContext), new GetGuildProfile(onebotContext, coreContext), diff --git a/src/onebot/action/types.ts b/src/onebot/action/types.ts index 26204339..2bfbcd28 100644 --- a/src/onebot/action/types.ts +++ b/src/onebot/action/types.ts @@ -91,7 +91,7 @@ export enum ActionName { GetOnlineClient = 'get_online_clients', OCRImage = 'ocr_image', IOCRImage = '.ocr_image', - SetSelfProfile = 'set_self_profile', + SetQQProfile = 'set_qq_profile', CreateCollection = 'create_collection', GetCollectionList = 'get_collection_list', SetLongNick = 'set_self_longnick', @@ -100,7 +100,7 @@ export enum ActionName { GetRecentContact = 'get_recent_contact', _MarkAllMsgAsRead = '_mark_all_as_read', GetProfileLike = 'get_profile_like', - SetGroupHeader = 'set_group_head', + SetGroupPortrait = 'set_group_portrait', FetchCustomFace = 'fetch_custom_face', GOCQHTTP_UploadPrivateFile = 'upload_private_file', TestApi01 = 'test_api_01',