mirror of
https://github.com/ctrlcvs/xiaoyao-cvs-plugin.git
synced 2024-12-22 19:10:53 +08:00
更新下版本号
This commit is contained in:
parent
1b458e794d
commit
42c817ff52
@ -1,3 +1,12 @@
|
|||||||
|
# 1.2.4
|
||||||
|
* 新增`群体力推送`
|
||||||
|
* 用户可通过`#开启、关闭体力推送` 来对体力推送进行操作
|
||||||
|
* 管理员可通过`#体力设置群推送关闭、开启` 以及推送阈值设置`#体力设置群阈值120` 仅支持群操作
|
||||||
|
* 新增`#我的体力模板列表`
|
||||||
|
* 优化体力模板设置,支持多个设置
|
||||||
|
* 新增`#图鉴模板更新`
|
||||||
|
* 用于更新体力模板具体来源由**@SunRyK** **@地球生物** **@逍遥** 三位作者上传
|
||||||
|
* 不会冲突已添加的模板数据,有需求可通过指令拉取
|
||||||
# 1.2.3
|
# 1.2.3
|
||||||
* 新增地图资源查询功能
|
* 新增地图资源查询功能
|
||||||
* `#月莲在哪里` 指令类似 `某某物品在哪里`
|
* `#月莲在哪里` 指令类似 `某某物品在哪里`
|
||||||
|
@ -50,5 +50,5 @@ git clone https://github.com/Ctrlcvs/xiaoyao-cvs-plugin.git ./plugins/xiaoyao-cv
|
|||||||
- 图片素材来源于网络,仅供交流学习使用
|
- 图片素材来源于网络,仅供交流学习使用
|
||||||
- 严禁用于任何商业用途和非法行为
|
- 严禁用于任何商业用途和非法行为
|
||||||
- Yunzai-Bot 官方QQ群:213938015 (暂时停止新加入)
|
- Yunzai-Bot 官方QQ群:213938015 (暂时停止新加入)
|
||||||
- 喵喵Miao-Plugin QQ群:607710456 (暂时停止新加入)
|
- 喵喵Miao-Plugin QQ群:755269874
|
||||||
- 图鉴xiaoyao-cvs-Plugin QQ群:544570609(暂时不支持加入)
|
- 图鉴xiaoyao-cvs-Plugin QQ群:544570609
|
||||||
|
206
apps/Note.js
206
apps/Note.js
@ -15,6 +15,8 @@ import {
|
|||||||
} from "../components/index.js";
|
} from "../components/index.js";
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import utils from "../model/mys/utils.js";
|
import utils from "../model/mys/utils.js";
|
||||||
|
import note from '../model/note.js'
|
||||||
|
import User from "../model/user.js";
|
||||||
const _path = process.cwd();
|
const _path = process.cwd();
|
||||||
let role_user = Data.readJSON(`${_path}/plugins/xiaoyao-cvs-plugin/resources/dailyNote/json/`, "dispatch_time");
|
let role_user = Data.readJSON(`${_path}/plugins/xiaoyao-cvs-plugin/resources/dailyNote/json/`, "dispatch_time");
|
||||||
|
|
||||||
@ -99,13 +101,11 @@ export async function Note(e, {
|
|||||||
let data = res.data;
|
let data = res.data;
|
||||||
//推送任务
|
//推送任务
|
||||||
if (e.isTask && data.current_resin < e.sendResin) {
|
if (e.isTask && data.current_resin < e.sendResin) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.isTask) {
|
if (e.isTask) {
|
||||||
Bot.logger.mark(`体力推送:${e.user_id}`);
|
Bot.logger.mark(`体力推送:${e.user_id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
let nowDay = moment(new Date()).format("DD");
|
let nowDay = moment(new Date()).format("DD");
|
||||||
let resinMaxTime;
|
let resinMaxTime;
|
||||||
let resinMaxTime_mb2;
|
let resinMaxTime_mb2;
|
||||||
@ -160,7 +160,6 @@ export async function Note(e, {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let remained_time = "";
|
let remained_time = "";
|
||||||
if (data.expeditions && data.expeditions.length >= 1) {
|
if (data.expeditions && data.expeditions.length >= 1) {
|
||||||
remained_time = lodash.map(data.expeditions, "remained_time");
|
remained_time = lodash.map(data.expeditions, "remained_time");
|
||||||
@ -188,7 +187,8 @@ export async function Note(e, {
|
|||||||
let coinMin = Math.floor((data.home_coin_recovery_time / 60) % 60);
|
let coinMin = Math.floor((data.home_coin_recovery_time / 60) % 60);
|
||||||
if (coinDay > 0) {
|
if (coinDay > 0) {
|
||||||
coinTime = `${coinDay}天${coinHour}小时${coinMin}分钟`;
|
coinTime = `${coinDay}天${coinHour}小时${coinMin}分钟`;
|
||||||
coinTime_mb2Day = chnNumChar[coinDay * 1] + "天";
|
let dayTime = (24 - moment(new Date()).format('HH') + moment(coinDate).diff(new Date(), 'hours')) / 24
|
||||||
|
coinTime_mb2Day = chnNumChar[dayTime.toFixed(0)] + "天";
|
||||||
let Time_day = await dateTime_(coinDate)
|
let Time_day = await dateTime_(coinDate)
|
||||||
coinTime_mb2 = Time_day + moment(coinDate).format("hh:mm");
|
coinTime_mb2 = Time_day + moment(coinDate).format("hh:mm");
|
||||||
} else {
|
} else {
|
||||||
@ -228,13 +228,14 @@ export async function Note(e, {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let urlType = note_file("xiaoyao");
|
let urlType = note_file("xiaoyao");
|
||||||
if (urlType.length > 0) {
|
let objFile = Object.keys(urlType)
|
||||||
urlType = urlType[lodash.random(0, urlType.length - 1)]
|
if (objFile.length > 0) {
|
||||||
|
objFile = objFile[lodash.random(0, objFile.length - 1)]
|
||||||
}
|
}
|
||||||
let img_path = `./plugins/xiaoyao-cvs-plugin/resources/dailyNote/${path_img[mb]}`;
|
let img_path = `${urlType[objFile]}`;
|
||||||
if (tempData[e.user_id] && tempData[e.user_id].type > -1) {
|
if (tempData[e.user_id] && tempData[e.user_id].type > -1) {
|
||||||
mb = tempData[e.user_id].type;
|
mb = tempData[e.user_id].type;
|
||||||
urlType = tempData[e.user_id].temp;
|
objFile = tempData[e.user_id].temp;
|
||||||
}
|
}
|
||||||
if (mb == 1) {
|
if (mb == 1) {
|
||||||
for (var i = 0; i < 5 - data.expeditions.length; i++) {
|
for (var i = 0; i < 5 - data.expeditions.length; i++) {
|
||||||
@ -245,23 +246,26 @@ export async function Note(e, {
|
|||||||
mb2_icon: ""
|
mb2_icon: ""
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
img_path = `./plugins/xiaoyao-cvs-plugin/resources/dailyNote/Template/${urlType}${path_img[mb]}`;
|
img_path = `${urlType[objFile]}${path_img[mb]}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
var image = fs.readdirSync(img_path);
|
var image = fs.readdirSync(img_path);
|
||||||
|
// console.log(fs.readdirSync(`./plugins/xiaoyao-cvs-plugin/resources/dailyNote/BJT-Templet/Template2`))
|
||||||
var list_img = [];
|
var list_img = [];
|
||||||
for (let val of image) {
|
for (let val of image) {
|
||||||
list_img.push(val)
|
list_img.push(val)
|
||||||
}
|
}
|
||||||
var imgs = list_img.length == 1 ? list_img[0] : list_img[lodash.random(0, list_img.length - 1)];
|
var imgs = list_img.length == 1 ? list_img[0] : list_img[lodash.random(0, list_img.length - 1)];
|
||||||
if (mb == 0 && urlType.includes(".")) {
|
if (mb == 0 && objFile.includes(".")) {
|
||||||
imgs = urlType
|
imgs = objFile
|
||||||
}
|
}
|
||||||
return await Common.render(`dailyNote/${path_url[mb]}`, {
|
return await Common.render(`dailyNote/${path_url[mb]}`, {
|
||||||
save_id: uid,
|
save_id: uid,
|
||||||
uid: uid,
|
uid: uid,
|
||||||
coinTime_mb2Day,
|
coinTime_mb2Day,
|
||||||
coinTime_mb2,
|
coinTime_mb2,
|
||||||
urlType: encodeURIComponent(urlType),
|
urlType: encodeURIComponent(img_path.replace(
|
||||||
|
/(\.\/plugins\/xiaoyao-cvs-plugin\/resources\/|\/icon\/bg)/g, '')).replace(/%2F/g, "/"),
|
||||||
resinMaxTime_mb2Day,
|
resinMaxTime_mb2Day,
|
||||||
resinMaxTime,
|
resinMaxTime,
|
||||||
resinMaxTime_mb2,
|
resinMaxTime_mb2,
|
||||||
@ -294,7 +298,8 @@ async function getDailyNote(uid, cookie) {
|
|||||||
} = mysApi.getUrl("dailyNote", uid);
|
} = mysApi.getUrl("dailyNote", uid);
|
||||||
headers.Cookie = cookie;
|
headers.Cookie = cookie;
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "get", headers
|
method: "get",
|
||||||
|
headers
|
||||||
});
|
});
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -303,66 +308,77 @@ export async function saveJson() {
|
|||||||
fs.writeFileSync(path, JSON.stringify(NoteCookie, "", "\t"));
|
fs.writeFileSync(path, JSON.stringify(NoteCookie, "", "\t"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function noteTask(e) {
|
||||||
|
if (e.isPrivate) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
let notes = new note(e);
|
||||||
|
let user = new User(e)
|
||||||
|
let {
|
||||||
|
cookie
|
||||||
|
} = await user.getCookie(e)
|
||||||
|
e.isbool = e.msg.includes("开启")
|
||||||
|
e.isgl = e.msg.includes("群")
|
||||||
|
if (!cookie && e.isbool && !e.isgl) {
|
||||||
|
e.reply("请先#绑定ck\n发送【体力帮助】获取教程")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (e.isgl) {
|
||||||
|
notes.updNote(e)
|
||||||
|
} else if (e.isbool && e.msg.includes("体力推送")) {
|
||||||
|
notes.addNote()
|
||||||
|
} else {
|
||||||
|
notes.delNote()
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//体力定时推送
|
//体力定时推送
|
||||||
export async function DailyNoteTask() {
|
export async function DailyNoteTask() {
|
||||||
//体力大于多少时推送
|
|
||||||
let sendResin = 120;
|
|
||||||
//推送cd,12小时一次
|
//推送cd,12小时一次
|
||||||
let sendCD = 12 * 3600;
|
let sendCD = 12 * 3600;
|
||||||
if (isV3) {
|
let notes = new note();
|
||||||
return true;
|
for (let item in notes.noteCfg) {
|
||||||
}
|
let group = notes.noteCfg[item]
|
||||||
//获取需要推送的用户
|
if (!group?.isTask) continue;
|
||||||
for (let [user_id, cookie] of Object.entries(NoteCookie)) {
|
let taskUser = group.task;
|
||||||
user_id = cookie.qq || user_id;
|
for (let i of taskUser) {
|
||||||
//没有开启推送
|
let e = {
|
||||||
if (!cookie.isPush) {
|
user_id: i,
|
||||||
continue;
|
qq: i,
|
||||||
}
|
msg: "体力",
|
||||||
|
sendResin: group.sendResin,
|
||||||
//今天已经提醒
|
isTask: true,
|
||||||
let sendkey = `genshin:dailyNote:send:${user_id}`;
|
}
|
||||||
let send = await redis.get(sendkey);
|
//今天已经提醒
|
||||||
if (send) {
|
let sendkey = `xiaoyao:dailyNote:send:${i}`;
|
||||||
continue;
|
let send = await redis.get(sendkey);
|
||||||
}
|
if (!Bot.pickGroup(item).pickMember(i) || send) continue;
|
||||||
|
let sendMsg = [segment.at(i * 1), "哥哥(姐姐)你的体力快满了哦~"]
|
||||||
let e = {
|
e.reply = (msg) => {
|
||||||
sendResin,
|
sendMsg.push(msg)
|
||||||
user_id,
|
};
|
||||||
isTask: true
|
let render;
|
||||||
};
|
|
||||||
|
|
||||||
e.reply = (msg) => {
|
|
||||||
Bot.pickUser(user_id * 1).sendMsg(msg).catch((err) => {
|
|
||||||
Bot.logger.mark(err)
|
|
||||||
})
|
|
||||||
// common.relpyPrivate(user_id, msg);
|
|
||||||
};
|
|
||||||
//判断今天是否推送
|
|
||||||
if (cookie.maxTime && cookie.maxTime > 0 && new Date().getTime() > cookie.maxTime - (160 - sendResin) * 8 *
|
|
||||||
60 * 1000) {
|
|
||||||
Bot.logger.mark(`体力推送:${user_id}`);
|
|
||||||
redis.set(sendkey, "1", {
|
|
||||||
EX: sendCD
|
|
||||||
});
|
|
||||||
if (isV3) {
|
if (isV3) {
|
||||||
let {
|
let {
|
||||||
getRender
|
getRender
|
||||||
} = await import(`file://${_path}/plugins/xiaoyao-cvs-plugin/render.js`);
|
} = await import(`file://${_path}/plugins/xiaoyao-cvs-plugin/adapter/render.js`);
|
||||||
await Note(e, {
|
render = await getRender()
|
||||||
render: await getRender()
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
let {
|
let {
|
||||||
getPluginRender
|
getPluginRender
|
||||||
} = await import(`file://${_path}/lib/render.js`);
|
} = await import(`file://${_path}/lib/render.js`);
|
||||||
await Note(e, {
|
render = await getPluginRender()
|
||||||
render: await getPluginRender()
|
}
|
||||||
});
|
let task = await Note(e, {
|
||||||
|
render
|
||||||
|
});
|
||||||
|
if (task) {
|
||||||
|
redis.set(sendkey, "1", {
|
||||||
|
EX: sendCD
|
||||||
|
});
|
||||||
|
Bot.pickGroup(item).sendMsg(sendMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -385,32 +401,39 @@ export async function Note_appoint(e) {
|
|||||||
|
|
||||||
let All = ["默认", "随机", "0"];
|
let All = ["默认", "随机", "0"];
|
||||||
let urlType = note_file();
|
let urlType = note_file();
|
||||||
|
let keyType = Object.keys(urlType);
|
||||||
if (!isNaN(msg) && msg != 0) {
|
if (!isNaN(msg) && msg != 0) {
|
||||||
if (msg > urlType.length) {
|
if (msg > keyType.length) {
|
||||||
e.reply(`没有${msg}的索引序号哦~`)
|
e.reply(`没有${msg}的索引序号哦~`)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
msg = urlType[msg - 1];
|
msg = keyType[msg - 1];
|
||||||
}
|
}
|
||||||
let type = 0;
|
let type = 0;
|
||||||
if (msg.includes("列表")) {
|
if (msg.includes("列表")) {
|
||||||
let xlmsg = msg.replace("列表", "") * 1 || 1
|
let isUser= msg.includes('我的')
|
||||||
let sumCount = (urlType.length / 80 + 0.49).toFixed(0);
|
let temp =tempData[e.user_id]["temp"];
|
||||||
|
let xlmsg = msg.replace(/列表|我的/g, "") * 1 || 1
|
||||||
|
let listLength=isUser?temp.length:keyType.length
|
||||||
|
let sumCount = (listLength / 80 + 0.49).toFixed(0);
|
||||||
xlmsg = sumCount - xlmsg > -1 ? xlmsg : sumCount == 0 ? 1 : sumCount;
|
xlmsg = sumCount - xlmsg > -1 ? xlmsg : sumCount == 0 ? 1 : sumCount;
|
||||||
let xxmsg = (xlmsg - 1) <= 0 ? 0 : 80 * (xlmsg - 1)
|
let xxmsg = (xlmsg - 1) <= 0 ? 0 : 80 * (xlmsg - 1)
|
||||||
let count = 0;
|
let count = 0;
|
||||||
let msgData = [`模板列表共,第${xlmsg}页,共${urlType.length}张,\n您可通过【#体力模板设置1】来绑定你需要的体力模板~\n请选择序号~~\n当前支持选择的模板有:`];
|
let msgData = [`模板列表共,第${xlmsg}页,共${listLength}张,\n您可通过【#体力模板设置1】来绑定你需要的体力模板~\n请选择序号~~\n当前支持选择的模板有:`];
|
||||||
for (let [index, item] of urlType.entries()) {
|
for (let [index, item] of keyType.entries()) {
|
||||||
let msg_pass = [];
|
let msg_pass = [];
|
||||||
let imgurl;
|
let imgurl;
|
||||||
if (item.includes(".")) {
|
if (item.includes(".")) {
|
||||||
imgurl = await segment.image(`file:///${mbPath}background_image/${item}`);
|
imgurl = await segment.image(`file:///${urlType[item]}`);
|
||||||
item = item.split(".")[0];
|
item = item.split(".")[0];
|
||||||
} else {
|
} else {
|
||||||
imgurl = await segment.image(
|
imgurl = await segment.image(
|
||||||
`file:///${mbPath}Template/${item}/icon/bg/${fs.readdirSync(`${mbPath}/Template/${item}/icon/bg/`)[0]}`
|
`file:///${urlType[item]}/icon/bg/${fs.readdirSync(`${urlType[item]}/icon/bg/`)[0]}`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
if(isUser&&!temp.includes(item)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
item = index + 1 + "." + item
|
item = index + 1 + "." + item
|
||||||
count++;
|
count++;
|
||||||
if (msgData.length == 81) {
|
if (msgData.length == 81) {
|
||||||
@ -426,7 +449,7 @@ export async function Note_appoint(e) {
|
|||||||
msgData.push(msg_pass)
|
msgData.push(msg_pass)
|
||||||
}
|
}
|
||||||
let endMsg = "";
|
let endMsg = "";
|
||||||
if (count < urlType.length) {
|
if (count < listLength) {
|
||||||
endMsg = `更多内容请翻页查看\n如:#体力模板列表2`
|
endMsg = `更多内容请翻页查看\n如:#体力模板列表2`
|
||||||
} else {
|
} else {
|
||||||
endMsg = `已经到底了~~`
|
endMsg = `已经到底了~~`
|
||||||
@ -435,10 +458,10 @@ export async function Note_appoint(e) {
|
|||||||
await utils.replyMake(e, msgData, 0)
|
await utils.replyMake(e, msgData, 0)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (urlType.includes(msg + ".png")) {
|
if (keyType.includes(msg + ".png")) {
|
||||||
msg = msg + ".png";
|
msg = msg + ".png";
|
||||||
}
|
}
|
||||||
if (!urlType.includes(msg) && !All.includes(msg)) {
|
if (!keyType.includes(msg) && !All.includes(msg)) {
|
||||||
e.reply("没有找到你想要的模板昵!可输入 【#体力模板列表】 查询当前支持的模板哦~~")
|
e.reply("没有找到你想要的模板昵!可输入 【#体力模板列表】 查询当前支持的模板哦~~")
|
||||||
return true;
|
return true;
|
||||||
} else if (All.includes(msg)) {
|
} else if (All.includes(msg)) {
|
||||||
@ -449,8 +472,22 @@ export async function Note_appoint(e) {
|
|||||||
type = 0
|
type = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let temp = [];
|
||||||
|
if(!tempData[e.user_id]){
|
||||||
|
tempData[e.user_id] = {
|
||||||
|
temp: [],
|
||||||
|
type: type,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (typeof tempData[e.user_id]["temp"] === "string") {
|
||||||
|
temp = [tempData[e.user_id]["temp"], msg]
|
||||||
|
} else {
|
||||||
|
if(!tempData[e.user_id]["temp"].includes(msg)){
|
||||||
|
temp = [...tempData[e.user_id]["temp"], msg]
|
||||||
|
}
|
||||||
|
}
|
||||||
tempData[e.user_id] = {
|
tempData[e.user_id] = {
|
||||||
temp: msg,
|
temp: temp,
|
||||||
type: type,
|
type: type,
|
||||||
}
|
}
|
||||||
fs.writeFileSync(tempDataUrl + "/tempData.json", JSON.stringify(tempData));
|
fs.writeFileSync(tempDataUrl + "/tempData.json", JSON.stringify(tempData));
|
||||||
@ -460,18 +497,29 @@ export async function Note_appoint(e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const note_file = function(xiaoyao) {
|
const note_file = function(xiaoyao) {
|
||||||
var urlFile = fs.readdirSync(`./plugins/xiaoyao-cvs-plugin/resources/dailyNote/Template/`);
|
let url1 = `./plugins/xiaoyao-cvs-plugin/resources/dailyNote/Template/`
|
||||||
var urlType = [];
|
let url2 = `./plugins/xiaoyao-cvs-plugin/resources/BJT-Templet/` //冤种情况。。
|
||||||
|
let url3 = `./plugins/xiaoyao-cvs-plugin/resources/dailyNote/background_image/`
|
||||||
|
var urlFile = fs.readdirSync(url1);
|
||||||
|
var bJTurlFile = fs.readdirSync(url2);
|
||||||
|
var urlType = {};
|
||||||
for (let val of urlFile) {
|
for (let val of urlFile) {
|
||||||
if (val.includes(".")) continue;
|
if (val.includes(".")) continue;
|
||||||
urlType.push(val)
|
urlType[val] = url1 + val
|
||||||
|
}
|
||||||
|
for (let val of bJTurlFile) {
|
||||||
|
if (!val.includes("Template")) continue;
|
||||||
|
let file = fs.readdirSync(`${url2}${val}`);
|
||||||
|
for (let va of file) {
|
||||||
|
if (va.includes(".")) continue;
|
||||||
|
urlType[va] = url2 + val + "/" + va
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!xiaoyao) {
|
if (!xiaoyao) {
|
||||||
var urlFileOne = fs.readdirSync(`./plugins/xiaoyao-cvs-plugin/resources/dailyNote/background_image/`);
|
var urlFileOne = fs.readdirSync(url3);
|
||||||
for (let val of urlFileOne) {
|
for (let val of urlFileOne) {
|
||||||
if (!val.includes(".")) continue;
|
if (!val.includes(".")) continue;
|
||||||
urlType.push(val)
|
urlType[val] = url3 + "background_image/" + val
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return urlType;
|
return urlType;
|
||||||
|
@ -37,6 +37,11 @@ export const rule = {
|
|||||||
reg: "^#图鉴插件(强制)?更新",
|
reg: "^#图鉴插件(强制)?更新",
|
||||||
describe: "【#管理】图鉴更新",
|
describe: "【#管理】图鉴更新",
|
||||||
},
|
},
|
||||||
|
updateTemp:{
|
||||||
|
hashMark: true,
|
||||||
|
reg: "^#图鉴模板(强制)?更新$",
|
||||||
|
describe: "【#管理】更新素材",
|
||||||
|
},
|
||||||
sysCfg: {
|
sysCfg: {
|
||||||
hashMark: true,
|
hashMark: true,
|
||||||
reg: sysCfgReg,
|
reg: sysCfgReg,
|
||||||
@ -235,3 +240,55 @@ export async function updateMiaoPlugin(e) {
|
|||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function updateTemp(e){
|
||||||
|
if (!await checkAuth(e)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
let command = "";
|
||||||
|
let url=`${resPath}/BJT-Templet/`
|
||||||
|
if (fs.existsSync(url)) {
|
||||||
|
e.reply("开始尝试更新,请耐心等待~");
|
||||||
|
command = `git pull`;
|
||||||
|
let isForce = e.msg.includes("强制");
|
||||||
|
if (isForce) {
|
||||||
|
command = "git checkout . && git pull";
|
||||||
|
// command="git fetch --all && git reset --hard origin/master && git pull "
|
||||||
|
e.reply("正在执行强制更新操作,请稍等");
|
||||||
|
} else {
|
||||||
|
e.reply("正在执行更新操作,请稍等");
|
||||||
|
}
|
||||||
|
exec(command, {
|
||||||
|
cwd: url
|
||||||
|
}, function(error, stdout, stderr) {
|
||||||
|
//console.log(stdout);
|
||||||
|
if (/Already up to date/.test(stdout)||stdout.includes("最新")) {
|
||||||
|
e.reply("目前所有模板都已经是最新了~");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
let numRet = /(\d*) files changed,/.exec(stdout);
|
||||||
|
if (numRet && numRet[1]) {
|
||||||
|
e.reply(`报告主人,更新成功,此次更新了${numRet[1]}个图片~`);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
e.reply("更新失败!\nError code: " + error.code + "\n" + error.stack + "\n 请稍后重试。");
|
||||||
|
} else {
|
||||||
|
e.reply("体力扩展包更新成功~");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
//@gitee @SunRyK @diqiushengwu @逍遥
|
||||||
|
command = `git clone https://gitee.com/SmallK111407/BJT-Template.git "${url}"`
|
||||||
|
// command = `git clone https://github.com/SmallK111407/BJT-Template.git "${resPath}/xiaoyao-plus/"`;\n此链接为github图床,如异常请请求多次
|
||||||
|
e.reply("开始尝试安装体力扩展包,可能会需要一段时间,请耐心等待~");
|
||||||
|
exec(command, function(error, stdout, stderr) {
|
||||||
|
if (error) {
|
||||||
|
e.reply("角色体力扩展包安装失败!\nError code: " + error.code + "\n" + error.stack + "\n 请稍后重试。");
|
||||||
|
} else {
|
||||||
|
e.reply("角色体力扩展包安装成功!您后续也可以通过 #图鉴模板更新 命令来更新图像");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
@ -7,43 +7,69 @@ import {
|
|||||||
versionInfo,
|
versionInfo,
|
||||||
help
|
help
|
||||||
} from "./help.js";
|
} from "./help.js";
|
||||||
import {genShenMap} from './map.js'
|
import {
|
||||||
|
genShenMap
|
||||||
|
} from './map.js'
|
||||||
import {
|
import {
|
||||||
Note,
|
Note,
|
||||||
DailyNoteTask,
|
DailyNoteTask,
|
||||||
Note_appoint,
|
Note_appoint,
|
||||||
|
noteTask,
|
||||||
pokeNote
|
pokeNote
|
||||||
} from "./Note.js";
|
} from "./Note.js";
|
||||||
import {
|
import {
|
||||||
rule as adminRule,
|
rule as adminRule,
|
||||||
updateRes,
|
updateRes,
|
||||||
sysCfg,
|
sysCfg,updateTemp,
|
||||||
updateMiaoPlugin
|
updateMiaoPlugin
|
||||||
} from "./admin.js";
|
} from "./admin.js";
|
||||||
import {
|
import {
|
||||||
currentVersion
|
currentVersion
|
||||||
} from "../components/Changelog.js";
|
} from "../components/Changelog.js";
|
||||||
import {
|
import {
|
||||||
rule as userRule,delSign,updCookie,
|
rule as userRule,
|
||||||
userInfo,gclog,mytoken,bindStoken,cloudToken
|
delSign,
|
||||||
|
updCookie,
|
||||||
|
userInfo,
|
||||||
|
gclog,
|
||||||
|
mytoken,
|
||||||
|
bindStoken,
|
||||||
|
cloudToken
|
||||||
} from "./user.js"
|
} from "./user.js"
|
||||||
import {
|
import {
|
||||||
rule as signRule,
|
rule as signRule,
|
||||||
sign,bbsSign,cloudSign,seach,cookiesDocHelp,signTask
|
sign,
|
||||||
|
bbsSign,
|
||||||
|
cloudSign,
|
||||||
|
seach,
|
||||||
|
cookiesDocHelp,
|
||||||
|
signTask
|
||||||
} from "./sign.js"
|
} from "./sign.js"
|
||||||
|
|
||||||
export {
|
export {
|
||||||
updateRes,delSign,cloudSign,seach,bbsSign,
|
updateRes,updateTemp,
|
||||||
gclog,mytoken,bindStoken,
|
delSign,
|
||||||
updateMiaoPlugin,userInfo,
|
cloudSign,
|
||||||
|
seach,
|
||||||
|
bbsSign,
|
||||||
|
gclog,
|
||||||
|
mytoken,
|
||||||
|
bindStoken,
|
||||||
|
updateMiaoPlugin,
|
||||||
|
userInfo,
|
||||||
sign,
|
sign,
|
||||||
versionInfo,cloudToken,
|
versionInfo,
|
||||||
Note_appoint,signTask,
|
cloudToken,
|
||||||
pokeNote,genShenMap,
|
Note_appoint,
|
||||||
|
signTask,
|
||||||
|
pokeNote,
|
||||||
|
genShenMap,
|
||||||
cookiesDocHelp,
|
cookiesDocHelp,
|
||||||
sysCfg,
|
sysCfg,
|
||||||
help,updCookie,
|
help,
|
||||||
|
updCookie,
|
||||||
DailyNoteTask,
|
DailyNoteTask,
|
||||||
|
noteTask,
|
||||||
AtlasAlias,
|
AtlasAlias,
|
||||||
Note,
|
Note,
|
||||||
};
|
};
|
||||||
@ -68,13 +94,16 @@ let rule = {
|
|||||||
reg: "^#*(体力|树脂|查询体力|便笺|便签)$",
|
reg: "^#*(体力|树脂|查询体力|便笺|便签)$",
|
||||||
describe: "体力",
|
describe: "体力",
|
||||||
},
|
},
|
||||||
|
noteTask: {
|
||||||
|
reg: "^#*((开启|关闭)体力推送|体力设置群(推送(开启|关闭)|(阈值|上限)(\\d*)))$",
|
||||||
|
describe: "体力推送",
|
||||||
|
},
|
||||||
Note_appoint: {
|
Note_appoint: {
|
||||||
reg: "^#体力模板(设置(.*)|列表(.*))$",
|
reg: "^#体力模板(设置(.*)|列表(.*))|(#我的体力模板列表)$",
|
||||||
describe: "体力模板设置",
|
describe: "体力模板设置",
|
||||||
},
|
},
|
||||||
genShenMap:{
|
genShenMap: {
|
||||||
reg: "^#(.*)(在(哪|那)里)$",
|
reg: "^#(.*)(在(哪|那)里*)$",
|
||||||
describe: "地图资源查询 #**在哪里",
|
describe: "地图资源查询 #**在哪里",
|
||||||
},
|
},
|
||||||
pokeNote: {
|
pokeNote: {
|
||||||
@ -94,26 +123,28 @@ lodash.forEach(rule, (r) => {
|
|||||||
task();
|
task();
|
||||||
//定时任务
|
//定时任务
|
||||||
async function task() {
|
async function task() {
|
||||||
|
|
||||||
if (typeof test != "undefined") return;
|
if (typeof test != "undefined") return;
|
||||||
let set = gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/config/`, "config")
|
let set = gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/config/`, "config")
|
||||||
schedule.scheduleJob(set.mysBbsTime, function() {
|
schedule.scheduleJob(set.mysBbsTime, function() {
|
||||||
if (set.ismysSign) {
|
if (set.ismysSign) {
|
||||||
signTask('bbs')
|
signTask('bbs')
|
||||||
}
|
|
||||||
}
|
}
|
||||||
);
|
});
|
||||||
schedule.scheduleJob(set.allSignTime, function() {
|
schedule.scheduleJob(set.allSignTime, function() {
|
||||||
if (set.isSign) {
|
if (set.isSign) {
|
||||||
signTask('mys')
|
signTask('mys')
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
schedule.scheduleJob(set.YunSignTime, function() {
|
schedule.scheduleJob(set.cloudSignTime, function() {
|
||||||
if (set.isYunSign) {
|
if (set.isCloudSign) {
|
||||||
signTask('cloud')
|
signTask('cloud')
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
schedule.scheduleJob(set.noteTask, function() {
|
||||||
|
if (set.isNoteTask) {
|
||||||
|
DailyNoteTask()
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
# cookies教程
|
|
||||||
cookiesDoc: docs.qq.com/doc/DV2tDY2ltSFdtbU9z
|
|
||||||
# 米币签到成功是否推送
|
|
||||||
isPushSign: false
|
|
||||||
# 米游社米币签到定时任务,Cron表达式,默认00:02开始执行签到
|
|
||||||
mysBbsTime: 0 2 0 * * ?
|
|
||||||
# 米币是否自动签到
|
|
||||||
ismysSign: true
|
|
||||||
|
|
||||||
|
|
||||||
# 签到成功是否推送
|
|
||||||
isAllSign: false
|
|
||||||
# 米游社签到定时任务,Cron表达式,默认00:02开始执行签到
|
|
||||||
allSignTime: 0 2 0 * * ?
|
|
||||||
# 是否自动签到
|
|
||||||
isSign: true
|
|
||||||
|
|
||||||
# 云原神是否自动签到
|
|
||||||
isYunSign: true
|
|
||||||
# 米游社签到定时任务,Cron表达式,默认04:02开始执行签到
|
|
||||||
YunSignTime: 0 2 4 * * ?
|
|
||||||
# 云原神签到成功是否推送
|
|
||||||
isYunSignMsg: false
|
|
||||||
# 云原神帮助
|
|
||||||
yunDoc: docs.qq.com/doc/DTnJIREZwTmxEVHBl
|
|
@ -1,6 +1,4 @@
|
|||||||
#此文件为默认配置请勿修改此文件
|
# 配置文件修改后需要重启生效
|
||||||
|
|
||||||
# cookies教程
|
|
||||||
# stoken 教程2由 @逍遥 提供 https://docs.qq.com/doc/DVFdKVHBRR3RaUWxL
|
# stoken 教程2由 @逍遥 提供 https://docs.qq.com/doc/DVFdKVHBRR3RaUWxL
|
||||||
cookiesDoc: docs.qq.com/doc/DV2tDY2ltSFdtbU9z
|
cookiesDoc: docs.qq.com/doc/DV2tDY2ltSFdtbU9z
|
||||||
# 米币签到成功是否推送
|
# 米币签到成功是否推送
|
||||||
@ -8,14 +6,14 @@ isPushSign: false
|
|||||||
# 米游社米币签到定时任务,Cron表达式,默认00:02开始执行签到
|
# 米游社米币签到定时任务,Cron表达式,默认00:02开始执行签到
|
||||||
mysBbsTime: 0 2 0 * * ?
|
mysBbsTime: 0 2 0 * * ?
|
||||||
# 米币是否自动签到
|
# 米币是否自动签到
|
||||||
ismysSign: true
|
ismysSign: false
|
||||||
|
|
||||||
# 签到成功是否推送
|
# 签到成功是否推送
|
||||||
isAllSign: false
|
isAllSign: false
|
||||||
# 米游社签到定时任务,Cron表达式,默认00:02开始执行签到
|
# 米游社签到定时任务,Cron表达式,默认00:02开始执行签到
|
||||||
allSignTime: 0 2 0 * * ?
|
allSignTime: 0 2 0 * * ?
|
||||||
# 是否自动签到
|
# 是否自动签到
|
||||||
isSign: true
|
isSign: false
|
||||||
# 默认签到游戏模板 仅支持 原神|崩坏3|崩坏2|未定事件簿
|
# 默认签到游戏模板 仅支持 原神|崩坏3|崩坏2|未定事件簿
|
||||||
signlist:
|
signlist:
|
||||||
- 原神
|
- 原神
|
||||||
@ -24,14 +22,18 @@ signlist:
|
|||||||
- 未定事件簿
|
- 未定事件簿
|
||||||
|
|
||||||
# 云原神是否自动签到
|
# 云原神是否自动签到
|
||||||
isYunSign: true
|
isCloudSign: false
|
||||||
# 米游社签到定时任务,Cron表达式,默认04:02开始执行签到
|
# 米游社签到定时任务,Cron表达式,默认04:02开始执行签到
|
||||||
YunSignTime: 0 2 4 * * ?
|
cloudSignTime: 0 2 4 * * ?
|
||||||
# 云原神签到成功是否推送
|
# 云原神签到成功是否推送
|
||||||
isYunSignMsg: false
|
isCloudSignMsg: false
|
||||||
# 云原神帮助 由 @FanSky_Qs 提供
|
# 云原神帮助 由 @FanSky_Qs 提供
|
||||||
yunDoc: docs.qq.com/doc/DTnJIREZwTmxEVHBl
|
cloudDoc: docs.qq.com/doc/DTnJIREZwTmxEVHBl
|
||||||
#更新抽卡记录缓存时间默认5分钟
|
#更新抽卡记录缓存时间默认5分钟
|
||||||
gclogEx: 5
|
gclogEx: 5
|
||||||
# 体力设置开启关闭权限 1-群管理员才能开启关闭 2-主人才能开启关闭
|
# 体力设置开启关闭权限 1-群管理员才能开启关闭 2-主人才能开启关闭
|
||||||
noteSetAuth: 1
|
noteSetAuth: 2
|
||||||
|
# 体力推送 间隔 10分钟检索一次
|
||||||
|
noteTask: 0 0/10 * * ?
|
||||||
|
# 全局开关体力推送 关闭后不可操作体力推送相关内容 true开启 false 关闭
|
||||||
|
isNoteTask: false
|
0
defSet/config/note.yaml
Normal file
0
defSet/config/note.yaml
Normal file
918
defSet/json/map.yaml
Normal file
918
defSet/json/map.yaml
Normal file
@ -0,0 +1,918 @@
|
|||||||
|
#别名配置文件
|
||||||
|
传送点:
|
||||||
|
七天神像:
|
||||||
|
- 七天神像
|
||||||
|
- 神像
|
||||||
|
传送锚点:
|
||||||
|
- 传送锚点
|
||||||
|
- 锚点
|
||||||
|
- 世界锚点
|
||||||
|
- 传送点
|
||||||
|
秘境:
|
||||||
|
- 秘境
|
||||||
|
南十字·死兆星:
|
||||||
|
- 南十字·死兆星
|
||||||
|
- 死兆星
|
||||||
|
- 南十字
|
||||||
|
- 北斗船队
|
||||||
|
群玉阁:
|
||||||
|
- 群玉阁
|
||||||
|
- 璃月核弹
|
||||||
|
地标:
|
||||||
|
洞口:
|
||||||
|
- 洞口
|
||||||
|
- 洞
|
||||||
|
浪船锚点:
|
||||||
|
- 浪船锚点
|
||||||
|
- 船点
|
||||||
|
- 浪船点
|
||||||
|
忍冬之树:
|
||||||
|
- 忍冬之树
|
||||||
|
- 冬树
|
||||||
|
- 雪山树
|
||||||
|
神樱:
|
||||||
|
- 神樱
|
||||||
|
- 稻妻树
|
||||||
|
- 神樱树
|
||||||
|
梦之树:
|
||||||
|
- 梦之树
|
||||||
|
- 须弥树
|
||||||
|
露天宝箱:
|
||||||
|
普通的宝箱:
|
||||||
|
- 普通的宝箱
|
||||||
|
- 普通宝箱
|
||||||
|
精致的宝箱:
|
||||||
|
- 精致的宝箱
|
||||||
|
- 精致宝箱
|
||||||
|
珍贵的宝箱:
|
||||||
|
- 珍贵的宝箱
|
||||||
|
- 珍贵宝箱
|
||||||
|
华丽的宝箱:
|
||||||
|
- 华丽的宝箱
|
||||||
|
- 华丽宝箱
|
||||||
|
奇馈宝箱:
|
||||||
|
- 奇馈宝箱
|
||||||
|
- 奇馈的宝箱
|
||||||
|
解谜宝箱:
|
||||||
|
指引仙灵:
|
||||||
|
- 指引仙灵
|
||||||
|
温暧仙灵:
|
||||||
|
- 温暧仙灵
|
||||||
|
限时挑战:
|
||||||
|
- 限时挑战
|
||||||
|
风车机关:
|
||||||
|
- 风车机关
|
||||||
|
- 大风机关
|
||||||
|
压力机关:
|
||||||
|
- 压力机关
|
||||||
|
元素方碑:
|
||||||
|
- 元素方碑
|
||||||
|
- 元素碑
|
||||||
|
火炬机关:
|
||||||
|
- 火炬机关
|
||||||
|
巨型碎石:
|
||||||
|
- 巨型碎石
|
||||||
|
- 巨石
|
||||||
|
小石堆:
|
||||||
|
- 小石堆
|
||||||
|
拔植物:
|
||||||
|
- 拔植物
|
||||||
|
雷灵:
|
||||||
|
- 雷灵
|
||||||
|
- 雷仙灵
|
||||||
|
漂浮的风史莱姆:
|
||||||
|
- 漂浮的风史莱姆
|
||||||
|
- 风史莱姆
|
||||||
|
蓬蓬果:
|
||||||
|
- 蓬蓬果
|
||||||
|
- 飞天果
|
||||||
|
微解谜:
|
||||||
|
- 微解谜
|
||||||
|
- 小解谜
|
||||||
|
雷霆探针:
|
||||||
|
- 雷霆探针
|
||||||
|
- 雷针
|
||||||
|
狂风屏障:
|
||||||
|
- 狂风屏障
|
||||||
|
- 风屏障
|
||||||
|
机关立方:
|
||||||
|
- 机关立方
|
||||||
|
挖掘宝箱:
|
||||||
|
- 挖掘宝箱
|
||||||
|
- 挖掘箱
|
||||||
|
被束缚的宝箱:
|
||||||
|
- 被束缚的宝箱
|
||||||
|
- 束缚箱
|
||||||
|
电气传导:
|
||||||
|
- 电气传导
|
||||||
|
- 电气石
|
||||||
|
连线石板:
|
||||||
|
- 连线石板
|
||||||
|
- 连线板
|
||||||
|
首杀敌人:
|
||||||
|
- 首杀敌人
|
||||||
|
- 首杀怪
|
||||||
|
- 首杀怪物
|
||||||
|
- 首杀
|
||||||
|
奇特的岩石:
|
||||||
|
- 奇特的岩石
|
||||||
|
野外的苗圃:
|
||||||
|
- 野外的苗圃
|
||||||
|
桑格吉拉光机:
|
||||||
|
- 桑格吉拉光机
|
||||||
|
石柱的封印:
|
||||||
|
- 石柱的封印
|
||||||
|
三乘种子:
|
||||||
|
- 三乘种子
|
||||||
|
- 会飞的草种子
|
||||||
|
- 毛球种子
|
||||||
|
须弥解谜:
|
||||||
|
- 须弥解谜
|
||||||
|
死域:
|
||||||
|
- 死域
|
||||||
|
幻梦之门:
|
||||||
|
- 幻梦之门
|
||||||
|
元能尖碑:
|
||||||
|
- 元能尖碑
|
||||||
|
幻影壁画:
|
||||||
|
- 幻影壁画
|
||||||
|
恒光元件:
|
||||||
|
- 恒光元件
|
||||||
|
元能火种:
|
||||||
|
- 元能火种
|
||||||
|
元能沙钟:
|
||||||
|
- 元能沙钟
|
||||||
|
- 倒计时
|
||||||
|
- 元能沙漏
|
||||||
|
区域特产:
|
||||||
|
落落莓:
|
||||||
|
- 落落莓
|
||||||
|
- 丽莎突破材料
|
||||||
|
- 诺艾尔突破材料
|
||||||
|
- 女仆突破材料
|
||||||
|
- 罗莎莉亚突破材料
|
||||||
|
- 修女突破材料
|
||||||
|
绝云椒椒:
|
||||||
|
- 绝云椒椒
|
||||||
|
- 辣椒
|
||||||
|
- 香菱突破材料
|
||||||
|
嘟嘟莲:
|
||||||
|
- 嘟嘟莲
|
||||||
|
- 凯亚突破材料
|
||||||
|
- 凯子哥突破材料
|
||||||
|
- 迪奥娜突破材料
|
||||||
|
- dio娜破材料
|
||||||
|
清心:
|
||||||
|
- 清心
|
||||||
|
- 甘雨突破材料
|
||||||
|
- 椰羊突破材料
|
||||||
|
- 申鹤突破材料
|
||||||
|
- 魈突破材料
|
||||||
|
小灯草:
|
||||||
|
- 小灯草
|
||||||
|
- 迪卢克突破材料
|
||||||
|
- 姥爷突破材料
|
||||||
|
- 老爷突破材料
|
||||||
|
- 安柏突破材料
|
||||||
|
- 菲谢尔突破材料
|
||||||
|
- 皇女突破材料
|
||||||
|
琉璃袋:
|
||||||
|
- 琉璃袋
|
||||||
|
- 七七突破材料
|
||||||
|
- 小僵尸突破材料
|
||||||
|
- 僵尸突破材料
|
||||||
|
- 辛焱突破材料
|
||||||
|
塞西莉亚花:
|
||||||
|
- 塞西莉亚花
|
||||||
|
- 温迪突破材料
|
||||||
|
- 卖唱的突破材料
|
||||||
|
- 阿贝多突破材料
|
||||||
|
- 阿贝少突破材料
|
||||||
|
- 阿贝夕突破材料
|
||||||
|
- 阿贝花突破材料
|
||||||
|
霓裳花:
|
||||||
|
- 霓裳花
|
||||||
|
- 胡桃突破材料
|
||||||
|
- 圣人突破材料
|
||||||
|
- 行秋突破材料
|
||||||
|
蒲公英籽:
|
||||||
|
- 蒲公英籽
|
||||||
|
- 优菈突破材料
|
||||||
|
- 琴突破材料
|
||||||
|
- 琴团长突破材料
|
||||||
|
琉璃百合:
|
||||||
|
- 琉璃百合
|
||||||
|
- 凝光突破材料
|
||||||
|
- 富婆突破材料
|
||||||
|
- 云堇突破材料
|
||||||
|
- 云先生突破材料
|
||||||
|
慕风蘑菇:
|
||||||
|
- 慕风蘑菇
|
||||||
|
- 莫娜突破材料
|
||||||
|
- 可莉突破材料
|
||||||
|
- 芭芭拉突破材料
|
||||||
|
- 内鬼突破材料
|
||||||
|
石珀:
|
||||||
|
- 石珀
|
||||||
|
- 钟离突破材料
|
||||||
|
- 帝君突破材料
|
||||||
|
- 老爷子突破材料
|
||||||
|
- 岩王爷突破材料
|
||||||
|
- 刻晴突破材料
|
||||||
|
- 阿晴突破材料
|
||||||
|
- 重云突破材料
|
||||||
|
钩钩果:
|
||||||
|
- 钩钩果
|
||||||
|
- 雷泽突破材料
|
||||||
|
夜泊石:
|
||||||
|
- 夜泊石
|
||||||
|
- 北斗突破材料
|
||||||
|
- 烟绯突破材料
|
||||||
|
- 律师突破材料
|
||||||
|
风车菊:
|
||||||
|
- 风车菊
|
||||||
|
- 旅行者突破材料
|
||||||
|
- 爷突破材料
|
||||||
|
- 空突破材料
|
||||||
|
- 荧突破材料
|
||||||
|
- 空哥突破材料
|
||||||
|
- 荧妹突破材料
|
||||||
|
- 钟班尼特突破材料
|
||||||
|
- 砂糖突破材料
|
||||||
|
星螺:
|
||||||
|
- 星螺
|
||||||
|
- 夜兰突破材料
|
||||||
|
- 夜阑突破材料
|
||||||
|
- 达达利亚突破材料
|
||||||
|
- 达达鸭突破材料
|
||||||
|
- 公子突破材料
|
||||||
|
- 鸭鸭突破材料
|
||||||
|
海灵芝:
|
||||||
|
- 海灵芝
|
||||||
|
- 八重神子突破材料
|
||||||
|
- 神子突破材料
|
||||||
|
- 八重突破材料
|
||||||
|
- 枫原万叶突破材料
|
||||||
|
- 万叶突破材料
|
||||||
|
鬼兜虫:
|
||||||
|
- 鬼兜虫
|
||||||
|
- 荒泷一斗突破材料
|
||||||
|
- 一斗突破材料
|
||||||
|
- 鹿野院平藏突破材料
|
||||||
|
- 平藏突破材料
|
||||||
|
- 小鹿突破材料
|
||||||
|
鸣草:
|
||||||
|
- 鸣草
|
||||||
|
- 宵宫突破材料
|
||||||
|
- 久岐忍突破材料
|
||||||
|
- 97忍突破材料
|
||||||
|
血斛:
|
||||||
|
- 血斛
|
||||||
|
- 九条裟罗突破材料
|
||||||
|
- 九条突破材料
|
||||||
|
- 裟罗突破材料
|
||||||
|
绯樱绣球:
|
||||||
|
- 绯樱绣球
|
||||||
|
- 神里绫人突破材料
|
||||||
|
- 绫人突破材料
|
||||||
|
- 神里绫华突破材料
|
||||||
|
- 绫华突破材料
|
||||||
|
晶化骨髓:
|
||||||
|
- 晶化骨髓
|
||||||
|
- 埃洛伊突破材料
|
||||||
|
- 早柚突破材料
|
||||||
|
珊瑚真珠:
|
||||||
|
- 珊瑚真珠
|
||||||
|
- 珊瑚宫心海突破材料
|
||||||
|
- 心海突破材料
|
||||||
|
- 五郎突破材料
|
||||||
|
- 希娜小姐突破材料
|
||||||
|
- 希娜突破材料
|
||||||
|
天云草实:
|
||||||
|
- 天云草实
|
||||||
|
- 雷电将军突破材料
|
||||||
|
- 雷电影突破材料
|
||||||
|
- 将军突破材料
|
||||||
|
- 影突破材料
|
||||||
|
幽灯蕈:
|
||||||
|
- 幽灯蕈
|
||||||
|
- 托马突破材料
|
||||||
|
月莲:
|
||||||
|
- 月莲
|
||||||
|
- 提纳里突破材料
|
||||||
|
- 提那里突破材料
|
||||||
|
- 提这里突破材料
|
||||||
|
劫波莲:
|
||||||
|
- 劫波莲
|
||||||
|
- 多莉突破材料
|
||||||
|
树王圣体菇:
|
||||||
|
- 树王圣体菇
|
||||||
|
- 科莱突破材料
|
||||||
|
帕蒂沙兰:
|
||||||
|
- 帕蒂沙兰
|
||||||
|
- 妮露突破材料
|
||||||
|
圣金虫:
|
||||||
|
- 圣金虫
|
||||||
|
- 赛诺突破材料
|
||||||
|
赤念果:
|
||||||
|
- 赤念果
|
||||||
|
- 坎蒂丝突破材料
|
||||||
|
- 凯蒂丝突破材料
|
||||||
|
神瞳:
|
||||||
|
风神瞳:
|
||||||
|
- 风神瞳
|
||||||
|
岩神瞳:
|
||||||
|
- 岩神瞳
|
||||||
|
绯红玉髓:
|
||||||
|
- 绯红玉髓
|
||||||
|
- 玉髓
|
||||||
|
雷神瞳:
|
||||||
|
- 雷神瞳
|
||||||
|
键纹Ⅱ:
|
||||||
|
- 键纹Ⅱ
|
||||||
|
- 键纹2
|
||||||
|
键纹Ⅲ:
|
||||||
|
- 键纹Ⅲ
|
||||||
|
- 键纹3
|
||||||
|
键纹IV:
|
||||||
|
- 键纹IV
|
||||||
|
- 键纹4
|
||||||
|
草神瞳:
|
||||||
|
- 草神瞳
|
||||||
|
圣章石:
|
||||||
|
- 圣章石
|
||||||
|
敌人(普通):
|
||||||
|
丘丘人:
|
||||||
|
- 丘丘人
|
||||||
|
丘丘萨满:
|
||||||
|
- 丘丘萨满
|
||||||
|
盗宝团:
|
||||||
|
- 盗宝团
|
||||||
|
丘丘射手:
|
||||||
|
- 丘丘射手
|
||||||
|
史莱姆:
|
||||||
|
- 史莱姆
|
||||||
|
野伏众:
|
||||||
|
- 野伏众
|
||||||
|
- 野人众
|
||||||
|
飘浮灵:
|
||||||
|
- 飘浮灵
|
||||||
|
- 怨种灵
|
||||||
|
愚人众先遣队:
|
||||||
|
- 愚人众先遣队
|
||||||
|
- 先遣队
|
||||||
|
骗骗花:
|
||||||
|
- 骗骗花
|
||||||
|
蕈兽:
|
||||||
|
- 蕈兽
|
||||||
|
- 笨蛋兽
|
||||||
|
镀金旅团:
|
||||||
|
- 镀金旅团
|
||||||
|
敌人(精英):
|
||||||
|
丘丘暴徒:
|
||||||
|
- 丘丘暴徒
|
||||||
|
深渊法师:
|
||||||
|
- 深渊法师
|
||||||
|
愚人众·债务处理人:
|
||||||
|
- 愚人众·债务处理人
|
||||||
|
- 债务处理人
|
||||||
|
- 讨债的
|
||||||
|
愚人众·萤术士:
|
||||||
|
- 愚人众·萤术士
|
||||||
|
- 萤术士
|
||||||
|
遗迹机兵:
|
||||||
|
- 遗迹机兵
|
||||||
|
遗迹重机:
|
||||||
|
- 遗迹重机
|
||||||
|
遗迹守卫:
|
||||||
|
- 遗迹守卫
|
||||||
|
- 独眼小宝
|
||||||
|
遗迹猎者:
|
||||||
|
- 遗迹猎者
|
||||||
|
幼岩龙蜥:
|
||||||
|
- 幼岩龙蜥
|
||||||
|
岩龙蜥:
|
||||||
|
- 岩龙蜥
|
||||||
|
丘丘王:
|
||||||
|
- 丘丘王
|
||||||
|
大雪猪王:
|
||||||
|
- 大雪猪王
|
||||||
|
- 雪猪王
|
||||||
|
狂风之核:
|
||||||
|
- 狂风之核
|
||||||
|
藏镜仕女:
|
||||||
|
- 藏镜仕女
|
||||||
|
- 藏镜
|
||||||
|
- 仕女
|
||||||
|
兽境之狼:
|
||||||
|
- 兽境之狼
|
||||||
|
- 流血狗
|
||||||
|
遗迹龙兽:
|
||||||
|
- 遗迹龙兽
|
||||||
|
- 机甲暴龙兽
|
||||||
|
元能构装体:
|
||||||
|
- 元能构装体
|
||||||
|
敌人(BOSS):
|
||||||
|
无相之风:
|
||||||
|
- 无相之风
|
||||||
|
- 无相风
|
||||||
|
急冻树:
|
||||||
|
- 急冻树
|
||||||
|
- 冰树
|
||||||
|
北风的王狼,奔狼的领主:
|
||||||
|
- 北风的王狼
|
||||||
|
- 奔狼的领主
|
||||||
|
- 北风的王狼
|
||||||
|
- 狼王
|
||||||
|
- 奔狼的领主
|
||||||
|
无相之雷:
|
||||||
|
- 无相之雷
|
||||||
|
- 无相雷
|
||||||
|
纯水精灵:
|
||||||
|
- 纯水精灵
|
||||||
|
- 纯水
|
||||||
|
爆炎树:
|
||||||
|
- 爆炎树
|
||||||
|
- 火树
|
||||||
|
无相之岩:
|
||||||
|
- 无相之岩
|
||||||
|
- 无相岩
|
||||||
|
古岩龙蜥:
|
||||||
|
- 古岩龙蜥
|
||||||
|
无相之冰:
|
||||||
|
- 无相之冰
|
||||||
|
- 无相冰
|
||||||
|
魔偶剑鬼:
|
||||||
|
- 魔偶剑鬼
|
||||||
|
- 魔偶
|
||||||
|
- 剑鬼
|
||||||
|
无相之火:
|
||||||
|
- 无相之火
|
||||||
|
- 无相火
|
||||||
|
- 无相之耻
|
||||||
|
- 无相耻
|
||||||
|
恒常机关列阵:
|
||||||
|
- 恒常机关列阵
|
||||||
|
- 恒常机关
|
||||||
|
无相之水:
|
||||||
|
- 无相之水
|
||||||
|
- 无相水
|
||||||
|
雷音权现:
|
||||||
|
- 雷音权现
|
||||||
|
- 雷鸟
|
||||||
|
黄金王兽:
|
||||||
|
- 黄金王兽
|
||||||
|
掣电树:
|
||||||
|
- 掣电树
|
||||||
|
- 雷树
|
||||||
|
翠翎恐蕈:
|
||||||
|
- 翠翎恐蕈
|
||||||
|
- 鸡哥
|
||||||
|
兆载永劫龙兽:
|
||||||
|
- 兆载永劫龙兽
|
||||||
|
- 永劫龙兽
|
||||||
|
半永恒统辖距阵:
|
||||||
|
- 半永恒统辖距阵
|
||||||
|
- 永恒距阵
|
||||||
|
- 矩阵
|
||||||
|
兰那罗:
|
||||||
|
兰那罗1:
|
||||||
|
- 兰那罗1
|
||||||
|
- 兰那罗
|
||||||
|
兰那罗2:
|
||||||
|
- 兰那罗2
|
||||||
|
垂钓:
|
||||||
|
垂钓点:
|
||||||
|
- 垂钓点
|
||||||
|
- 钓鱼点
|
||||||
|
花鳉:
|
||||||
|
- 花鳉
|
||||||
|
琉璃花鳉:
|
||||||
|
- 琉璃花鳉
|
||||||
|
甜甜花鳉:
|
||||||
|
- 甜甜花鳉
|
||||||
|
蓝染花鳉:
|
||||||
|
- 蓝染花鳉
|
||||||
|
擒霞客:
|
||||||
|
- 擒霞客
|
||||||
|
水晶宴:
|
||||||
|
- 水晶宴
|
||||||
|
肺棘鱼:
|
||||||
|
- 肺棘鱼
|
||||||
|
斗棘鱼:
|
||||||
|
- 斗棘鱼
|
||||||
|
鸩棘鱼:
|
||||||
|
- 鸩棘鱼
|
||||||
|
赤魔王:
|
||||||
|
- 赤魔王
|
||||||
|
雪中君:
|
||||||
|
- 雪中君
|
||||||
|
金赤假龙:
|
||||||
|
- 金赤假龙
|
||||||
|
铸假龙:
|
||||||
|
- 铸假龙
|
||||||
|
流纹褐蝶鱼:
|
||||||
|
- 流纹褐蝶鱼
|
||||||
|
- 褐蝶鱼
|
||||||
|
流纹京紫蝶鱼:
|
||||||
|
- 流纹京紫蝶鱼
|
||||||
|
- 京紫蝶鱼
|
||||||
|
流纹茶蝶鱼:
|
||||||
|
- 流纹茶蝶鱼
|
||||||
|
- 茶蝶鱼
|
||||||
|
长生仙:
|
||||||
|
- 长生仙
|
||||||
|
雷鸣仙:
|
||||||
|
- 雷鸣仙
|
||||||
|
炮鲀:
|
||||||
|
- 炮鲀
|
||||||
|
苦炮鲀:
|
||||||
|
- 苦炮鲀
|
||||||
|
真果角鲀:
|
||||||
|
- 真果角鲀
|
||||||
|
沉波蛮桃:
|
||||||
|
- 沉波蛮桃
|
||||||
|
吹沙角鲀:
|
||||||
|
- 吹沙角鲀
|
||||||
|
暮云角鲀:
|
||||||
|
- 暮云角鲀
|
||||||
|
青金斧枪鱼:
|
||||||
|
- 青金斧枪鱼
|
||||||
|
翡玉斧枪鱼:
|
||||||
|
- 翡玉斧枪鱼
|
||||||
|
材料:
|
||||||
|
冰雾花花朵:
|
||||||
|
- 冰雾花花朵
|
||||||
|
- 冰雾花
|
||||||
|
烈焰花花蕊:
|
||||||
|
- 烈焰花花蕊
|
||||||
|
- 烈焰花
|
||||||
|
电气水晶:
|
||||||
|
- 电气水晶
|
||||||
|
竹笋:
|
||||||
|
- 竹笋
|
||||||
|
- 笋
|
||||||
|
鳅鳅宝玉:
|
||||||
|
- 鳅鳅宝玉
|
||||||
|
晶核:
|
||||||
|
- 晶核
|
||||||
|
蝴蝶:
|
||||||
|
- 蝴蝶
|
||||||
|
- 蛾子
|
||||||
|
- 扑棱蛾子
|
||||||
|
金鱼草:
|
||||||
|
- 金鱼草
|
||||||
|
马尾:
|
||||||
|
- 马尾
|
||||||
|
青蛙:
|
||||||
|
- 青蛙
|
||||||
|
蜥蜴尾巴:
|
||||||
|
- 蜥蜴尾巴
|
||||||
|
螃蟹:
|
||||||
|
- 螃蟹
|
||||||
|
兽肉:
|
||||||
|
- 兽肉
|
||||||
|
鱼肉:
|
||||||
|
- 鱼肉
|
||||||
|
禽肉:
|
||||||
|
- 禽肉
|
||||||
|
松茸:
|
||||||
|
- 松茸
|
||||||
|
松果:
|
||||||
|
- 松果
|
||||||
|
乌蛋:
|
||||||
|
- 乌蛋
|
||||||
|
奇异的「牙齿」:
|
||||||
|
- 奇异的「牙齿」
|
||||||
|
- 奇异的牙齿
|
||||||
|
- 牙齿
|
||||||
|
「冷鲜肉」:
|
||||||
|
- 「冷鲜肉」
|
||||||
|
- 冷鲜肉
|
||||||
|
- 冰冻肉
|
||||||
|
甜甜花:
|
||||||
|
- 甜甜花
|
||||||
|
薄荷:
|
||||||
|
- 薄荷
|
||||||
|
蘑菇:
|
||||||
|
- 蘑菇
|
||||||
|
树莓:
|
||||||
|
- 树莓
|
||||||
|
日落果:
|
||||||
|
- 日落果
|
||||||
|
苹果:
|
||||||
|
- 苹果
|
||||||
|
莲蓬:
|
||||||
|
- 莲蓬
|
||||||
|
胡萝卜:
|
||||||
|
- 胡萝卜
|
||||||
|
白萝卜:
|
||||||
|
- 白萝卜
|
||||||
|
发光髓:
|
||||||
|
- 发光髓
|
||||||
|
堇瓜:
|
||||||
|
- 堇瓜
|
||||||
|
海草:
|
||||||
|
- 海草
|
||||||
|
鳗肉:
|
||||||
|
- 鳗肉
|
||||||
|
星蕈:
|
||||||
|
- 星蕈
|
||||||
|
旋曜玉帛:
|
||||||
|
- 旋曜玉帛
|
||||||
|
- 玉帛
|
||||||
|
老石:
|
||||||
|
- 老石
|
||||||
|
须弥蔷薇:
|
||||||
|
- 须弥蔷薇
|
||||||
|
墩墩桃:
|
||||||
|
- 墩墩桃
|
||||||
|
香辛果:
|
||||||
|
- 香辛果
|
||||||
|
毗波耶:
|
||||||
|
- 毗波耶
|
||||||
|
枣椰:
|
||||||
|
- 枣椰
|
||||||
|
动物:
|
||||||
|
白鸽:
|
||||||
|
- 白鸽
|
||||||
|
薄红蟹:
|
||||||
|
- 薄红蟹
|
||||||
|
碧团雀:
|
||||||
|
- 碧团雀
|
||||||
|
冰晶蝶:
|
||||||
|
- 冰晶蝶
|
||||||
|
赤鳍陆鳗鳗:
|
||||||
|
- 赤鳍陆鳗鳗
|
||||||
|
赤团雀:
|
||||||
|
- 赤团雀
|
||||||
|
赤胁鸽:
|
||||||
|
- 赤胁鸽
|
||||||
|
风晶蝶:
|
||||||
|
- 风晶蝶
|
||||||
|
海蓝蟹:
|
||||||
|
- 海蓝蟹
|
||||||
|
黑王鸽:
|
||||||
|
- 黑王鸽
|
||||||
|
红狐:
|
||||||
|
- 红狐
|
||||||
|
红角蜥:
|
||||||
|
- 红角蜥
|
||||||
|
红尾鼬:
|
||||||
|
- 红尾鼬
|
||||||
|
狐:
|
||||||
|
- 狐
|
||||||
|
黄金蟹:
|
||||||
|
- 黄金蟹
|
||||||
|
灰雪猫:
|
||||||
|
- 灰雪猫
|
||||||
|
灰羽鸽:
|
||||||
|
- 灰羽鸽
|
||||||
|
将军蟹:
|
||||||
|
- 将军蟹
|
||||||
|
金鳅鳅:
|
||||||
|
- 金鳅鳅
|
||||||
|
金团雀:
|
||||||
|
- 金团雀
|
||||||
|
菫鹮:
|
||||||
|
- 菫鹮
|
||||||
|
蓝宝石:
|
||||||
|
- 蓝宝石
|
||||||
|
蓝角蜥:
|
||||||
|
- 蓝角蜥
|
||||||
|
蓝蛙:
|
||||||
|
- 蓝蛙
|
||||||
|
雷晶蝶:
|
||||||
|
- 雷晶蝶
|
||||||
|
璃冠鸽:
|
||||||
|
- 璃冠鸽
|
||||||
|
落日鳅鳅:
|
||||||
|
- 落日鳅鳅
|
||||||
|
绿角蜥:
|
||||||
|
- 绿角蜥
|
||||||
|
泥蛙:
|
||||||
|
- 泥蛙
|
||||||
|
青蛙:
|
||||||
|
- 青蛙
|
||||||
|
晴天鳅鳅:
|
||||||
|
- 晴天鳅鳅
|
||||||
|
嗜髓蜥:
|
||||||
|
- 嗜髓蜥
|
||||||
|
松鼠:
|
||||||
|
- 松鼠
|
||||||
|
太阳蟹:
|
||||||
|
- 太阳蟹
|
||||||
|
藤纹陆鳗鳗:
|
||||||
|
- 藤纹陆鳗鳗
|
||||||
|
靴子鼬:
|
||||||
|
- 靴子鼬
|
||||||
|
雪狐:
|
||||||
|
- 雪狐
|
||||||
|
雪团雀:
|
||||||
|
- 雪团雀
|
||||||
|
雪隐鼬:
|
||||||
|
- 雪隐鼬
|
||||||
|
雪猪:
|
||||||
|
- 雪猪
|
||||||
|
鸦:
|
||||||
|
- 鸦
|
||||||
|
岩晶蝶:
|
||||||
|
- 岩晶蝶
|
||||||
|
蕈猪:
|
||||||
|
- 蕈猪
|
||||||
|
草晶蝶:
|
||||||
|
- 草晶蝶
|
||||||
|
瞑彩鸟:
|
||||||
|
- 瞑彩鸟
|
||||||
|
沙狐:
|
||||||
|
- 沙狐
|
||||||
|
流沙鳗鳗:
|
||||||
|
- 流沙鳗鳗
|
||||||
|
赤尾蜥:
|
||||||
|
- 赤尾蜥
|
||||||
|
面具鼬:
|
||||||
|
- 面具鼬
|
||||||
|
地灵龛:
|
||||||
|
蒙德地灵龛:
|
||||||
|
- 蒙德地灵龛
|
||||||
|
璃月地灵龛:
|
||||||
|
- 璃月地灵龛
|
||||||
|
稻妻地灵龛:
|
||||||
|
- 稻妻地灵龛
|
||||||
|
须弥地灵龛:
|
||||||
|
- 须弥地灵龛
|
||||||
|
世界任务:
|
||||||
|
世界任务:
|
||||||
|
- 世界任务
|
||||||
|
解谜:
|
||||||
|
岩种子:
|
||||||
|
- 岩种子
|
||||||
|
古代坚冰:
|
||||||
|
- 古代坚冰
|
||||||
|
8个石碑:
|
||||||
|
- 8个石碑
|
||||||
|
3个宝匣:
|
||||||
|
- 3个宝匣
|
||||||
|
剑柄:
|
||||||
|
- 剑柄
|
||||||
|
水泡:
|
||||||
|
- 水泡
|
||||||
|
- 泡泡
|
||||||
|
妖狸:
|
||||||
|
- 妖狸
|
||||||
|
封锁点Ⅱ:
|
||||||
|
- 封锁点Ⅱ
|
||||||
|
- 封锁点2
|
||||||
|
封锁点Ⅲ:
|
||||||
|
- 封锁点Ⅲ
|
||||||
|
- 封锁点3
|
||||||
|
封锁点IV:
|
||||||
|
- 封锁点IV
|
||||||
|
- 封锁点4
|
||||||
|
琥珀:
|
||||||
|
- 琥珀
|
||||||
|
指引:
|
||||||
|
雷种子:
|
||||||
|
- 雷种子
|
||||||
|
相位之门:
|
||||||
|
- 相位之门
|
||||||
|
- 传送门
|
||||||
|
雷石:
|
||||||
|
- 雷石
|
||||||
|
神秘的刻像:
|
||||||
|
- 神秘的刻像
|
||||||
|
- 神秘刻像
|
||||||
|
- 神秘的狐狸雕像
|
||||||
|
- 神秘的狐狸像
|
||||||
|
锅:
|
||||||
|
- 锅
|
||||||
|
- 做饭的
|
||||||
|
篝火/火把:
|
||||||
|
- 篝火/火把
|
||||||
|
- 篝火
|
||||||
|
- 火把
|
||||||
|
遗迹之蚀:
|
||||||
|
- 遗迹之蚀
|
||||||
|
仙灵之庭:
|
||||||
|
- 仙灵之庭
|
||||||
|
- 仙灵的家
|
||||||
|
- 仙灵柱子
|
||||||
|
草种子:
|
||||||
|
- 草种子
|
||||||
|
弹弹菇:
|
||||||
|
- 弹弹菇
|
||||||
|
- 弹跳菇
|
||||||
|
众叶觉蕊:
|
||||||
|
- 众叶觉蕊
|
||||||
|
草石头:
|
||||||
|
- 草石头
|
||||||
|
草桩:
|
||||||
|
- 草桩
|
||||||
|
矿物:
|
||||||
|
白铁块:
|
||||||
|
- 白铁块
|
||||||
|
- 白铁矿
|
||||||
|
水晶块:
|
||||||
|
- 水晶块
|
||||||
|
- 水晶矿
|
||||||
|
魔晶块:
|
||||||
|
- 魔晶块
|
||||||
|
- 魔晶矿
|
||||||
|
星银矿石:
|
||||||
|
- 星银矿石
|
||||||
|
- 星银矿
|
||||||
|
深赤之石:
|
||||||
|
- 深赤之石
|
||||||
|
- 红石
|
||||||
|
铁块:
|
||||||
|
- 铁块
|
||||||
|
- 铁矿
|
||||||
|
紫晶块:
|
||||||
|
- 紫晶块
|
||||||
|
- 紫晶矿
|
||||||
|
敌人(彩蛋):
|
||||||
|
大伟丘:
|
||||||
|
- 大伟丘
|
||||||
|
- 大伟哥
|
||||||
|
地理志:
|
||||||
|
观景点:
|
||||||
|
- 观景点
|
||||||
|
- 景点
|
||||||
|
书籍/食谱:
|
||||||
|
书籍:
|
||||||
|
- 书籍
|
||||||
|
- 书
|
||||||
|
食谱:
|
||||||
|
- 食谱
|
||||||
|
调查:
|
||||||
|
圣遗物:
|
||||||
|
- 圣遗物
|
||||||
|
- 调查圣遗物
|
||||||
|
- 狗粮
|
||||||
|
摩拉:
|
||||||
|
- 摩拉
|
||||||
|
- 摩拉箱
|
||||||
|
- 摩拉石堆
|
||||||
|
- 钱
|
||||||
|
岩之印:
|
||||||
|
- 岩之印
|
||||||
|
木匣:
|
||||||
|
- 木匣
|
||||||
|
- 木匣子
|
||||||
|
食材:
|
||||||
|
- 食材
|
||||||
|
武器:
|
||||||
|
- 武器
|
||||||
|
矿物:
|
||||||
|
- 矿物
|
||||||
|
石堆:
|
||||||
|
- 石堆
|
||||||
|
沙堆:
|
||||||
|
- 沙堆
|
||||||
|
NPC:
|
||||||
|
商人:
|
||||||
|
- 商人
|
||||||
|
- 卖东西的
|
||||||
|
鲸井小弟:
|
||||||
|
- 鲸井小弟
|
||||||
|
- 捉迷藏小弟
|
||||||
|
- 阴间小弟
|
||||||
|
丹迪:
|
||||||
|
- 丹迪
|
||||||
|
幻影:
|
||||||
|
- 幻影
|
||||||
|
- 幽灵
|
||||||
|
- 鬼影
|
||||||
|
木头:
|
||||||
|
杉木:
|
||||||
|
- 杉木
|
||||||
|
松木:
|
||||||
|
- 松木
|
||||||
|
竹节:
|
||||||
|
- 竹节
|
||||||
|
却砂木:
|
||||||
|
- 却砂木
|
||||||
|
桦木:
|
||||||
|
- 桦木
|
||||||
|
萃华木:
|
||||||
|
- 萃华木
|
||||||
|
垂香木:
|
||||||
|
- 垂香木
|
||||||
|
御伽木:
|
||||||
|
- 御伽木
|
||||||
|
枫木:
|
||||||
|
- 枫木
|
||||||
|
孔雀木:
|
||||||
|
- 孔雀木
|
||||||
|
梦见木:
|
||||||
|
- 梦见木
|
||||||
|
证悟木:
|
||||||
|
- 证悟木
|
||||||
|
辉木:
|
||||||
|
- 辉木
|
||||||
|
业果木:
|
||||||
|
- 业果木
|
||||||
|
刺葵木:
|
||||||
|
- 刺葵木
|
||||||
|
柽木:
|
||||||
|
- 柽木
|
@ -26,6 +26,7 @@ class GsCfg {
|
|||||||
}
|
}
|
||||||
/** 通用yaml读取*/
|
/** 通用yaml读取*/
|
||||||
getfileYaml(path, name) {
|
getfileYaml(path, name) {
|
||||||
|
this.cpCfg('config', 'config')
|
||||||
return YAML.parse(
|
return YAML.parse(
|
||||||
fs.readFileSync(path + name + ".yaml", 'utf8')
|
fs.readFileSync(path + name + ".yaml", 'utf8')
|
||||||
)
|
)
|
||||||
@ -80,6 +81,43 @@ class GsCfg {
|
|||||||
ckQQ
|
ckQQ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 读取所有用户绑定的ck */
|
||||||
|
async getBingAllCk () {
|
||||||
|
let ck = {}
|
||||||
|
let ckQQ = {}
|
||||||
|
let qqCk={}
|
||||||
|
let dir = './data/MysCookie/'
|
||||||
|
let files = fs.readdirSync(dir).filter(file => file.endsWith('.yaml'))
|
||||||
|
|
||||||
|
const readFile = promisify(fs.readFile)
|
||||||
|
|
||||||
|
let promises = []
|
||||||
|
|
||||||
|
files.forEach((v) => promises.push(readFile(`${dir}${v}`, 'utf8')))
|
||||||
|
|
||||||
|
const res = await Promise.all(promises)
|
||||||
|
|
||||||
|
res.forEach((v) => {
|
||||||
|
let tmp = YAML.parse(v)
|
||||||
|
let qq
|
||||||
|
lodash.forEach(tmp, (item, uid) => {
|
||||||
|
qq = item.qq
|
||||||
|
ck[String(uid)] = item
|
||||||
|
if(!qqCk[String(item.qq)]) qqCk[String(item.qq)]=[]
|
||||||
|
qqCk[String(item.qq)].push(item)
|
||||||
|
if (item.isMain && !ckQQ[String(item.qq)]) {
|
||||||
|
ckQQ[String(item.qq)] = item
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (qq && !ckQQ[String(qq)]) {
|
||||||
|
ckQQ[String(qq)] = Object.values(tmp)[0]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return { ck, ckQQ,qqCk }
|
||||||
|
}
|
||||||
|
|
||||||
async getUserStoken(userId){
|
async getUserStoken(userId){
|
||||||
try {
|
try {
|
||||||
let ck=YAML.parse(
|
let ck=YAML.parse(
|
||||||
|
91
model/note.js
Normal file
91
model/note.js
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
import YAML from 'yaml'
|
||||||
|
import fs from 'node:fs'
|
||||||
|
import lodash from 'lodash'
|
||||||
|
import {
|
||||||
|
Cfg,
|
||||||
|
Data
|
||||||
|
} from "../components/index.js";
|
||||||
|
import moment from 'moment'
|
||||||
|
import gsCfg from './gsCfg.js'
|
||||||
|
|
||||||
|
const plugin = 'xiaoyao-cvs-plugin'
|
||||||
|
/** 配置文件 */
|
||||||
|
export default class note {
|
||||||
|
constructor(e) {
|
||||||
|
if(e){
|
||||||
|
this.e = e
|
||||||
|
}
|
||||||
|
this.Cfg = `./plugins/${plugin}/config/`
|
||||||
|
gsCfg.cpCfg("config", "note")
|
||||||
|
this.noteCfg = gsCfg.getfileYaml(this.Cfg, "note") || {}
|
||||||
|
this.cfg = gsCfg.getfileYaml(`./plugins/xiaoyao-cvs-plugin/config/`, "config");
|
||||||
|
}
|
||||||
|
addNote() {
|
||||||
|
if (!this.noteCfg[this.e.group_id]) {
|
||||||
|
this.noteCfg[this.e.group_id] = {
|
||||||
|
"task": [],
|
||||||
|
"isTask": true,
|
||||||
|
"sendResin": 120
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!this.isTaskAdmin()) return true;
|
||||||
|
let userId = this.noteCfg[this.e.group_id]["task"] || [];
|
||||||
|
if (!userId.includes(this.e.user_id)) {
|
||||||
|
userId.push(this.e.user_id)
|
||||||
|
}
|
||||||
|
this.noteCfg[this.e.group_id]["task"] = userId
|
||||||
|
this.saveNote(this.noteCfg)
|
||||||
|
this.e.reply("体力推送开启成功~\n后续每天会为您推送体力")
|
||||||
|
}
|
||||||
|
delNote() {
|
||||||
|
try {
|
||||||
|
if (this.noteCfg[this.e.group_id]) {
|
||||||
|
if (!this.isTaskAdmin()) return true;
|
||||||
|
let userId = this.noteCfg[this.e.group_id]["task"] || [];
|
||||||
|
if (userId.length > 0) {
|
||||||
|
userId.splice(userId.indexOf(this.e.user_id),
|
||||||
|
1) //.join('').replace(new RegExp(`${this.e.user_id}`)).split("")
|
||||||
|
this.noteCfg[this.e.group_id]["task"] = userId
|
||||||
|
this.saveNote(this.noteCfg)
|
||||||
|
this.e.reply("体力推送关闭成功~\n后续将不会为您推送体力")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
updNote() {
|
||||||
|
if (this.cfg.noteSetAuth === 2) {
|
||||||
|
if (!this.e.isMaster) {
|
||||||
|
this.e.reply('只有主人才能操作。')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.cfg.noteSetAuth === 1 && !this.e?.isMaster) {
|
||||||
|
if (!(this.e.sender.role === 'owner' || this.e.sender.role === 'admin')) {
|
||||||
|
this.e.reply('只有管理员才能操作。')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let set = this.e.msg.includes("推送")
|
||||||
|
if (set) {
|
||||||
|
let bool = this.e.msg.includes("开启")
|
||||||
|
this.noteCfg[this.e.group_id].isTask = bool
|
||||||
|
} else {
|
||||||
|
let num = this.e.msg.replace(/[^0-9]/ig, '')
|
||||||
|
this.noteCfg[this.e.group_id].sendResin = Math.min(160, Math.max(20, num * 1 || 120));
|
||||||
|
}
|
||||||
|
this.saveNote(this.noteCfg)
|
||||||
|
this.e.reply(this.e.msg.replace('#', '') + "操作成功~", true)
|
||||||
|
}
|
||||||
|
saveNote(data) {
|
||||||
|
if (!data) return false;
|
||||||
|
let yaml = YAML.stringify(data)
|
||||||
|
fs.writeFileSync(`${this.Cfg}note.yaml`, yaml, 'utf8')
|
||||||
|
}
|
||||||
|
isTaskAdmin() {
|
||||||
|
if (!this.noteCfg[this.e.group_id]["isTask"]) {
|
||||||
|
this.e.reply("群体力推送关闭了~\n请联系管理员开启功能~")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -192,7 +192,7 @@ export default class user {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
async docHelp(type) {
|
async docHelp(type) {
|
||||||
return this.configSign[type.includes("云") ? "yunDoc" : "cookiesDoc"]
|
return this.configSign[type.includes("云") ? "cloudDoc" : "cookiesDoc"]
|
||||||
}
|
}
|
||||||
async cloudSign() {
|
async cloudSign() {
|
||||||
let res = await this.getData("cloudReward")
|
let res = await this.getData("cloudReward")
|
||||||
@ -463,7 +463,7 @@ export default class user {
|
|||||||
let mul = e;
|
let mul = e;
|
||||||
Bot.logger.mark(`云原神签到任务开始`);
|
Bot.logger.mark(`云原神签到任务开始`);
|
||||||
let files = fs.readdirSync(this.yunPath).filter(file => file.endsWith('.yaml'))
|
let files = fs.readdirSync(this.yunPath).filter(file => file.endsWith('.yaml'))
|
||||||
let isYunSignMsg = this.configSign.isYunSignMsg
|
let Msg = this.configSign.isCloudSignMsg
|
||||||
let userIdList = (files.join(",").replace(/.yaml/g, "").split(","))
|
let userIdList = (files.join(",").replace(/.yaml/g, "").split(","))
|
||||||
if (cloudTask) {
|
if (cloudTask) {
|
||||||
e.reply(`云原神自动签到任务进行中,请勿重复触发指令`)
|
e.reply(`云原神自动签到任务进行中,请勿重复触发指令`)
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
||||||
<link rel="shortcut icon" href="#" />
|
<link rel="shortcut icon" href="#" />
|
||||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}dailyNote/Template/{{urlType}}/css/xiaoyao_Note.css?v=1.0" />
|
<link rel="stylesheet" type="text/css" href="{{_res_path}}{{urlType}}/css/xiaoyao_Note.css?v=1.0" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="container" id="container" style=" background-image: url({{_res_path}}/dailyNote/Template/{{urlType}}/icon/bg/{{imgs}});">
|
<div class="container" id="container" style=" background-image: url({{_res_path}}{{urlType}}/icon/bg/{{imgs}});">
|
||||||
<div class="left_model">
|
<div class="left_model">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="div">
|
<div class="div">
|
||||||
@ -107,7 +107,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div class="jdt">
|
<div class="jdt">
|
||||||
<img src="{{_res_path}}/dailyNote/Template/{{urlType}}/speed/{{100-list.percentage}}.png"/>
|
<img src="{{_res_path}}{{urlType}}/speed/{{100-list.percentage}}.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="icon {{list.mb2_icon==''?'user_null':''}}" >
|
<div class="icon {{list.mb2_icon==''?'user_null':''}}" >
|
||||||
{{if list.mb2_icon==''}}
|
{{if list.mb2_icon==''}}
|
||||||
|
Loading…
Reference in New Issue
Block a user