适配亚服新UID (#706)

This commit is contained in:
Ca(HCO₃)₂ 2024-02-04 09:02:58 +08:00 committed by GitHub
parent 3e3d976885
commit 942cac4fb2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 69 additions and 62 deletions

View File

@ -18,13 +18,13 @@ app.reg({
name: '面板角色列表', name: '面板角色列表',
desc: '查看当前已获取面板数据的角色列表', desc: '查看当前已获取面板数据的角色列表',
fn: ProfileList.render, fn: ProfileList.render,
rule: /^#(星铁|原神)?(面板角色|角色面板|面板)(列表)?\s*(\d{9})?$/ rule: /^#(星铁|原神)?(面板角色|角色面板|面板)(列表)?\s*(\d{9,10})?$/
}, },
profileDetail: { profileDetail: {
name: '角色面板', name: '角色面板',
fn: ProfileDetail.detail, fn: ProfileDetail.detail,
rule: /^#*([^#]+)\s*(详细|详情|面板|面版|圣遗物|武器[1-7]?|伤害([1-9]+\d*)?)\s*(\d{9})*(.*[换变改].*)?$/ rule: /^#*([^#]+)\s*(详细|详情|面板|面版|圣遗物|武器[1-7]?|伤害([1-9]+\d*)?)\s*(\d{9,10})*(.*[换变改].*)?$/
}, },
profileChange: { profileChange: {
@ -66,7 +66,7 @@ app.reg({
artisList: { artisList: {
name: '面板圣遗物列表', name: '面板圣遗物列表',
fn: profileArtisList, fn: profileArtisList,
rule: /^#圣遗物列表\s*(\d{9})?$/ rule: /^#圣遗物列表\s*(\d{9,10})?$/
}, },
profileStat: { profileStat: {
@ -87,7 +87,7 @@ app.reg({
name: '角色查询', name: '角色查询',
fn: ProfileStat.avatarList, fn: ProfileStat.avatarList,
rule: /^#喵喵(角色|查询)[ |0-9]*$/, rule: /^#喵喵(角色|查询)[ |0-9]*$/,
yzRule: /^(#(五|四|5|4|星)*(角色|查询|查询角色|角色查询|人物)[ |0-9]*$)|(^(#*uid|#*UID)\+*[1|2|5-9][0-9]{8}$)|(^#[\+|]*[1|2|5-9][0-9]{8})/, yzRule: /^(#(五|四|5|4|星)*(角色|查询|查询角色|角色查询|人物)[ |0-9]*$)|(^(#*uid|#*UID)\+*([1-9]|18)[0-9]{8}$)|(^#[\+|]*([1-9]|18)[0-9]{8})/,
yzCheck: () => Cfg.get('avatarList', false) yzCheck: () => Cfg.get('avatarList', false)
}, },
@ -114,7 +114,7 @@ app.reg({
name: '面板更新', name: '面板更新',
describe: '【#角色】 获取游戏橱窗详情数据', describe: '【#角色】 获取游戏橱窗详情数据',
fn: ProfileList.refresh, fn: ProfileList.refresh,
rule: /^#(星铁|原神)?(全部面板更新|更新全部面板|获取游戏角色详情|更新面板|面板更新)\s*(\d{9})?$/ rule: /^#(星铁|原神)?(全部面板更新|更新全部面板|获取游戏角色详情|更新面板|面板更新)\s*(\d{9,10})?$/
}, },
uploadImg: { uploadImg: {
@ -142,13 +142,13 @@ app.reg({
name: '删除面板', name: '删除面板',
describe: '【#角色】 删除游戏橱窗详情数据', describe: '【#角色】 删除游戏橱窗详情数据',
fn: ProfileList.del, fn: ProfileList.del,
rule: /^#(删除全部面板|删除面板|删除面板数据)\s*(\d{9})?$/ rule: /^#(删除全部面板|删除面板|删除面板数据)\s*(\d{9,10})?$/
}, },
profileReload: { profileReload: {
name: '重新加载面板', name: '重新加载面板',
fn: ProfileList.reload, fn: ProfileList.reload,
rule: /^#(星铁|原神)?(加载|重新加载|重载)面板\s*(\d{9})?$/ rule: /^#(星铁|原神)?(加载|重新加载|重载)面板\s*(\d{9,10})?$/
} }
}) })

View File

@ -25,7 +25,7 @@ const ProfileChange = {
return false return false
} }
msg = msg.toLowerCase().replace(/uid ?:? ?/, '').replace('', '') msg = msg.toLowerCase().replace(/uid ?:? ?/, '').replace('', '')
let regRet = /^#*(\d{9})?(.+?)(详细|详情|面板|面版|圣遗物|伤害[1-7]?)?\s*(\d{9})?[变换改](.+)/.exec(msg) let regRet = /^#*(\d{9,10})?(.+?)(详细|详情|面板|面版|圣遗物|伤害[1-7]?)?\s*(\d{9,10})?[变换改](.+)/.exec(msg)
if (!regRet || !regRet[2]) { if (!regRet || !regRet[2]) {
return false return false
} }
@ -63,7 +63,7 @@ const ProfileChange = {
keyTitleMap[v] = key keyTitleMap[v] = key
}) })
}) })
const keyReg = new RegExp(`^(\\d{9})?\\s*(.+?)\\s*(\\d{9})?\\s*((?:${lodash.keys(keyTitleMap).join('|')}|\\+)+)$`) const keyReg = new RegExp(`^(\\d{9,10})?\\s*(.+?)\\s*(\\d{9,10})?\\s*((?:${lodash.keys(keyTitleMap).join('|')}|\\+)+)$`)
ret.char = char.id ret.char = char.id
ret.mode = regRet[3] === '换' ? '面板' : regRet[3] ret.mode = regRet[3] === '换' ? '面板' : regRet[3]

View File

@ -8,7 +8,7 @@ import { Character, MysApi, Player } from '#miao.models'
* 获取面板查询的 目标uid * 获取面板查询的 目标uid
* */ * */
const _getTargetUid = async function (e) { const _getTargetUid = async function (e) {
let uidReg = /[1-9][0-9]{8}/ let uidReg = /([1-9]|18)[0-9]{8}/
if (e.uid && uidReg.test(e.uid)) { if (e.uid && uidReg.test(e.uid)) {
return e.uid return e.uid

View File

@ -150,7 +150,7 @@ const ProfileList = {
* @returns {Promise<boolean>} * @returns {Promise<boolean>}
*/ */
async del(e) { async del(e) {
let ret = /^#(删除全部面板|删除面板|删除面板数据)\s*(\d{9})?$/.exec(e.msg) let ret = /^#(删除全部面板|删除面板|删除面板数据)\s*(\d{9,10})?$/.exec(e.msg)
let uid = await getTargetUid(e) let uid = await getTargetUid(e)
if (!uid) { if (!uid) {
return true return true

View File

@ -168,7 +168,7 @@ export default class ProfileRank {
static async delUidInfo(uid) { static async delUidInfo(uid) {
let keys = await redis.keys('miao:rank:*') let keys = await redis.keys('miao:rank:*')
uid = uid + '' uid = uid + ''
if (!/\d{9}/.test(uid)) { if (!/\d{9,10}/.test(uid)) {
return false return false
} }
for (let key of keys) { for (let key of keys) {
@ -208,7 +208,7 @@ export default class ProfileRank {
let data = await Data.redisGet(key) let data = await Data.redisGet(key)
let { qq, uidType } = data let { qq, uidType } = data
if (!users[qq]) continue if (!users[qq]) continue
let uidRet = /miao:rank:uid-info:(\d{9})/.exec(key) let uidRet = /miao:rank:uid-info:(\d{9,10})/.exec(key)
if (qq && uidType && uidRet?.[1]) { if (qq && uidType && uidRet?.[1]) {
add(qq, uidRet[1], uidType === 'ck' ? 'ck' : 'bind') add(qq, uidRet[1], uidType === 'ck' ? 'ck' : 'bind')
} }

View File

@ -33,7 +33,13 @@ const Serv = {
let isGs = game === 'gs' let isGs = game === 'gs'
// 根据uid判断当前服务器类型。官服0 B服1 国际2 // 根据uid判断当前服务器类型。官服0 B服1 国际2
let servType = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 1, 6: 2, 7: 2, 8: 2, 9: 2 }[uid[0]] let uidPrefix = uid.toString()
if (uidPrefix.length == 10) {
uidPrefix = uidPrefix.slice(0, 2)
} else {
uidPrefix = uidPrefix.slice(0, 1)
}
let servType = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 1, 6: 2, 7: 2, 8: 2, 18: 2, 9: 2 }[uidPrefix]
// 获取原神、星铁对应服务选择的配置 // 获取原神、星铁对应服务选择的配置
let servCfg = (Cfg.get(isGs ? 'profileServer' : 'srProfileServer', '0') || '0').toString() let servCfg = (Cfg.get(isGs ? 'profileServer' : 'srProfileServer', '0') || '0').toString()

View File

@ -173,13 +173,14 @@ body, .container {
background: rgba(255, 255, 255, .5); background: rgba(255, 255, 255, .5);
height: 80px; height: 80px;
vertical-align: middle; vertical-align: middle;
margin: 15px 10px 0; margin: 15px 8px 0;
} }
} }
.abyss-team { .abyss-team {
display: flex; display: flex;
margin-right: -5px;
margin-left: -5px;
} }
.abyss-detail { .abyss-detail {