支持戳一戳返回喵喵版角色卡片

This commit is contained in:
yoimiya-kokomi 2022-07-07 06:12:05 +08:00
parent acdc50f49f
commit 5394a429df
7 changed files with 66 additions and 35 deletions

View File

@ -1,27 +1,25 @@
# 1.8.4 # 1.8.5
* 支持戳一戳返回喵喵版角色卡片
* 需要使用喵喵分支Yunzai以支持此能力如需切换可在Yunzai跟目录输入下方命令后更新重启
* `git remote set-url origin https://gitee.com/yoimiya-kokomi/Yunzai-Bot`
* 可通过`#喵喵设置` 关闭戳一戳
* 增加鹿野院平藏的角色图片
# 1.8.1~1.8.4
* 新增`#上传深渊数据`命令 * 新增`#上传深渊数据`命令
* 可上传自己角色的深渊挑战数据及角色列表,不会上传其他信息 * 可上传自己角色的深渊挑战数据及角色列表,不会上传其他信息
* 上传数据用于`#角色持有率 #深渊出场率`等统计,可使统计更加及时准确 * 上传数据用于`#角色持有率 #深渊出场率`等统计,可使统计更加及时准确
* 数据统计及服务来自SG团队胡桃API * 数据统计及服务来自SG团队胡桃API
* 新增角色 派蒙、瑶瑶、白术、伐难、应达、散兵、女士、萍儿 的角色配置及图片
# 1.8.3
* `#刻晴` 角色卡片功能升级 * `#刻晴` 角色卡片功能升级
* `#老婆设置刻晴,心海`不再检查是否具有角色或展示在米游社展柜 * `#老婆设置刻晴,心海`不再检查是否具有角色或展示在米游社展柜
* `#刻晴` 角色卡片优先使用面板数据进行展示,无面板数据时使用米游社数据 * `#刻晴` 角色卡片优先使用面板数据进行展示,无面板数据时使用米游社数据
* 在未能获取到角色数据时也会展示角色卡片 * 在未能获取到角色数据时也会展示角色卡片
* 角色卡片后续会进行样式升级,按需展示更多内容
* 支持定义新角色及别名 * 支持定义新角色及别名
* 新增角色 派蒙、瑶瑶、白术、伐难、散兵 的角色配置及图片 * 新增角色 派蒙、瑶瑶、白术、伐难、应达、散兵、女士、萍儿 的角色配置及图片
* 自定义角色可使用`#派蒙` `#派蒙图片`触发图片查看,`#女儿设置派蒙`进行设置。后续会支持更多场景 * 自定义角色可使用`#派蒙` `#派蒙图片`触发图片查看,`#女儿设置派蒙`进行设置。后续会支持更多场景
* 如需扩展可在喵喵config/character.js中定义 * 如需扩展可在喵喵config/character.js中定义
* `#深渊出场率`增加楼层排序,以防止服务侧数据乱序导致顺序错乱
* B服面板的天赋与皇冠信息现在可以正确的展示了
# 1.8.1~1.8.2
* `#喵喵帮助`增加对自定义配置文件的支持 * `#喵喵帮助`增加对自定义配置文件的支持
* 已有配置文件可更名为help-cfg.js防止后续更新冲突后续会支持更多配置项 * 已有配置文件可更名为help-cfg.js防止后续更新冲突后续会支持更多配置项
* 在默认配置中增加部分新帮助命令 * 在默认配置中增加部分新帮助命令

View File

@ -13,6 +13,7 @@ let cfgMap = {
"角色": "char.char", "角色": "char.char",
"面板": "char.profile-data", "面板": "char.profile-data",
"老婆": "char.wife", "老婆": "char.wife",
"戳一戳": "char.poke",
"小清新": "char.se", "小清新": "char.se",
"查他人": "char.queryOther", "查他人": "char.queryOther",
"图鉴": "wiki.wiki", "图鉴": "wiki.wiki",
@ -90,6 +91,7 @@ export async function sysCfg(e, { render }) {
chars: getStatus("char.char"), chars: getStatus("char.char"),
profile: getStatus("char.profile-data"), profile: getStatus("char.profile-data"),
wife: getStatus("char.wife"), wife: getStatus("char.wife"),
poke: getStatus("char.poke"),
se: getStatus("char.se", false), se: getStatus("char.se", false),
other: getStatus("char.queryOther"), other: getStatus("char.queryOther"),
wiki: getStatus("wiki.wiki"), wiki: getStatus("wiki.wiki"),

View File

@ -18,7 +18,7 @@ export { getProfileAll, getProfile, profileHelp };
export { profileArtisList } from "./character/profile-artis.js"; export { profileArtisList } from "./character/profile-artis.js";
// 老婆 // 老婆
export { wife, wifeReg } from "./character/avatar-wife.js"; export { wife, pokeWife, wifeReg } from "./character/avatar-wife.js";
import { Character } from "../components/models.js"; import { Character } from "../components/models.js";

View File

@ -95,7 +95,7 @@ async function renderCard(e, avatar, render, renderType = "card") {
// 如果消息发送成功就将message_id和图片路径存起来1小时过期 // 如果消息发送成功就将message_id和图片路径存起来1小时过期
await redis.set(`miao:original-picture:${msgRes.message_id}`, bg.img, { EX: 3600 }); await redis.set(`miao:original-picture:${msgRes.message_id}`, bg.img, { EX: 3600 });
} }
return msgRes; return true;
} }
return true; return true;
} }

View File

@ -37,15 +37,22 @@ export const wifeReg = `^#?\\s*(${relation.join("|")})\\s*(设置|选择|指定|
export async function wife(e, { render, User }) { export async function wife(e, { render, User }) {
let msg = e.msg || ""; let msg = e.msg || "";
if (!msg) return false; if (!msg && !e.isPoke) return false;
if (Cfg.isDisable(e, "char.wife")) { if (e.isPoke) {
if (Cfg.isDisable(e, "char.poke")) {
return false;
}
} else if (Cfg.isDisable(e, "char.wife")) {
return false; return false;
} }
let msgRet = (new RegExp(wifeReg)).exec(msg); let msgRet = (new RegExp(wifeReg)).exec(msg);
if (!msgRet) return false; if (e.isPoke) {
msgRet = [];
} else if (!msgRet) {
return false;
}
let target = msgRet[1], let target = msgRet[1],
action = msgRet[2] || "卡片", action = msgRet[2] || "卡片",
actionParam = msgRet[3] || ""; actionParam = msgRet[3] || "";
@ -58,7 +65,7 @@ export async function wife(e, { render, User }) {
cfg.key = key; cfg.key = key;
return cfg.keyword.includes(target); return cfg.keyword.includes(target);
}); });
if (!targetCfg) return true; if (!targetCfg && !e.isPoke) return true;
let avatarList = [], avatar = {}, wifeList = []; let avatarList = [], avatar = {}, wifeList = [];
@ -87,30 +94,38 @@ export async function wife(e, { render, User }) {
// 展示老婆卡片 // 展示老婆卡片
// 如果选择过,则进行展示 // 如果选择过,则进行展示
wifeList = await selfUser.getCfg(`wife.${targetCfg.key}`, []);
let renderType = action === "卡片" ? "card" : "photo"; let renderType = action === "卡片" ? "card" : "photo";
// 存在设置 if (!e.isPoke) {
if (wifeList && wifeList.length > 0 && isSelf) { wifeList = await selfUser.getCfg(`wife.${targetCfg.key}`, []);
if (wifeList[0] === "随机") { // 存在设置
// 如果选择为全部,则从列表中随机选择一个 if (wifeList && wifeList.length > 0 && isSelf && !e.isPoke) {
avatarList = await getAvatarList(e, targetCfg.type, MysApi); if (wifeList[0] === "随机") {
let avatar = lodash.sample(avatarList); // 如果选择为全部,则从列表中随机选择一个
return renderAvatar(e, avatar, render, renderType); avatarList = await getAvatarList(e, targetCfg.type, MysApi);
} else { let avatar = lodash.sample(avatarList);
// 如果指定过,则展示指定角色 return renderAvatar(e, avatar, render, renderType);
return renderAvatar(e, lodash.sample(wifeList), render, renderType); } else {
// 如果指定过,则展示指定角色
return renderAvatar(e, lodash.sample(wifeList), render, renderType);
}
}
}
// 如果未指定过则从列表中排序并随机选择前5个
if (e.isPoke) {
avatarList = await getAvatarList(e, false, MysApi);
if (avatarList && avatarList.length > 0) {
avatar = lodash.sample(avatarList);
return await renderAvatar(e, avatar, render, renderType);
} }
} else { } else {
// 如果未指定过则从列表中排序并随机选择前5个
avatarList = await getAvatarList(e, targetCfg.type, MysApi); avatarList = await getAvatarList(e, targetCfg.type, MysApi);
if (avatarList && avatarList.length > 0) { if (avatarList && avatarList.length > 0) {
avatar = lodash.sample(avatarList.slice(0, 5)); avatar = lodash.sample(avatarList.slice(0, 5));
return renderAvatar(e, avatar, render, renderType); return await renderAvatar(e, avatar, render, renderType);
} else {
e.reply(`在当前米游社公开展示的角色中未能找到适合展示的角色..`);
return true;
} }
} }
e.reply(`在当前米游社公开展示的角色中未能找到适合展示的角色..`);
return true;
break; break;
case "设置": case "设置":
case "选择": case "选择":
@ -168,3 +183,7 @@ export async function wife(e, { render, User }) {
} }
return true; return true;
} }
export async function pokeWife(e, components) {
return await wife(e, components);
}

View File

@ -2,6 +2,7 @@ export {
character, character,
getProfile, getProfile,
wife, wife,
pokeWife,
enemyLv, enemyLv,
profileArtisList, profileArtisList,
getProfileAll, getProfileAll,
@ -63,6 +64,10 @@ let rule = {
reg: wifeReg, reg: wifeReg,
describe: "【#角色】#老公 #老婆 查询", describe: "【#角色】#老公 #老婆 查询",
}, },
pokeWife: {
reg: "#poke#",
describe: "【#角色】戳一戳",
},
getOriginalPicture: { getOriginalPicture: {
reg: "^#?(获取|给我|我要|求|发|发下|发个|发一下)?原图(吧|呗)?$", reg: "^#?(获取|给我|我要|求|发|发下|发个|发一下)?原图(吧|呗)?$",
describe: "【#原图】 回复角色卡片,可获取原图", describe: "【#原图】 回复角色卡片,可获取原图",

View File

@ -34,6 +34,13 @@
{{@wife}} {{@wife}}
</div> </div>
</li> </li>
<li class="cfg-li">
<div class="cfg-line">
戳一戳卡片
<span class="cfg-hint"> #喵喵设置戳一戳 + 开启/关闭</span>
{{@poke}}
</div>
</li>
<li class="cfg-li"> <li class="cfg-li">
<div class="cfg-line"> <div class="cfg-line">
允许查他人 允许查他人