调整更新面板逻辑,使用%米游社更新面板走米游社更新面板, 否则默认使用enka

This commit is contained in:
rainbowwarmth 2025-04-03 22:45:18 +08:00
parent 53148aac0e
commit c8dc2c3b29
4 changed files with 13 additions and 24 deletions

View file

@ -22,7 +22,7 @@ export class Panel extends ZZZPlugin {
priority: _.get(settings.getConfig('priority'), 'panel', 70),
rule: [
{
reg: `${rulePrefix}(.*)面板(刷新|更新|列表)?$`,
reg: `${rulePrefix}(.*)面板(米游社更新|刷新|更新|列表)?$`,
fnc: 'handleRule',
},
{
@ -45,15 +45,17 @@ export class Panel extends ZZZPlugin {
const reg = new RegExp(`${rulePrefix}(.*)面板(刷新|更新|列表)?$`);
const pre = this.e.msg.match(reg)[4]?.trim();
const suf = this.e.msg.match(reg)[5]?.trim();
if (['刷新', '更新'].includes(pre) || ['刷新', '更新'].includes(suf))
return await this.refreshPanel();
if (['刷新', '更新', '米游社更新'].includes(pre) || ['刷新', '更新', '米游社更新'].includes(suf)) {
const enkaSet = (pre === '米游社更新' || suf === '米游社更新') ? 'false' : 'true';
return await this.refreshPanel(enkaSet);
}
if (!pre || suf === '列表') return await this.getCharPanelList();
const queryPanelReg = new RegExp(`${rulePrefix}(.*)面板$`);
if (queryPanelReg.test(this.e.msg)) return await this.getCharPanel();
return false;
}
async refreshPanel() {
async refreshPanel(enkaSet) {
const uid = await this.getUID();
let playerInfo = null;
try {
@ -67,13 +69,10 @@ export class Panel extends ZZZPlugin {
}
this.result = null;
const useEnka = _.get(settings.getConfig('panel'), 'useEnka', true); // 读取配置Enka 优先
logger.mark(`[panel.js] useEnka 设置值: ${useEnka}`);
if (useEnka) {
if (enkaSet === 'true') {
logger.mark('[panel.js] 进入 Enka 逻辑块');
try {
const enkaData = await getZzzEnkaData(uid);
const enkaData = await getZzzEnkaData(uid, enkaSet);
if (!enkaData || enkaData === -1 || !enkaData.PlayerInfo) { throw new Error('获取或验证 Enka 数据失败'); }
this.result = await _enka_data_to_mys_data(enkaData);
} catch (enkaError) {
@ -110,9 +109,7 @@ export class Panel extends ZZZPlugin {
// 并且至少包含一个角色数据才存,避免存空数组?(可选)
if (this.result.length > 0) {
try {
await updatePanelData(uid, this.result);
} catch (cacheError) {
logger.error('出错:', cacheError);
// 记录错误,但可能继续

View file

@ -1,3 +1,2 @@
useEnka: false # 使用enka接口查询
interval: 60 # 刷新面板的时间间隔(单位:秒)
roleInterval: 3 # 查询每个角色的间隔时间(单位:秒)

View file

@ -162,12 +162,6 @@ export function supportGuoba() {
component: 'Divider',
label: '面板设置',
},
{
field: 'panel.useEnka',
label: 'enka查询',
bottomHelpMessage: '是否使用enka接口查询',
component: 'Switch',
},
{
field: 'panel.interval',
label: '冷却时间',

View file

@ -1,10 +1,9 @@
import settings from '../settings.js'
import { ENKA_API } from './api.js'
import _ from 'lodash'
import fetch from 'node-fetch'
const useEnka = _.get(settings.getConfig('config'), 'useEnka', true);
export async function getZzzEnkaData(uid) {
if (useEnka) {
export async function getZzzEnkaData(uid, enkaSet) {
if (enkaSet) {
try {
const response = await fetch(ENKA_API.replace('{uid}', uid), {
headers: {
@ -19,7 +18,7 @@ export async function getZzzEnkaData(uid) {
});
if (!response.ok) {
console.error(`HTTP 错误! 状态码: ${response.status}`);
logger.error(`HTTP 错误! 状态码: ${response.status}`);
return response.status;
}
@ -30,7 +29,7 @@ export async function getZzzEnkaData(uid) {
return data;
} catch (error) {
console.error("Error fetching ZZZ Enka data:", error);
logger.error("Error fetching ZZZ Enka data:", error);
return -1;
}
}