miao-plugin/apps/character.js
yoimiya-kokomi e5ca1bd5d8 支持定义新角色及别名
* 支持自定义角色,自定义角色可使用`#派蒙` `#派蒙图片`触发图片查看,后续会支持更多场景
* 新增角色 派蒙、瑶瑶、白术、伐难、散兵 的角色配置及图片
* 如需扩展可在喵喵config/character.js中定义
2022-06-30 07:05:31 +08:00

130 lines
3.5 KiB
JavaScript

import lodash from "lodash";
import { Common, Cfg } from "../components/index.js";
import { renderAvatar } from "./character/avatar-card.js";
import { getTargetUid, getProfile, profileHelp, getProfileAll } from "./character/profile-common.js";
import { profileArtis } from "./character/profile-artis.js"
import { renderProfile } from "./character/profile-detail.js";
export { enemyLv, getOriginalPicture } from "./character/utils.js";
// 角色图像上传
export { uploadCharacterImg } from "./character/character-img-upload.js";
//
export { getProfileAll, getProfile, profileHelp };
// 圣遗物列表
export { profileArtisList } from "./character/profile-artis.js";
// 老婆
export { wife, wifeReg } from "./character/avatar-wife.js";
import { Character } from "../components/models.js";
// 查看当前角色
export async function character(e, { render, User }) {
let msg = e.msg;
if (!msg) {
return;
}
let mode = 'card';
let uidRet = /[0-9]{9}/.exec(msg);
if (uidRet) {
e.uid = uidRet[0];
msg = msg.replace(uidRet[0], "");
}
let name = msg.replace(/#|老婆|老公/g, "").trim();
msg = msg.replace("面版", "面板")
let dmgRet = /伤害(\d?)$/.exec(name), dmgIdx = 0;
if (/(详情|详细|面板|面版)\s*$/.test(msg) && !/更新|录入|输入/.test(msg)) {
mode = 'profile';
name = name.replace(/(详情|详细|面板)/, "").trim();
} else if (dmgRet) {
mode = 'dmg';
name = name.replace(/伤害[0-5]?/, "").trim();
if (dmgRet[1]) {
dmgIdx = dmgRet[1] * 1;
}
} else if (/(详情|详细|面板)更新$/.test(msg) || (/更新/.test(msg) && /(详情|详细|面板)$/.test(msg))) {
mode = "refresh";
name = name.replace(/详情|详细|面板|更新/g, "").trim();
} else if (/(录入|输入)/.test(msg) && /(详情|详细|面板)/.test(msg)) {
mode = "input";
let nameRet = /(?:录入|输入)(.+)(?:面板|详细|详情|数据)+/.exec(name);
if (nameRet) {
name = nameRet[1];
e.inputData = msg.replace(nameRet[0], "");
}
name = name.replace(/录入|输入|详情|详细|面板|数据|[0-9]|\.|\+/g, "").trim()
} else if (/圣遗物/.test(msg)) {
mode = "artis";
name = name.replace("圣遗物", "").trim();
}
if (mode === "card" && Common.isDisable(e, "char.char")) {
return;
}
if (mode !== "card" && !e.isMaster) {
if (Common.isDisable(e, "char.profile")) {
// 面板开关关闭
return;
}
if (e.isPrivate) {
if ((e.sub_type === "friend" && Cfg.get("profile.friend.status") === false) ||
(e.sub_type === "group" && Cfg.get("profile.stranger.status") === false)) {
return;
}
} else if (e.isGroup) {
let groupCfg = Cfg.get(`profile.groups.群${e.group_id}.status`);
if (groupCfg === false || (groupCfg !== true && Cfg.get(`profile.group.status`) === false)) {
return;
}
}
}
let char = Character.get(name.trim());
if (!char) {
return false;
}
if (mode === "card") {
return renderAvatar(e, char.name, render);
}
e.uid = await getTargetUid(e);
e.avatar = char.id;
if (char.isCustom) {
e.reply("自定义角色暂不支持此功能");
return true;
}
if (mode === "profile" || mode === "dmg") {
return renderProfile(e, char, render, mode, { dmgIdx });
} else if (mode === "refresh" || mode === "input") {
await getProfile(e, mode);
return true;
} else if (mode === "artis") {
return profileArtis(e, { render });
}
return true;
}