171 lines
5.4 KiB
JavaScript
171 lines
5.4 KiB
JavaScript
import { core } from "oicq";
|
|
import child_process from 'child_process'
|
|
|
|
export default new class common {
|
|
/**
|
|
* @description: 使用JS将数字从汉字形式转化为阿拉伯形式
|
|
* @param {string} s_123
|
|
* @return {number}
|
|
*/
|
|
translateChinaNum(s_123) {
|
|
//如果是纯数字直接返回
|
|
if (/^\d+$/.test(s_123)) return Number(s_123)
|
|
// -------------------------------------------------- 字典,甚至可以使用繁体 --------------------------------------------------
|
|
let map = new Map()
|
|
map.set('一', 1)
|
|
map.set('壹', 1) // 特殊
|
|
map.set('二', 2)
|
|
map.set('两', 2) // 特殊
|
|
map.set('三', 3)
|
|
map.set('四', 4)
|
|
map.set('五', 5)
|
|
map.set('六', 6)
|
|
map.set('七', 7)
|
|
map.set('八', 8)
|
|
map.set('九', 9)
|
|
|
|
// -------------------------------------------------- 按照亿、万为分割将字符串划分为三部分 --------------------------------------------------
|
|
let split = ''
|
|
split = s_123.split('亿')
|
|
let s_1_23 = split.length > 1 ? split : ['', s_123]
|
|
let s_23 = s_1_23[1]
|
|
let s_1 = s_1_23[0]
|
|
split = s_23.split('万')
|
|
let s_2_3 = split.length > 1 ? split : ['', s_23]
|
|
let s_2 = s_2_3[0]
|
|
let s_3 = s_2_3[1]
|
|
let arr = [s_1, s_2, s_3]
|
|
|
|
// -------------------------------------------------- 对各个部分处理 --------------------------------------------------
|
|
arr = arr.map(item => {
|
|
let result = ''
|
|
result = item.replace('零', '')
|
|
// [ '一百三十二', '四千五百', '三千二百一十三' ] ==>
|
|
let reg = new RegExp(`[${Array.from(map.keys()).join('')}]`, 'g')
|
|
result = result.replace(reg, substring => {
|
|
return map.get(substring)
|
|
})
|
|
// [ '1百3十2', '4千5百', '3千2百1十3' ] ==> ['0132', '4500', '3213']
|
|
let temp
|
|
temp = /\d(?=千)/.exec(result)
|
|
let num1 = temp ? temp[0] : '0'
|
|
temp = /\d(?=百)/.exec(result)
|
|
let num2 = temp ? temp[0] : '0'
|
|
temp = /\d?(?=十)/.exec(result)
|
|
let num3
|
|
if (temp === null) { // 说明没十:一百零二
|
|
num3 = '0'
|
|
} else if (temp[0] === '') { // 说明十被简写了:十一
|
|
num3 = '1'
|
|
} else { // 正常情况:一百一十一
|
|
num3 = temp[0]
|
|
}
|
|
temp = /\d$/.exec(result)
|
|
let num4 = temp ? temp[0] : '0'
|
|
return num1 + num2 + num3 + num4
|
|
})
|
|
// 借助parseInt自动去零
|
|
return parseInt(arr.join(''))
|
|
}
|
|
|
|
/**
|
|
* @description: 陌生人点赞
|
|
* @param {Number} uid QQ号
|
|
* @param {Number} times 数量
|
|
* @return {Object}
|
|
*/
|
|
async thumbUp(uid, times = 1) {
|
|
if (times > 20)
|
|
times = 20;
|
|
let ReqFavorite;
|
|
if (Bot.fl.get(uid)) {
|
|
ReqFavorite = core.jce.encodeStruct([
|
|
core.jce.encodeNested([
|
|
Bot.uin, 1, Bot.sig.seq + 1, 1, 0, Buffer.from("0C180001060131160131", "hex")
|
|
]),
|
|
uid, 0, 1, Number(times)
|
|
]);
|
|
}
|
|
else {
|
|
ReqFavorite = core.jce.encodeStruct([
|
|
core.jce.encodeNested([
|
|
Bot.uin, 1, Bot.sig.seq + 1, 1, 0, Buffer.from("0C180001060131160135", "hex")
|
|
]),
|
|
uid, 0, 5, Number(times)
|
|
]);
|
|
}
|
|
const body = core.jce.encodeWrapper({ ReqFavorite }, "VisitorSvc", "ReqFavorite", Bot.sig.seq + 1);
|
|
const payload = await Bot.sendUni("VisitorSvc.ReqFavorite", body);
|
|
let result = core.jce.decodeWrapper(payload)[0];
|
|
return { code: result[3], msg: result[4] };
|
|
}
|
|
|
|
async execSync(cmd) {
|
|
return new Promise((resolve, reject) => {
|
|
child_process.exec(cmd, (error, stdout, stderr) => {
|
|
resolve({ error, stdout, stderr })
|
|
})
|
|
})
|
|
}
|
|
|
|
//时间单位
|
|
get Time_unit() {
|
|
return {
|
|
"毫秒": 0.001,
|
|
"秒": 1,
|
|
"S": 1,
|
|
"SECOND": 1,
|
|
"分": 60,
|
|
"分钟": 60,
|
|
"M": 60,
|
|
"MIN": 60,
|
|
"MINUTE": 60,
|
|
"时": 3600,
|
|
"小时": 3600,
|
|
"H": 3600,
|
|
"HOUR": 3600,
|
|
"天": 86400,
|
|
"日": 86400,
|
|
"D": 86400,
|
|
"DAY": 86400,
|
|
"周": 604800,
|
|
"W": 604800,
|
|
"WEEK": 604800,
|
|
"月": 2592000,
|
|
"M": 2592000,
|
|
"MONTH": 2592000,
|
|
"年": 31536000,
|
|
"Y": 31536000,
|
|
"YEAR": 31536000,
|
|
}
|
|
}
|
|
/**登录设备 */
|
|
get platform() {
|
|
return {
|
|
"1": "安卓手机",
|
|
"2": "aPad",
|
|
"3": "安卓手表",
|
|
"4": "MacOS",
|
|
"5": "iPad"
|
|
}
|
|
}
|
|
/**在线状态 */
|
|
get status() {
|
|
return {
|
|
"31": "离开",
|
|
"50": "忙碌",
|
|
"70": "请勿打扰",
|
|
"41": "隐身",
|
|
"11": "我在线上",
|
|
"60": "Q我吧",
|
|
};
|
|
}
|
|
//权限
|
|
get ROLE_MAP() {
|
|
return {
|
|
admin: '群管理',
|
|
owner: '群主',
|
|
member: '群员'
|
|
}
|
|
}
|
|
} |