mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-05-30 04:00:31 +08:00
112 lines
3.8 KiB
Python
112 lines
3.8 KiB
Python
import math
|
||
from typing import List
|
||
|
||
from ..utils.mhy_api.get_mhy_data import get_daily_data
|
||
from ..utils.alias.enName_to_avatarId import enName_to_avatarId
|
||
from ..utils.alias.avatarId_and_name_covert import avatar_id_to_name
|
||
|
||
daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准
|
||
==============
|
||
原粹树脂:{}/{}{}
|
||
每日委托:{}/{} 奖励{}领取
|
||
减半已用:{}/{}
|
||
洞天宝钱:{}
|
||
参量质变仪:{}
|
||
探索派遣:
|
||
总数/完成/上限:{}/{}/{}
|
||
{}"""
|
||
|
||
|
||
def seconds2hours(seconds: int) -> str:
|
||
m, s = divmod(int(seconds), 60)
|
||
h, m = divmod(m, 60)
|
||
return '%02d:%02d:%02d' % (h, m, s)
|
||
|
||
|
||
async def get_resin_text(uid: str) -> str:
|
||
dailydata = await get_daily_data(uid)
|
||
dailydata = dailydata['data']
|
||
max_resin = dailydata['max_resin']
|
||
rec_time = ''
|
||
current_resin = dailydata['current_resin']
|
||
if current_resin < 160:
|
||
resin_recovery_time = seconds2hours(dailydata['resin_recovery_time'])
|
||
next_resin_rec_time = seconds2hours(
|
||
8 * 60
|
||
- (
|
||
(dailydata['max_resin'] - dailydata['current_resin']) * 8 * 60
|
||
- int(dailydata['resin_recovery_time'])
|
||
)
|
||
)
|
||
rec_time = f' ({next_resin_rec_time}/{resin_recovery_time})'
|
||
|
||
current_expedition_num = dailydata['current_expedition_num']
|
||
max_expedition_num = dailydata['max_expedition_num']
|
||
finished_expedition_num = 0
|
||
expedition_info: List[str] = []
|
||
for expedition in dailydata['expeditions']:
|
||
avatar: str = expedition['avatar_side_icon'][89:-4]
|
||
try:
|
||
avatar_name: str = await enName_to_avatarId(avatar)
|
||
avatar_name: str = await avatar_id_to_name(avatar_name)
|
||
except KeyError:
|
||
avatar_name: str = avatar
|
||
|
||
if expedition['status'] == 'Finished':
|
||
expedition_info.append(f'{avatar_name} 探索完成')
|
||
finished_expedition_num += 1
|
||
else:
|
||
remained_timed: str = seconds2hours(expedition['remained_time'])
|
||
expedition_info.append(f'{avatar_name} 剩余时间{remained_timed}')
|
||
|
||
if dailydata['transformer']['recovery_time']['reached']:
|
||
transformer_status = '可用'
|
||
else:
|
||
transformer_time = dailydata['transformer']['recovery_time']
|
||
transformer_status = '还剩{}天{}小时{}分钟可用'.format(
|
||
transformer_time['Day'],
|
||
transformer_time['Hour'],
|
||
transformer_time['Minute'],
|
||
)
|
||
|
||
finished_task_num = dailydata['finished_task_num']
|
||
total_task_num = dailydata['total_task_num']
|
||
is_extra_got = '已' if dailydata['is_extra_task_reward_received'] else '未'
|
||
|
||
resin_discount_num_limit = dailydata['resin_discount_num_limit']
|
||
used_resin_discount_num = (
|
||
resin_discount_num_limit - dailydata['remain_resin_discount_num']
|
||
)
|
||
|
||
home_coin = (
|
||
f'{dailydata["current_home_coin"]}/{dailydata["max_home_coin"]}'
|
||
)
|
||
if dailydata['current_home_coin'] < dailydata['max_home_coin']:
|
||
coin_rec_time = seconds2hours(
|
||
int(dailydata['home_coin_recovery_time'])
|
||
)
|
||
coin_add_speed = math.ceil(
|
||
(dailydata['max_home_coin'] - dailydata['current_home_coin'])
|
||
/ (int(dailydata['home_coin_recovery_time']) / 60 / 60)
|
||
)
|
||
home_coin += f'({coin_rec_time} 约{coin_add_speed}/h)'
|
||
|
||
expedition_data = '\n'.join(expedition_info)
|
||
send_mes = daily_im.format(
|
||
current_resin,
|
||
max_resin,
|
||
rec_time,
|
||
finished_task_num,
|
||
total_task_num,
|
||
is_extra_got,
|
||
used_resin_discount_num,
|
||
resin_discount_num_limit,
|
||
home_coin,
|
||
transformer_status,
|
||
current_expedition_num,
|
||
finished_expedition_num,
|
||
max_expedition_num,
|
||
expedition_data,
|
||
)
|
||
return send_mes
|