From b998e12a6842b3559c2e5006689bf2d293453dca Mon Sep 17 00:00:00 2001 From: Ctrlcvs <1509167646@qq.com> Date: Sat, 17 Dec 2022 18:29:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=83=E5=9C=A3=E5=8F=AC?= =?UTF-8?q?=E5=94=A4=E5=8A=A8=E6=80=81=E6=8C=87=E4=BB=A4=20=E4=BE=8B?= =?UTF-8?q?=EF=BC=9A`#=E4=B8=83=E5=9C=A3=E5=88=BB=E6=99=B4=E5=8A=A8?= =?UTF-8?q?=E6=80=81`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/index.js | 28 ++++++++------ apps/xiaoyao_image.js | 86 +++++++++++++++++++++++++++++++++---------- 2 files changed, 83 insertions(+), 31 deletions(-) diff --git a/apps/index.js b/apps/index.js index 19a0a6a..96b3523 100644 --- a/apps/index.js +++ b/apps/index.js @@ -1,7 +1,7 @@ import lodash from "lodash"; import schedule from "node-schedule"; import { - AtlasAlias + AtlasAlias,getBasicVoide } from "./xiaoyao_image.js"; import { versionInfo, @@ -20,7 +20,7 @@ import { import { rule as adminRule, updateRes, - sysCfg,updateTemp, + sysCfg, updateTemp, updateMiaoPlugin } from "./admin.js"; import { @@ -29,8 +29,8 @@ import { updCookie, userInfo, gclog, - mytoken,gcPaylog, - bindStoken,bindLogin_ticket, + mytoken, gcPaylog, + bindStoken, bindLogin_ticket, cloudToken } from "./user.js" import { @@ -44,13 +44,13 @@ import { } from "./sign.js" export { - updateRes,updateTemp, - delSign,gcPaylog, + updateRes, updateTemp, + delSign, gcPaylog, cloudSign, - seach,bindLogin_ticket, + seach, bindLogin_ticket, bbsSign, gclog, - mytoken, + mytoken, getBasicVoide, bindStoken, updateMiaoPlugin, userInfo, @@ -106,6 +106,10 @@ let rule = { reg: "#poke#", describe: "体力", }, + getBasicVoide: { + reg: '#?(动态)', + describe: "动态", + }, ...userRule, ...signRule, ...adminRule @@ -121,22 +125,22 @@ task(); async function task() { if (typeof test != "undefined") return; let set = gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/config/`, "config") - schedule.scheduleJob(set.mysBbsTime, function() { + schedule.scheduleJob(set.mysBbsTime, function () { if (set.ismysSign) { signTask('bbs') } }); - schedule.scheduleJob(set.allSignTime, function() { + schedule.scheduleJob(set.allSignTime, function () { if (set.isSign) { signTask('mys') } }); - schedule.scheduleJob(set.cloudSignTime, function() { + schedule.scheduleJob(set.cloudSignTime, function () { if (set.isCloudSign) { signTask('cloud') } }); - schedule.scheduleJob(set.noteTask, function() { + schedule.scheduleJob(set.noteTask, function () { if (set.isNoteTask) { DailyNoteTask() } diff --git a/apps/xiaoyao_image.js b/apps/xiaoyao_image.js index ac7e72f..ab83de3 100644 --- a/apps/xiaoyao_image.js +++ b/apps/xiaoyao_image.js @@ -34,9 +34,49 @@ export async function AtlasAlias(e) { return send_Msg(e, "all", ""); } + +/** 获取角色卡片的原图 */ +export async function getBasicVoide(e) { + if (!e.hasReply && !e.source) { + return true + } + // 引用的消息不是自己的消息 + if (e.source.user_id !== e.self_id) { + return true + } + // 引用的消息不是纯图片 + if (!/^\[图片]$/.test(e.source.message)) { + return true + } + // 获取原消息 + let source + if (e.isGroup) { + source = (await e.group.getChatHistory(e.source.seq, 1)).pop() + } else { + source = (await e.friend.getChatHistory(e.source.time, 1)).pop() + } + if (source) { + let imgPath = await redis.get(`xiaoyao:basic:${source.message_id}`) + console.log(imgPath) + if (imgPath) { + e.reply([segment.video(`file:///${imgPath}`)]) + return true + } + if (source.time) { + let time = new Date() + // 对at错图像的增加嘲讽... + if (time / 1000 - source.time < 3600) { + e.reply([segment.image(process.cwd() + '/plugins/miao-plugin/resources/common/face/what.jpg')]) + return true + } + } + } + e.reply('消息太过久远了,俺也忘了动态是啥了,下次早点来吧~') + return true +} export async function roleInfo(e) { - let msg = e.msg.replace(/#|#|信息|图鉴|命座|天赋|原牌|七圣/g, ""); - let Botcfg,id,type='juese_tujian'; + let msg = e.msg.replace(/#|#|信息|图鉴|命座|天赋|原牌|七圣|动态/g, ""); + let Botcfg, id, type = 'juese_tujian'; if (isV3) { Botcfg = (await import(`file://${_path}/plugins/genshin/model/gsCfg.js`)).default; id = Botcfg.roleNameToID(msg) @@ -54,27 +94,27 @@ export async function roleInfo(e) { } else { name = Botcfg.roleIdToName(id, true); } - if(/原牌|七圣/.test(e.msg)) { - if(!name){ - let list = gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/resources/Atlas_alias/`,'yuanmo_tujian') - name= info_img(e,list,msg) + if (/原牌|七圣/.test(e.msg)) { + if (!name) { + let list = gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/resources/Atlas_alias/`, 'yuanmo_tujian') + name = info_img(e, list, msg) } - type=`basicInfo_tujian/role/${name}` + type = `basicInfo_tujian/role/${name}` } if (!name) return false; send_Msg(e, type, name) return true; } -const filePath = async function(e) { +const filePath = async function (e) { let data = list; data.push("juese_tujian") for (let [index, val] of data.entries()) { - let msg=e.msg; - if(index!=data.length-1){ - msg=e.msg.replace(new RegExp(reglist[index], "g"), ""); - }else { - msg=e.msg.replace(/#|#|信息|图鉴|命座|天赋/g, ""); + let msg = e.msg; + if (index != data.length - 1) { + msg = e.msg.replace(new RegExp(reglist[index], "g"), ""); + } else { + msg = e.msg.replace(/#|#|信息|图鉴|命座|天赋/g, ""); } let path = `${pathPlus}${val}/${msg}.png` if (fs.existsSync(path)) { @@ -84,12 +124,12 @@ const filePath = async function(e) { } } -const send_Msg = function(e, type, name) { +const send_Msg = async function (e, type, name) { let path; if (type == "all") { for (let [index, val] of list.entries()) { name = e.msg.replace(new RegExp(reglist[index], "g"), ""); - if(val.includes('juese_tujian')) continue; + if (val.includes('juese_tujian')) continue; let new_name = info_img(e, gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/resources/Atlas_alias/`, val), name) if (new_name) { @@ -103,17 +143,25 @@ const send_Msg = function(e, type, name) { if (!fs.existsSync(path)) { return false; } - e.reply(segment.image(`file:///${path}`)); + let msg = segment.image(`file:///${path}`) + try { + if (/动态/.test(e.msg)) msg = segment.video(`file:///${path.replace(/\.png|\.jpg/, '.mp4')}`) + } catch (error) { + Bot.logger.error(`发送七圣动态数据失败:` + error) + // error + } + let { message_id } = await e.reply(msg); + await redis.set(`xiaoyao:basic:${message_id}`, path.replace(/\.png|\.jpg/, '.mp4'), 10800); //三小时 return true; } export async function Atlas_list(e) { - let list = gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/resources/Atlas_alias/`,'Atlas_list') + let list = gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/resources/Atlas_alias/`, 'Atlas_list') let name = e.msg.replace(/#|井/g, "") for (let i in list) { let title = i.split("|"); for (let j = 0; j < title.length; j++) { if (title[j] == name) { - await utils.replyMake(e, [`当前选择【${name}】`,"请选择:\n" + list[i].join("\n")], 0) + await utils.replyMake(e, [`当前选择【${name}】`, "请选择:\n" + list[i].join("\n")], 0) return true; } } @@ -121,7 +169,7 @@ export async function Atlas_list(e) { return false; } -const info_img = function(e, list, name) { +const info_img = function (e, list, name) { for (let i in list) { for (let val of list[i]) { if (val == name || i == name) {