Files
yenai-plugin/model/common.js
2023-01-08 13:18:35 +08:00

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: '群员'
}
}
}