2022-08-29 23:12:44 +08:00

112 lines
3.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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