mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
feat: 群头像设置
This commit is contained in:
src
core
src
onebot11
action
@@ -7,6 +7,9 @@ import { logDebug } from '@/common/utils/log';
|
|||||||
// console.log(JSON.stringify(await NTQQGroupApi.getMemberExtInfo(), null, 2));
|
// console.log(JSON.stringify(await NTQQGroupApi.getMemberExtInfo(), null, 2));
|
||||||
// }, 20000);
|
// }, 20000);
|
||||||
export class NTQQGroupApi {
|
export class NTQQGroupApi {
|
||||||
|
static async setGroupAvatar(gc:string,filePath: string) {
|
||||||
|
return napCatCore.session.getGroupService().setHeader(gc,filePath);
|
||||||
|
}
|
||||||
static async getGroups(forced = false) {
|
static async getGroups(forced = false) {
|
||||||
let [_retData, _updateType, groupList] = await NTEventDispatch.CallNormalEvent
|
let [_retData, _updateType, groupList] = await NTEventDispatch.CallNormalEvent
|
||||||
<(force: boolean) => Promise<any>, (updateType: number, groupList: Group[]) => void>
|
<(force: boolean) => Promise<any>, (updateType: number, groupList: Group[]) => void>
|
||||||
|
@@ -46,6 +46,10 @@ export class NTQQUserApi {
|
|||||||
const ret = await napCatCore.session.getProfileService().setHeader(filePath) as setQQAvatarRet;
|
const ret = await napCatCore.session.getProfileService().setHeader(filePath) as setQQAvatarRet;
|
||||||
return { result: ret?.result, errMsg: ret?.errMsg };
|
return { result: ret?.result, errMsg: ret?.errMsg };
|
||||||
}
|
}
|
||||||
|
static async setGroupAvatar(gc:string,filePath: string) {
|
||||||
|
const ret = await napCatCore.session.getGroupService().setHeader(gc,filePath);
|
||||||
|
return { result: ret?.result, errMsg: ret?.errMsg };
|
||||||
|
}
|
||||||
|
|
||||||
static async getSelfInfo() {
|
static async getSelfInfo() {
|
||||||
|
|
||||||
|
@@ -9,6 +9,7 @@ import {
|
|||||||
import { GeneralCallResult } from '@/core/services/common';
|
import { GeneralCallResult } from '@/core/services/common';
|
||||||
|
|
||||||
export interface NodeIKernelGroupService {
|
export interface NodeIKernelGroupService {
|
||||||
|
setHeader(uid:string,path:string): unknown;
|
||||||
|
|
||||||
addKernelGroupListener(listener: NodeIKernelGroupListener): number;
|
addKernelGroupListener(listener: NodeIKernelGroupListener): number;
|
||||||
|
|
||||||
|
57
src/onebot11/action/extends/SetGroupHeader.ts
Normal file
57
src/onebot11/action/extends/SetGroupHeader.ts
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
import BaseAction from '../BaseAction';
|
||||||
|
import { ActionName, BaseCheckResult } from '../types';
|
||||||
|
import * as fs from 'node:fs';
|
||||||
|
import { NTQQUserApi } from '@/core/apis/user';
|
||||||
|
import { checkFileReceived, uri2local } from '@/common/utils/file';
|
||||||
|
import { NTQQGroupApi } from '@/core';
|
||||||
|
// import { log } from "../../../common/utils";
|
||||||
|
|
||||||
|
interface Payload {
|
||||||
|
file: string,
|
||||||
|
groupCode: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class SetGroupHeader extends BaseAction<Payload, any> {
|
||||||
|
actionName = ActionName.SetGroupHeader;
|
||||||
|
// 用不着复杂检测
|
||||||
|
protected async check(payload: Payload): Promise<BaseCheckResult> {
|
||||||
|
if (!payload.file || typeof payload.file != 'string' || !payload.groupCode || typeof payload.groupCode != 'string') {
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
message: 'file和groupCode字段不能为空或者类型错误',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
valid: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected async _handle(payload: Payload): Promise<any> {
|
||||||
|
const { path, isLocal, errMsg } = (await uri2local(payload.file));
|
||||||
|
if (errMsg) {
|
||||||
|
throw `头像${payload.file}设置失败,file字段可能格式不正确`;
|
||||||
|
}
|
||||||
|
if (path) {
|
||||||
|
await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断
|
||||||
|
const ret = await NTQQGroupApi.setGroupAvatar(payload.groupCode,path);
|
||||||
|
if (!isLocal) {
|
||||||
|
fs.unlink(path, () => { });
|
||||||
|
}
|
||||||
|
if (!ret) {
|
||||||
|
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']}`;
|
||||||
|
// }
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
if (!isLocal) {
|
||||||
|
fs.unlink(path, () => { });
|
||||||
|
}
|
||||||
|
throw `头像${payload.file}设置失败,无法获取头像,文件可能不存在`;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@@ -98,5 +98,6 @@ export enum ActionName {
|
|||||||
DelEssenceMsg = 'delete_essence_msg',
|
DelEssenceMsg = 'delete_essence_msg',
|
||||||
GetRecentContact = 'get_recent_contact',
|
GetRecentContact = 'get_recent_contact',
|
||||||
_MarkAllMsgAsRead = '_mark_all_as_read',
|
_MarkAllMsgAsRead = '_mark_all_as_read',
|
||||||
GetProfileLike = 'get_profile_like'
|
GetProfileLike = 'get_profile_like',
|
||||||
|
SetGroupHeader = "set_group_head"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user