koishi-plugin-kbot
Version:
A muti-function qq bot for koishi
53 lines (52 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.uidExtract = exports.isNumberOrNumberString = void 0;
const b23Extract_1 = require("./b23Extract");
const biliRequest_1 = require("./biliRequest");
function isNumberOrNumberString(text) {
return text !== '' && +text * 0 === 0;
}
exports.isNumberOrNumberString = isNumberOrNumberString;
async function uidExtract(text, { session }, logger, ctx) {
if (typeof text !== 'string')
return '';
if (session.channel.bilibili.dynamic.length !== 0) {
session.channel.bilibili.dynamic.forEach((item) => {
if (isNumberOrNumberString(text)) {
if (item.bilibiliId === text)
return item.bilibiliId;
}
else {
if (item.bilibiliName === text.replace(/^['"“”‘’]+|['"“”‘’]+$/g, ''))
return item.bilibiliId;
}
});
}
let b23URL = '';
if (text.includes('b23.tv') || text.includes('b23.wtf'))
b23URL = await (0, b23Extract_1.b23Extract)(text, ctx.http);
const message = b23URL || text;
const bilibiliURLRegex = /^[0-9]*$|bilibili.com\/([0-9]*)/;
let uid = '';
const uidMatch = bilibiliURLRegex.exec(message);
if (uidMatch) {
uid = uidMatch[1] || uidMatch[0];
return uid;
}
else if (message.toLocaleUpperCase().startsWith('UID:')) {
const uidMatch = /^\d+/.exec(message.slice(4).trim());
return uidMatch ? uidMatch[0] : '';
}
else {
const keyword = message.replace(/^['"“”‘’]+|['"“”‘’]+$/g, '');
const resp = await (0, biliRequest_1.searchUser)(ctx, keyword, logger);
if (resp?.numResults) {
resp.result.forEach((item) => {
if (item.uname === keyword)
uid = item.mid;
});
}
}
return uid;
}
exports.uidExtract = uidExtract;