From 13f44a258e42fe248e6de4a8478f278084abad0c Mon Sep 17 00:00:00 2001 From: bietiaop <1527109126@qq.com> Date: Sun, 12 Jan 2025 14:10:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=B7=E6=96=B0=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E9=97=B4=E9=9A=94,=E9=98=B2=E6=AD=A2=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=A4=AA=E5=BF=AB=E5=AF=BC=E8=87=B4IP=E9=BB=91=E5=90=8D?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/manage.js | 5 +++++ apps/manage/config.js | 26 ++++++++++++++++++++++++++ defSet/panel.yaml | 1 + lib/avatar.js | 22 +++++++++++++--------- 4 files changed, 45 insertions(+), 9 deletions(-) diff --git a/apps/manage.js b/apps/manage.js index b348a8c..411c5b8 100644 --- a/apps/manage.js +++ b/apps/manage.js @@ -40,6 +40,10 @@ export class Panel extends ZZZPlugin { reg: `${rulePrefix}刷新面板间隔(\\d+)$`, fnc: 'setRefreshPanelInterval', }, + { + reg: `${rulePrefix}刷新角色间隔(\\d+)$`, + fnc: 'setRefreshCharInterval', + }, { reg: `${rulePrefix}添加(\\S+)别名(\\S+)$`, fnc: 'addAlias', @@ -94,6 +98,7 @@ export class Panel extends ZZZPlugin { this.setRenderPrecision = manage.config.setRenderPrecision; this.setRefreshGachaInterval = manage.config.setRefreshGachaInterval; this.setRefreshPanelInterval = manage.config.setRefreshPanelInterval; + this.setRefreshCharInterval = manage.config.setRefreshCharInterval; this.addAlias = manage.alias.addAlias; this.deleteAlias = manage.alias.deleteAlias; this.uploadCharacterImg = manage.panel.uploadCharacterImg; diff --git a/apps/manage/config.js b/apps/manage/config.js index 221022e..e6a7161 100644 --- a/apps/manage/config.js +++ b/apps/manage/config.js @@ -83,3 +83,29 @@ export async function setRefreshPanelInterval() { { at: true, recallMsg: 100 } ); } + +/** 设置角色刷新间隔 */ +export async function setRefreshCharInterval() { + if (!this.e.isMaster) { + this.reply('仅限主人设置', false, { at: true, recallMsg: 100 }); + return false; + } + const match = /刷新角色间隔(\d+)$/g.exec(this.e.msg); + const refresh_char_interval = Number(match[1]); + if (refresh_char_interval < 0) { + await this.e.reply('刷新角色间隔不能小于0秒', false, { + at: true, + recallMsg: 100, + }); + return false; + } + if (refresh_char_interval > 1000) { + await this.e.reply('刷新角色间隔不能大于1000秒', false, { + at: true, + recallMsg: 100, + }); + return false; + } + settings.setSingleConfig('panel', 'roleInterval', refresh_char_interval); + await this.e.reply(`绝区零刷新角色间隔已设置为: ${refresh_char_interval}秒`); +} diff --git a/defSet/panel.yaml b/defSet/panel.yaml index b079ab1..4aa4d51 100644 --- a/defSet/panel.yaml +++ b/defSet/panel.yaml @@ -1 +1,2 @@ interval: 60 # 刷新面板的时间间隔(单位:秒) +roleInterval: 3 # 查询每个角色的间隔时间(单位:秒) \ No newline at end of file diff --git a/lib/avatar.js b/lib/avatar.js index c3ced11..2ceb20b 100644 --- a/lib/avatar.js +++ b/lib/avatar.js @@ -2,6 +2,8 @@ import { ZZZAvatarBasic, ZZZAvatarInfo } from '../model/avatar.js'; import MysZZZApi from './mysapi.js'; import { getPanelData, savePanelData } from './db.js'; import { char } from './convert.js'; +import _ from 'lodash'; +import settings from './settings.js'; /** * 获取角色基础信息列表 @@ -33,15 +35,17 @@ export const getAvatarInfoList = async (api, origin = false) => { const avatarBaseList = await getAvatarBasicList(api, origin); if (!avatarBaseList) return null; // 获取角色详细信息列表 - const avatarInfoList = await Promise.all( - avatarBaseList.map(item => - api.getFinalData('zzzAvatarInfo', { - query: { - id_list: [item.id], - }, - }) - ) - ).then(data => data.map(item => item.avatar_list[0])); + const avatarInfoList = []; + for (const item of avatarBaseList) { + const data = await api.getFinalData('zzzAvatarInfo', { + query: { + id_list: [item.id], + }, + }); + avatarInfoList.push(data.avatar_list[0]); + const time = _.get(settings.getConfig('panel'), 'roleInterval', 3) * 1000; + await new Promise(resolve => setTimeout(resolve, time)); + } if (!avatarInfoList?.length) return null; // 是否返回原始数据 if (origin) return avatarInfoList;