支持通过uid方式查询其他玩家的展柜信息

This commit is contained in:
KimgiaiiWuyi 2022-06-05 16:48:25 +08:00
parent ce3c1e7b07
commit 86b95f0891

View File

@ -901,7 +901,7 @@ async def send_uid_info(bot: HoshinoBot, ev: CQEvent):
except Exception as e:
await bot.send(ev, '获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。'.format(e))
logger.exception('上期深渊数据获取失败(数据状态问题)')
else:
elif m == '':
try:
im = await draw_pic(uid, ev.sender['nickname'], image, 2)
if im.startswith('base64://'):
@ -917,6 +917,50 @@ async def send_uid_info(bot: HoshinoBot, ev: CQEvent):
except Exception as e:
await bot.send(ev, '获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。'.format(e))
logger.exception('数据获取失败(数据状态问题)')
else:
try:
if m == '展柜角色':
uid_fold = R_PATH / 'enkaToData' / 'player' / str(uid)
char_file_list = uid_fold.glob('*')
char_list = []
for i in char_file_list:
file_name = str(i).split('/')[-1]
if '\u4e00' <= file_name[0] <= '\u9fff':
char_list.append(file_name.split('.')[0])
char_list_str = ','.join(char_list)
await bot.send(ev, f'UID{uid}当前缓存角色:{char_list_str}', at_sender=True)
else:
char_name = m
with open(os.path.join(INDEX_PATH, 'char_alias.json'),
'r',
encoding='utf8') as fp:
char_data = json.load(fp)
for i in char_data:
if char_name in i:
char_name = i
else:
for k in char_data[i]:
if char_name in k:
char_name = i
with open(R_PATH / 'enkaToData' / 'player' / str(uid) / f'{char_name}.json',
'r',
encoding='utf8') as fp:
raw_data = json.load(fp)
im = await draw_char_card(raw_data, image)
await bot.send(ev, MessageSegment.image(im), at_sender=True)
except FileNotFoundError:
await bot.send(ev, f'你还没有{m}的缓存噢!\n请先使用【强制刷新】命令来缓存数据!\n或者使用【查询展柜角色】命令查看已缓存角色!', at_sender=True)
logger.exception('获取信息失败,你可以使用强制刷新命令进行刷新。')
except ActionFailed as e:
await bot.send(ev, '机器人发送消息失败:{}'.format(e))
logger.exception('发送uid信息失败')
except TypeError:
await bot.send(ev, '获取失败可能是Cookies失效或者未打开米游社角色详情开关。')
logger.exception('数据获取失败Cookie失效/不公开信息)')
except Exception as e:
await bot.send(ev, '获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。'.format(e))
logger.exception('数据获取失败(数据状态问题)')
except Exception as e:
await bot.send(ev, '发生错误 {},请检查后台输出。'.format(e))
logger.exception('uid查询异常')