From db525fdf65d788f27966ea662903b0f9878d0983 Mon Sep 17 00:00:00 2001 From: yoimiya-kokomi <592981798@qq.com> Date: Thu, 21 Apr 2022 04:28:54 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E8=B0=83=E6=95=B4#=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E8=AF=A6=E6=83=85=20=E9=83=A8=E5=88=86=E6=96=87=E6=A1=88?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E6=9B=B4=E5=A5=BD=E5=BC=95=E5=AF=BC=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=8A=9F=E8=83=BD=202.=20#=E6=9B=B4=E6=96=B0=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E9=9D=A2=E6=9D=BF=20=E5=91=BD=E4=BB=A4=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0CD=EF=BC=8C=E6=9C=8D=E5=8A=A1=E7=AB=AFCD=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=B7=BB=E5=8A=A0=203.=20=E4=BF=AE=E5=A4=8D=E4=B8=80?= =?UTF-8?q?=E5=A4=84=E5=8F=AF=E8=83=BD=E8=AF=AF=E8=A7=A6=E8=80=81=E5=A9=86?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8C=87=E4=BB=A4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/character.js | 16 +++++++++++----- components/Profile.js | 27 +++++++++++++++++---------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/apps/character.js b/apps/character.js index d316fa5f..43b60958 100644 --- a/apps/character.js +++ b/apps/character.js @@ -42,7 +42,7 @@ const relationMap = { } const relation = lodash.flatMap(relationMap, (d) => d.keyword); -export const wifeReg = `^#*\\s*(${relation.join("|")})\\s*(设置|选择|指定|列表|查询|列表|是|是谁|照片|相片|写真|图像)?\\s*([^\\d]*)\\s*(\\d*)$`; +export const wifeReg = `^#\\s*(${relation.join("|")})\\s*(设置|选择|指定|列表|查询|列表|是|是谁|照片|相片|写真|图像)?\\s*([^\\d]*)\\s*(\\d*)$`; export async function init(isUpdate = false) { let _path = "file://" + process.cwd(); @@ -421,7 +421,7 @@ export async function getProfile(e) { return true; } if (!data.chars) { - e.reply("请求游戏信息失败,请确认角色已在游戏内橱窗展示,并开放了查看详情。设置完毕后请5分钟后再进行请求~"); + e.reply("获取角色面板数据失败,请确认角色已在游戏内橱窗展示,并开放了查看详情。设置完毕后请5分钟后再进行请求~"); } else { let ret = []; lodash.forEach(data.chars, (ds) => { @@ -431,9 +431,9 @@ export async function getProfile(e) { } }) if (ret.length === 0) { - e.reply("更新失败,未能请求到角色数据。请确认角色已在游戏内橱窗展示,并开放了查看详情。设置完毕后请5分钟后再进行请求~") + e.reply("获取角色面板数据失败,未能请求到角色数据。请确认角色已在游戏内橱窗展示,并开放了查看详情。设置完毕后请5分钟后再进行请求~") } else { - e.reply(`更新成功!本次更新角色: ${ret.join(",")}。你可以使用 #角色名+详情 来查看详细角色属性了`) + e.reply(`获取角色面板数据成功!本次获取成功角色: ${ret.join(", ")} 。\n你可以使用 #角色名+面板 来查看详细角色面板属性了`) } } @@ -540,6 +540,12 @@ async function getAvatar(e, char, MysApi) { export async function renderProfile(e, char, render) { + + if (['荧', '空', '主角', '旅行者'].includes(char.name)) { + e.reply("暂不支持主角的面板信息查看"); + return true; + } + let MysApi = await e.getMysApi({ auth: "cookie", targetType: "self", @@ -552,7 +558,7 @@ export async function renderProfile(e, char, render) { let profile = Profile.get(uid, char.id); if (!profile) { - e.reply(`尚无${char.name}的面板详情。请在将角色展示在【游戏内】的“角色展柜”中,并打开“显示角色详情”。设置完成5分钟后使用 #获取游戏角色详情 命令进行数据获取。`) + e.reply(`请先发送 #获取游戏角色详情 命令获取 ${char.name} 的面板详情。\n请确认已将需要获取的8位角色展示在【游戏内】的“角色展柜”中,并已打开“显示角色详情”。如刚进行设置请等待5分钟后再进行使用,以免浪费请求次数。 `) return true; } diff --git a/components/Profile.js b/components/Profile.js index d4f1a3aa..d41c9c5a 100644 --- a/components/Profile.js +++ b/components/Profile.js @@ -214,25 +214,32 @@ let Profile = { async request(uid, e) { let cfg = config.miaoApi || {}; if (!cfg.api) { - e.reply("尚未配置更新Api,无法更新数据~"); + e.reply("该功能为小范围非公开功能,需具备Token才可使用~"); return false; } if (!cfg.qq || !cfg.token || cfg.token.length !== 32) { e.reply("Token错误,无法请求数据~"); return false; } - e.reply("开始获取角色展柜中展示的角色详情,请确认已经打开显示角色详情开关,数据获取可能会需要一定时间~"); - const api = `${cfg.api}?uid=${uid}&qq=${cfg.qq}&token=${cfg.token}`; - console.log(api); - let req = await fetch(api); - let data = await req.json(); - //fs.writeFileSync(userPath + "/test.json", data); - if (data.status !== 0 || !data.data) { - e.reply(`请求错误:${data.msg || "未知错误"}`); + let inCd = await redis.get(`miao:role-all:${uid}`); + if (inCd === 'loading') { + e.reply("请求过快,请稍后重试.."); + return false; + } else if (inCd === 'pending') { + e.reply("距上次请求刷新成功间隔小于10分钟,请稍后重试.."); return false; } + await redis.set(`miao:role-all:${uid}`, 'loading', { EX: 20 }); + e.reply("开始获取角色展柜中展示的角色详情,数据获取可能会需要一定时间~"); + const api = `${cfg.api}?uid=${uid}&qq=${cfg.qq}&token=${cfg.token}`; + let req = await fetch(api); + let data = await req.json(); + if (data.status !== 0 || !data.data) { + e.reply(`请求失败:${data.msg || "未知错误"}`); + return false; + } + await redis.set(`miao:role-all:${uid}`, 'pending', { EX: 600 }); data = data.data; - let userData = {}; if (data && data["角色名称"]) { userData = Profile.save(uid, data)