mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
Merge pull request #130 from super1207/main
This commit is contained in:
commit
c9a5ee69cf
@ -96,6 +96,8 @@ export enum NTQQApiMethod {
|
||||
CACHE_CHAT_CLEAR = 'nodeIKernelStorageCleanService/clearChatCacheInfo',
|
||||
|
||||
OPEN_EXTRA_WINDOW = 'openExternalWindow',
|
||||
|
||||
SET_QQ_AVATAR = 'nodeIKernelProfileService/setHeader'
|
||||
}
|
||||
|
||||
enum NTQQApiChannel {
|
||||
@ -894,4 +896,14 @@ export class NTQQApi {
|
||||
}, null]
|
||||
});
|
||||
}
|
||||
|
||||
static async setQQAvatar(filePath: string) {
|
||||
return await callNTQQApi<GeneralCallResult>({
|
||||
methodName: NTQQApiMethod.SET_QQ_AVATAR,
|
||||
args: [{
|
||||
path:filePath
|
||||
}, null],
|
||||
timeoutSecond: 10 // 10秒不一定够
|
||||
});
|
||||
}
|
||||
}
|
@ -35,12 +35,14 @@ import CleanCache from "./CleanCache";
|
||||
import GoCQHTTPUploadGroupFile from "./go-cqhttp/UploadGroupFile";
|
||||
import {GetConfigAction, SetConfigAction} from "./llonebot/Config";
|
||||
import GetGroupAddRequest from "./llonebot/GetGroupAddRequest";
|
||||
import SetQQAvatar from './llonebot/SetQQAvatar'
|
||||
|
||||
export const actionHandlers = [
|
||||
new Debug(),
|
||||
new GetConfigAction(),
|
||||
new SetConfigAction(),
|
||||
new GetGroupAddRequest(),
|
||||
new SetQQAvatar(),
|
||||
// onebot11
|
||||
new SendLike(),
|
||||
new GetMsg(),
|
||||
|
44
src/onebot11/action/llonebot/SetQQAvatar.ts
Normal file
44
src/onebot11/action/llonebot/SetQQAvatar.ts
Normal file
@ -0,0 +1,44 @@
|
||||
import BaseAction from "../BaseAction";
|
||||
import {NTQQApi} from "../../../ntqqapi/ntcall";
|
||||
import {ActionName} from "../types";
|
||||
import { uri2local } from "../../utils";
|
||||
import * as fs from "node:fs";
|
||||
import { checkFileReceived } from "../../../common/utils";
|
||||
// import { log } from "../../../common/utils";
|
||||
|
||||
interface Payload {
|
||||
file: string
|
||||
}
|
||||
|
||||
export default class SetAvatar extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.SetQQAvatar
|
||||
|
||||
protected async _handle(payload: Payload): Promise<null> {
|
||||
const {path, isLocal, errMsg} = (await uri2local(payload.file))
|
||||
if (errMsg){
|
||||
throw `头像${payload.file}设置失败,file字段可能格式不正确`
|
||||
}
|
||||
if (path) {
|
||||
await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断
|
||||
const ret = await NTQQApi.setQQAvatar(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']}`
|
||||
}
|
||||
} else {
|
||||
if (!isLocal){
|
||||
fs.unlink(path, () => {})
|
||||
}
|
||||
throw `头像${payload.file}设置失败,无法获取头像,文件可能不存在`
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
@ -15,6 +15,7 @@ export interface InvalidCheckResult {
|
||||
|
||||
export enum ActionName {
|
||||
GetGroupIgnoreAddRequest = "get_group_ignore_add_request",
|
||||
SetQQAvatar = "set_qq_avatar",
|
||||
GetConfig = "get_config",
|
||||
SetConfig = "set_config",
|
||||
Debug = "llonebot_debug",
|
||||
|
Loading…
x
Reference in New Issue
Block a user