2
0
mirror of https://github.com/ctrlcvs/xiaoyao-cvs-plugin.git synced 2024-12-23 03:20:52 +08:00
xiaoyao-cvs-plugin/model/mys/utils.js

141 lines
3.4 KiB
JavaScript
Raw Normal View History

2022-07-29 01:42:35 +08:00
import _ from 'lodash';
import moment from 'moment';
2022-07-29 01:42:35 +08:00
export async function sleepAsync(sleepms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, sleepms)
});
}
2022-10-12 16:51:51 +08:00
export async function randomSleepAsync(end) {
2022-10-17 20:55:39 +08:00
let sleep = 4 * 1000 + _.random((end || 5) * 1000);
2022-07-29 01:42:35 +08:00
await sleepAsync(sleep);
}
export function randomString(length, os = false) {
let randomStr = '';
for (let i = 0; i < length; i++) {
randomStr += _.sample(os ? '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' :
'abcdefghijklmnopqrstuvwxyz0123456789');
}
return randomStr;
2022-07-29 01:42:35 +08:00
}
export async function redisDel(userId, type = 'bbs') {
return await redis.del(`xiaoyao:${type}:${userId}`)
}
export async function redisGet(userId, type = 'bbs') {
return JSON.parse(await redis.get(`xiaoyao:${type}:${userId}`))
}
export async function redisSet(userId="all", type = 'bbs', data, time=0) {
2023-01-14 23:46:04 +08:00
var dayTime = moment(Date.now()).add('days', 1).format('YYYY-MM-DD 00:00:00')
var new_date = (new Date(dayTime).getTime() - new Date().getTime()) / 1000 //获取隔天凌晨的时间差
if (time!==0) {
new_date = time
}
return await redis.set(`xiaoyao:${type}:${userId}`, JSON.stringify(data), {
EX: parseInt(new_date)
});
}
2022-10-17 20:55:39 +08:00
/**
* 发送私聊消息仅给好友发送
* @param user_id qq号
* @param msg 消息
*/
export async function relpyPrivate(userId, msg) {
userId = Number(userId) || userId
let friend = Bot.fl.get(userId)
if (friend) {
Bot.logger.mark(`发送好友消息[${friend.nickname}](${userId})`)
return await Bot.pickUser(userId).sendMsg(msg).catch((err) => {
Bot.logger.mark(err)
})
}
2022-08-01 23:13:34 +08:00
}
export async function replyMake(e, _msg, lenght) {
const bot = e.bot || Bot
let nickname = bot.nickname;
if (e.isGroup && bot.getGroupMemberInfo) try {
const info = await bot.getGroupMemberInfo(e.group_id, bot.uin)
nickname = info.card || info.nickname
} catch {}
let msgList = [];
for (let [index, item] of Object.entries(_msg)) {
if (index < lenght) {
continue;
}
msgList.push({
message: item,
nickname: nickname,
user_id: bot.uin
})
}
2023-04-14 21:28:35 +08:00
if (e.isGroup) {
msgList = await e.group.makeForwardMsg(msgList)
} else {
msgList = await e.friend.makeForwardMsg(msgList)
}
if (e._reply) {
2023-04-14 21:28:35 +08:00
e._reply(msgList);
} else {
2023-04-14 21:28:35 +08:00
e.reply(msgList);
}
}
2022-10-06 14:10:50 +08:00
export function getServer(uid) {
2022-10-06 14:10:50 +08:00
switch (String(uid)[0]) {
case '1':
case '2':
return 'cn_gf01' // 官服
case '5':
return 'cn_qd01' // B服
case '6':
return 'os_usa' // 美服
case '7':
return 'os_euro' // 欧服
case '8':
return 'os_asia' // 亚服
case '9':
return 'os_cht' // 港澳台服
}
return 'cn_gf01'
}
export async function getCookieMap(cookie) {
let cookieArray = cookie.replace(/\s*/g, "").split(";");
let cookieMap = new Map();
for (let item of cookieArray) {
2022-12-10 15:29:21 +08:00
let entry = item.replace('=','~').split("~");
if (!entry[0]) continue;
cookieMap.set(entry[0], entry[1]);
}
return cookieMap || {};
}
/**
*
* @param {e} e
* @param {撤回的消息id} r
* @param {多久撤回()} times
*/
export function recallMsg(e,r,times){
setTimeout(()=>{
2023-05-29 21:34:14 +08:00
if(e?.group?.recallMsg&&r?.message_id){
e?.group?.recallMsg(r?.message_id)
}else if(e?.friend?.recallMsg&&r?.message_id){
e?.friend?.recallMsg(r?.message_id)
}
},1000 * times)
}
2022-07-29 01:42:35 +08:00
export default {
sleepAsync,redisDel,
getServer,
randomSleepAsync,
replyMake,
randomString,
redisGet,
redisSet,recallMsg,
relpyPrivate,
getCookieMap
}