ys探索度增加百分比环,增加原神数据自动更新时间配置项,增加删除别名,修复ssbq百分比环

This commit is contained in:
CMHopeSunshine 2022-09-01 16:48:05 +08:00
parent 783e4b8eb3
commit a005ddd27b
5 changed files with 52 additions and 16 deletions

View File

@ -58,4 +58,8 @@ class Config(BaseModel):
ssbq_end: int = Field(6, alias='实时便签停止检查结束时间')
ssbq_check: int = Field(16, alias='实时便签检查间隔')
AI_voice_cooldown: int = Field(10, alias='原神AI语音合成冷却时间(秒)')
AI_voice_cooldown: int = Field(10, alias='原神语音合成冷却')
ys_auto_update: int = Field(24, alia='ys自动更新小时')
ysa_auto_update: int = Field(24, alia='ysa自动更新小时')
ysd_auto_update: int = Field(6, alia='ysd自动更新小时')

View File

@ -28,7 +28,7 @@ async def draw_daily_note_card(data, uid):
# 宝钱文字
await bg_img.text(f"{data['current_home_coin']}/{data['max_home_coin']}", 337, 701, fm.get('number.ttf', 48),
'white')
await bg_img.draw_ring((266, 266), (98, 369), percent=data['current_home_coin'] / data['max_home_coin'] if data['max_home_coin'] != 0 else 1, width=0.18, colors=['#507bd0', '#FFFFFF'])
await bg_img.draw_ring((266, 266), (98, 593), percent=(data['current_home_coin'] / data['max_home_coin']) if data['max_home_coin'] != 0 else 1, width=0.18, colors=['#507bd0', '#FFFFFF'])
if data['current_home_coin'] == data['max_home_coin']:
await bg_img.text("洞天宝钱满了哦~", 820, 701, fm.get('优设标题黑.ttf', 40), 'white')
else:

View File

@ -1,6 +1,6 @@
from nonebot import on_command, on_regex
from nonebot.adapters.onebot.v11 import Message, MessageEvent, MessageSegment
from nonebot.params import Arg, RegexDict
from nonebot.params import Arg, RegexDict, CommandArg
from nonebot.plugin import PluginMetadata
from LittlePaimon import NICKNAME
@ -60,16 +60,24 @@ ysd = on_command('ysd', aliases={'角色详情', '角色信息', '角色面板'}
})
update_info = on_command('udi', aliases={'更新角色信息', '更新面板', '更新玩家信息'}, priority=10, block=True, state={
'pm_name': 'udi',
'pm_description': '更新你的原神玩家和角色数据绑定cookie后数据更详细',
'pm_usage': '更新角色信息(uid)',
'pm_description': '更新你的原神玩家和角色数据绑定cookie后数据更详细,加上"天赋"可以更新天赋等级',
'pm_usage': '更新角色信息[天赋](uid)',
'pm_priority': 6
})
add_alias = on_regex(rf'((?P<chara>{CHARA_RE})是[我俺咱]的?(?P<alias>\w+))|([我俺咱]的?(?P<alias2>\w+)[是叫名](?P<chara2>{CHARA_RE}))', priority=10, block=True, state={
add_alias = on_regex(
rf'((?P<chara>{CHARA_RE})是[我俺咱]的?(?P<alias>\w+))|([我俺咱]的?(?P<alias2>\w+)[是叫名](?P<chara2>{CHARA_RE}))', priority=10,
block=True, state={
'pm_name': '角色别名设置',
'pm_description': '设置专属于你的角色别名',
'pm_usage': '<角色名>是我<别名>',
'pm_priority': 7
})
delete_alias = on_command('删除别名', priority=10, block=True, state={
'pm_name': '角色别名删除',
'pm_description': '删除你已设置的角色别名',
'pm_usage': '删除别名<别名>',
'pm_priority': 8
})
@ys.handle()
@ -97,6 +105,7 @@ async def _(event: MessageEvent, players=CommandPlayer()):
running_ysa = []
@ysa.handle()
async def _(event: MessageEvent, players=CommandPlayer(2)):
logger.info('原神角色背包', '开始执行')
@ -250,3 +259,13 @@ async def _(event: MessageEvent, regex_dict: dict = RegexDict()):
alias = regex_dict['alias'] or regex_dict['alias2']
await PlayerAlias.update_or_create(user_id=str(event.user_id), alias=alias, defaults={'character': chara})
await add_alias.finish(f'{NICKNAME}知道{chara}是你的{alias}啦..')
@delete_alias.handle()
async def _(event: MessageEvent, msg: Message = CommandArg()):
msg = msg.extract_plain_text().strip()
if alias := await PlayerAlias.get_or_none(user_id=str(event.user_id), alias=msg):
await alias.delete()
await delete_alias.finish(f'别名{msg}删除成功!')
else:
await delete_alias.finish(f'你并没有将{msg}设置为某个角色的别名')

View File

@ -73,18 +73,21 @@ async def draw_world_card(img: PMImage, info: PlayerWorldInfo):
pass
elif info.name == '蒙德':
if info.unlock:
await img.draw_ring((225, 225), (89, 1157), 0.08, info.percent / 1000, ['white', (0, 0, 0, 0)])
await img.text(get_percent_text(info.percent), (110, 301), 1387, fm.get('hywh', 24), 'white', 'center')
await img.text(str(info.level) if info.level != 8 else 'Max', 150, 1447, fm.get('hywh', 24), 'white')
else:
await img.text('未解锁', (110, 301), 1387, fm.get('hywh', 24), 'white', 'center')
elif info.name == '璃月':
if info.unlock:
await img.draw_ring((225, 225), (313, 1157), 0.08, info.percent / 1000, ['white', (0, 0, 0, 0)])
await img.text(get_percent_text(info.percent), (334, 525), 1387, fm.get('hywh', 24), 'white', 'center')
await img.text(str(info.level) if info.level != 8 else 'Max', 374, 1447, fm.get('hywh', 24), 'white')
else:
await img.text('未解锁', (334, 525), 1387, fm.get('hywh', 24), 'white', 'center')
elif info.name == '稻妻':
if info.unlock:
await img.draw_ring((225, 225), (537, 1157), 0.08, info.percent / 1000, ['white', (0, 0, 0, 0)])
await img.text(get_percent_text(info.percent), (558, 749), 1387, fm.get('hywh', 24), 'white', 'center')
await img.text(str(info.level) if info.level != 10 else 'Max', 598, 1447, fm.get('hywh', 24), 'white')
await img.text(str(info.tree_level) if info.tree_level != 50 else 'Max', 710, 1447, fm.get('hywh', 24),
@ -94,6 +97,7 @@ async def draw_world_card(img: PMImage, info: PlayerWorldInfo):
await img.text('未解锁', (558, 749), 1387, fm.get('hywh', 24), 'white', 'center')
elif info.name == '龙脊雪山':
if info.unlock:
await img.draw_ring((225, 225), (89, 1494), 0.08, info.percent / 1000, ['white', (0, 0, 0, 0)])
await img.text(get_percent_text(info.percent), (110, 301), 1724, fm.get('hywh', 24), 'white', 'center')
await img.text(str(info.tree_level) if info.tree_level != 12 else 'Max', 150, 1784, fm.get('hywh', 24),
'white')
@ -110,6 +114,7 @@ async def draw_world_card(img: PMImage, info: PlayerWorldInfo):
'center')
elif info.name == '层岩巨渊·地下矿区':
if info.unlock:
await img.draw_ring((225, 225), (313, 1494), 0.08, info.percent / 1000, ['white', (0, 0, 0, 0)])
await img.text(f'地下{get_percent_text(info.percent)}', (334, 525), 1751, fm.get('hywh', 24), 'white',
'center')
else:
@ -117,11 +122,13 @@ async def draw_world_card(img: PMImage, info: PlayerWorldInfo):
'center')
elif info.name == '渊下宫':
if info.unlock:
await img.draw_ring((225, 225), (537, 1494), 0.08, info.percent / 1000, ['white', (0, 0, 0, 0)])
await img.text(get_percent_text(info.percent), (558, 749), 1724, fm.get('hywh', 24), 'white', 'center')
else:
await img.text('未解锁', (558, 749), 1724, fm.get('hywh', 24), 'white', 'center')
elif info.name == '须弥':
if info.unlock:
await img.draw_ring((225, 225), (761, 1157), 0.08, info.percent / 1000, ['white', (0, 0, 0, 0)])
await img.text(get_percent_text(info.percent), (782, 973), 1387, fm.get('hywh', 24), 'white', 'center')
await img.text(str(info.level) if info.level != 10 else 'Max', 826, 1447, fm.get('hywh', 24), 'white')
await img.text(str(info.tree_level) if info.tree_level != 50 else 'Max', 938, 1447, fm.get('hywh', 24),
@ -166,7 +173,9 @@ async def draw_player_card(player: Player, info: PlayerInfo, characters: List[Ch
(0, 0, 0, 153), 'center') for name in home_name])
# 世界探索
await asyncio.gather(*[draw_world_card(img, w) for w in info.world_explore.list()])
# await asyncio.gather(*[draw_world_card(img, w) for w in info.world_explore.list()])
for w in info.world_explore.list():
await draw_world_card(img, w)
# 角色
await asyncio.gather(

View File

@ -13,6 +13,7 @@ from LittlePaimon.utils.api import get_enka_data, get_mihoyo_public_data, get_mi
from LittlePaimon.utils.typing import DataSourceType
from LittlePaimon.utils.alias import get_name_by_id
from LittlePaimon.utils.typing import CHARACTERS
from LittlePaimon.manager.plugin_manager import plugin_manager as pm
ra_score = load_json(JSON_DATA / 'score.json')
talent_map = load_json(JSON_DATA / 'role_skill.json')
@ -95,6 +96,8 @@ class GenshinInfoManager:
if len(character.constellation) >= 5:
data[ra_score['Talent'][cname][1]]['level_current'] += 3
length = 4 if character.name in ['莫娜', '神里绫华'] else 3
if character.name == '安柏':
data[0], data[2] = data[2], data[0]
character.talents = Talents(talent_list=[Talent(
name=t['name'],
level=t['level_current'],
@ -166,7 +169,7 @@ class GenshinInfoManager:
if data_source == 'enka':
"""如果角色不存在或者角色的更新时间在6小时前则更新角色信息"""
character = await Character.get_or_none(**query, data_source='enka')
if not character or character.update_time < (datetime.datetime.now() - datetime.timedelta(hours=6)).replace(
if not character or character.update_time < (datetime.datetime.now() - datetime.timedelta(hours=pm.config.ysd_auto_update)).replace(
tzinfo=pytz.timezone('Asia/Shanghai')):
await self.update_from_enka()
if character := await Character.get_or_none(**query, data_source='enka'):
@ -179,8 +182,8 @@ class GenshinInfoManager:
elif data_source == 'mihoyo':
return await Character.get_or_none(**query, data_source='mihoyo')
else:
characters = await Character.filter(**query).order_by('update_time')
return characters[-1] if characters else None
characters = await Character.filter(**query).order_by('data_source')
return characters[0] if characters else None
async def get_chara_bag(self) -> Tuple[Union[PlayerInfo, str], List[Character]]:
"""
@ -190,7 +193,7 @@ class GenshinInfoManager:
await self.set_last_query()
player_info = await PlayerInfo.get_or_none(user_id=self.user_id, uid=self.uid)
if player_info is None or player_info.update_time is None or player_info.update_time < (
datetime.datetime.now() - datetime.timedelta(days=1)).replace(
datetime.datetime.now() - datetime.timedelta(hours=pm.config.ysa_auto_update)).replace(
tzinfo=pytz.timezone('Asia/Shanghai')):
result = await self.update_from_mihoyo()
if result != '更新成功':
@ -207,7 +210,7 @@ class GenshinInfoManager:
await self.set_last_query()
player_info = await PlayerInfo.get_or_none(user_id=self.user_id, uid=self.uid)
if player_info is None or player_info.update_time is None or player_info.update_time < (
datetime.datetime.now() - datetime.timedelta(days=1)).replace(
datetime.datetime.now() - datetime.timedelta(hours=pm.config.ys_auto_update)).replace(
tzinfo=pytz.timezone('Asia/Shanghai')):
result = await self.update_from_mihoyo()
if result != '更新成功':
@ -223,6 +226,7 @@ class GenshinInfoManager:
async def get_abyss_info(self, abyss_index: int = 1) -> Union[AbyssInfo, str]:
await self.set_last_query()
await AbyssInfo.filter(user_id=self.user_id, uid=self.uid).delete()
result = await self.update_abyss_info(abyss_index)
if result != '更新成功':
return result