材料地图资源需要手动生成以避免内存较小的机器启动卡死

This commit is contained in:
CMHopeSunshine 2022-09-19 17:50:17 +08:00
parent de1b55cc39
commit eb845978f4
2 changed files with 18 additions and 2 deletions

View File

@ -6,9 +6,10 @@ from nonebot.adapters.onebot.v11.helpers import HandleCancellation
from nonebot.adapters.onebot.v11.exception import ActionFailed
from nonebot.params import RegexDict, ArgPlainText, CommandArg, Arg
from nonebot.plugin import PluginMetadata
from nonebot.permission import SUPERUSER
from nonebot.typing import T_State
from LittlePaimon import NICKNAME, DRIVER
from LittlePaimon import NICKNAME
from LittlePaimon.utils.alias import get_match_alias
from LittlePaimon.utils.tool import freq_limiter
from LittlePaimon.utils.message import MessageBuild
@ -61,6 +62,12 @@ material_map_full = on_command('材料地图', priority=11, block=True, state={
'pm_usage': '材料地图<材料名列表>[地图]',
'pm_priority': 10
})
generate_map = on_command('生成地图', priority=1, block=True, permission=SUPERUSER, state={
'pm_name': '生成地图',
'pm_description': '生成材料图鉴等所需要的地图资源,仅超级用户可用。',
'pm_usage': '生成地图',
'pm_priority': 11
})
# abyss_rate = on_command('syrate', aliases={'深渊登场率', '深境螺旋登场率', '深渊登场率排行', '深渊排行'}, priority=11, block=True, state={
@ -166,7 +173,11 @@ async def _(event: MessageEvent, map_: str = Arg('map'), names=Arg('names')):
await material_map_full.finish(result, at_sender=True)
DRIVER.on_bot_connect(init_map)
@generate_map.handle()
async def _(event: MessageEvent):
await generate_map.send('开始生成地图资源,这可能需要较长时间。')
result = await init_map()
await generate_map.finish(result)
def create_wiki_matcher(pattern: str, help_fun: str, help_name: str):

View File

@ -47,6 +47,7 @@ async def init_map(refresh: bool = False):
map_img.paste(anchor_icon, (int(point.x) - 32, int(point.y) - 64), anchor_icon)
map_img.save(save_path)
logger.info('原神地图', f'<m>{map_name[map_id.name]}</m>地图初始化完成')
return f'地图资源生成完成,目前有{"".join(list(map_name_reverse.keys()))}地图。'
async def draw_map(name: str, map_: str):
@ -57,6 +58,8 @@ async def draw_map(name: str, map_: str):
:return: 地图
"""
map_id = models.MapID[map_name_reverse[map_]]
if not (RESOURCE_BASE_PATH / 'genshin_map' / 'results' / f'{map_id.name}.png').exists():
return f'缺少{map_id.name}地图资源,请联系超级用户进行[生成地图]'
maps = await request.get_maps(map_id)
labels = await request.get_labels(map_id)
if resources := list(filter(lambda x: x.name == name, [child for label in labels for child in label.children])):
@ -113,6 +116,8 @@ async def draw_map(name: str, map_: str):
async def get_full_map(names: List[str], map_: str):
map_id = models.MapID[map_name_reverse[map_]]
if not (RESOURCE_BASE_PATH / 'genshin_map' / 'results' / f'{map_id.name}.png').exists():
return f'缺少{map_id.name}地图资源,请联系超级用户进行[生成地图]'
maps = await request.get_maps(map_id)
labels = await request.get_labels(map_id)
resources = []