mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
54179cb686 | ||
![]() |
c9a5ee69cf | ||
![]() |
e348103e84 |
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"manifest_version": 4,
|
||||
"type": "extension",
|
||||
"name": "LLOneBot v3.15.0",
|
||||
"name": "LLOneBot v3.15.1",
|
||||
"slug": "LLOneBot",
|
||||
"description": "LiteLoaderQQNT的OneBotApi,不支持商店在线更新",
|
||||
"version": "3.15.0",
|
||||
"version": "3.15.1",
|
||||
"icon": "./icon.jpg",
|
||||
"authors": [
|
||||
{
|
||||
|
@@ -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",
|
||||
|
@@ -91,7 +91,7 @@ export class OB11Constructor {
|
||||
let atUid = element.textElement.atNtUid
|
||||
let atQQ = element.textElement.atUid
|
||||
if (!atQQ || atQQ === "0") {
|
||||
const atMember = await getGroupMember(msg.peerUin, null, atUid)
|
||||
const atMember = await getGroupMember(msg.peerUin, atUid)
|
||||
if (atMember) {
|
||||
atQQ = atMember.uin
|
||||
}
|
||||
@@ -257,13 +257,13 @@ export class OB11Constructor {
|
||||
if (groupElement.type == TipGroupElementType.memberIncrease) {
|
||||
log("收到群成员增加消息", groupElement)
|
||||
await sleep(1000);
|
||||
const member = await getGroupMember(msg.peerUid, null, groupElement.memberUid);
|
||||
const member = await getGroupMember(msg.peerUid, groupElement.memberUid);
|
||||
let memberUin = member?.uin;
|
||||
if (!memberUin) {
|
||||
memberUin = (await NTQQApi.getUserDetailInfo(groupElement.memberUid)).uin
|
||||
}
|
||||
// log("获取新群成员QQ", memberUin)
|
||||
const adminMember = await getGroupMember(msg.peerUid, null, groupElement.adminUid);
|
||||
const adminMember = await getGroupMember(msg.peerUid, groupElement.adminUid);
|
||||
// log("获取同意新成员入群的管理员", adminMember)
|
||||
if (memberUin) {
|
||||
const operatorUin = adminMember?.uin || memberUin
|
||||
@@ -280,7 +280,7 @@ export class OB11Constructor {
|
||||
let duration = parseInt(groupElement.shutUp.duration)
|
||||
let sub_type: "ban" | "lift_ban" = duration > 0 ? "ban" : "lift_ban"
|
||||
if (memberUid){
|
||||
memberUin = (await getGroupMember(msg.peerUid, null, memberUid))?.uin || (await NTQQApi.getUserDetailInfo(memberUid))?.uin
|
||||
memberUin = (await getGroupMember(msg.peerUid, memberUid))?.uin || (await NTQQApi.getUserDetailInfo(memberUid))?.uin
|
||||
}
|
||||
else {
|
||||
memberUin = "0"; // 0表示全员禁言
|
||||
@@ -288,7 +288,7 @@ export class OB11Constructor {
|
||||
duration = -1
|
||||
}
|
||||
}
|
||||
const adminUin = (await getGroupMember(msg.peerUid, null, adminUid))?.uin || (await NTQQApi.getUserDetailInfo(adminUid))?.uin
|
||||
const adminUin = (await getGroupMember(msg.peerUid, adminUid))?.uin || (await NTQQApi.getUserDetailInfo(adminUid))?.uin
|
||||
if (memberUin && adminUin) {
|
||||
return new OB11GroupBanEvent(parseInt(msg.peerUid), parseInt(memberUin), parseInt(adminUin), duration, sub_type);
|
||||
}
|
||||
|
@@ -1 +1 @@
|
||||
export const version = "3.15.0"
|
||||
export const version = "3.15.1"
|
Reference in New Issue
Block a user