mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-16 05:07:46 +00:00
feat: 刷新角色间隔,防止刷新太快导致IP黑名单
This commit is contained in:
parent
1dd7fe9fb5
commit
13f44a258e
4 changed files with 45 additions and 9 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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}秒`);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1,2 @@
|
|||
interval: 60 # 刷新面板的时间间隔(单位:秒)
|
||||
roleInterval: 3 # 查询每个角色的间隔时间(单位:秒)
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue