北大侠客行Vscode版-js机器人示例讲解-自动记录倒计时
执行 jq 的时候自动把倒计时的任务和任务的时间加到主界面的右下角通过 action 把任务名称和倒计时的中文名称获取到,然后调用一个函数把中文的时间改成数字秒,最后设置4个倒计时计算器的第一个
let self = this;
api.action(/│主\s+│([\u4e00-\u9fa5+).+?│仍需([\u4e00-\u9fa5+)才能接到下个任务/, function (arg) {
api.echo(arg[1] + ' ' + arg[2] + ' ' + self.chineseToSeconds(arg[2]))
api.timer(1, arg[1], self.chineseToSeconds(arg[2]), true, 'ss')
})
parseChineseNumber: function (str) {
const digits = { "零": 0, "一": 1, "二": 2, "三": 3, "四": 4, "五": 5, "六": 6, "七": 7, "八": 8, "九": 9 };
let result = 0;
let temp = 0;
if (str.includes("十")) {
const parts = str.split("十");
const tens = parts === "" ? 1 : digits];
const ones = parts ? digits] : 0;
result = tens * 10 + ones;
} else {
for (let i = 0; i < str.length; i++) {
if (digits] !== undefined) {
temp = temp * 10 + digits];
}
}
result = temp;
}
return result;
},
chineseToSeconds: function (timeStr) {
const timeUnits = {
"秒": 1,
"分钟": 60,
"分": 60,
"小时": 3600,
"时": 3600
};
let totalSeconds = 0;
let buffer = "";
for (let i = 0; i < timeStr.length; i++) {
let char = timeStr;
let unit = char;
if (i + 1 < timeStr.length) {
const twoCharUnit = char + timeStr;
if (timeUnits) {
unit = twoCharUnit;
i++;
}
}
if (timeUnits) {
const num = this.parseChineseNumber(buffer);
totalSeconds += (num || 1) * timeUnits;
buffer = "";
} else {
buffer += char;
}
}
if (buffer.length > 0) {
totalSeconds += this.parseChineseNumber(buffer);
}
return totalSeconds;
}
页:
[1]