mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 16:19:18 +00:00
72 lines
2.0 KiB
JavaScript
72 lines
2.0 KiB
JavaScript
import schedule from "node-schedule";
|
||
import common from "../../../lib/common/common.js";
|
||
|
||
/**
|
||
* 请求模板
|
||
*/
|
||
class jFeatch {
|
||
async get(url) {
|
||
const r = await fetch(url);
|
||
return await r.json();
|
||
}
|
||
async post(url, params) {
|
||
const r = await fetch(url, { ...params, method: "POST" });
|
||
return await r.json();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 每日推送函数
|
||
* @param func 回调函数
|
||
* @param time cron
|
||
* @param isAutoPush 是否推送(开关)
|
||
*/
|
||
function autoTask(func, time, groupList, isAutoPush = false) {
|
||
if (isAutoPush) {
|
||
schedule.scheduleJob(time, () => {
|
||
// 正常传输
|
||
if (groupList instanceof Array) {
|
||
for (let i = 0; i < groupList.length; i++) {
|
||
const group = Bot.pickGroup(groupList[i]);
|
||
func(group);
|
||
common.sleep(1000);
|
||
}
|
||
// 防止恶意破坏函数
|
||
} else if (groupList instanceof String) {
|
||
const group = Bot.pickGroup(groupList[i]);
|
||
func(group);
|
||
common.sleep(1000);
|
||
} else {
|
||
throw Error("错误传入每日推送参数!");
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 重试函数(暂时只用于抖音的api)
|
||
* @param func
|
||
* @param maxRetries
|
||
* @param delay
|
||
* @returns {Promise<unknown>}
|
||
*/
|
||
function retry(func, maxRetries = 3, delay = 1000) {
|
||
return new Promise((resolve, reject) => {
|
||
const attempt = (remainingTries) => {
|
||
func()
|
||
.then(resolve)
|
||
.catch(error => {
|
||
if (remainingTries === 1) {
|
||
reject(error);
|
||
} else {
|
||
console.log(`错误: ${error}. 重试将在 ${delay/1000} 秒...`);
|
||
setTimeout(() => attempt(remainingTries - 1), delay);
|
||
}
|
||
});
|
||
};
|
||
attempt(maxRetries);
|
||
});
|
||
}
|
||
|
||
export { jFeatch, autoTask, retry };
|