Wiki增加材料特产,并优化指令使用方法,支持了大范围查询,如火元素角色图鉴长枪武器图鉴圣遗物图鉴

This commit is contained in:
CMHopeSunshine 2022-12-24 00:20:36 +08:00
parent 33c2f83606
commit 6999d71f18
2 changed files with 39 additions and 39 deletions

View File

@ -39,7 +39,8 @@ class PluginManager:
'武器图鉴', '武器图鉴',
'收益曲线', '角色材料', '角色攻略', '收益曲线', '角色材料', '角色攻略',
'七圣召唤图鉴', '七圣召唤图鉴',
'角色图鉴'}] '角色图鉴',
'材料图鉴'}]
@classmethod @classmethod
def save(cls): def save(cls):

View File

@ -16,7 +16,6 @@ from LittlePaimon.utils import NICKNAME
from LittlePaimon.config import config from LittlePaimon.config import config
from LittlePaimon.utils.alias import get_match_alias, WEAPON_TYPE_ALIAS, type_file, alias_file from LittlePaimon.utils.alias import get_match_alias, WEAPON_TYPE_ALIAS, type_file, alias_file
from LittlePaimon.utils.message import MessageBuild, fullmatch_rule from LittlePaimon.utils.message import MessageBuild, fullmatch_rule
from LittlePaimon.utils.path import RESOURCE_BASE_PATH
from LittlePaimon.utils.tool import freq_limiter from LittlePaimon.utils.tool import freq_limiter
from LittlePaimon.utils.typing import COMMAND_START_RE from LittlePaimon.utils.typing import COMMAND_START_RE
from .draw_daily_material import draw_material from .draw_daily_material import draw_material
@ -47,7 +46,7 @@ WIKI_RE = fr'{COMMAND_START_RE}(?P<name1>\w{{0,7}}?)(?P<type>{BASE_TYPE_RE}?{IMG
total_wiki = on_regex( total_wiki = on_regex(
WIKI_RE, WIKI_RE,
priority=12, priority=9,
block=True, block=True,
state={ state={
'pm_name': '原神WIKI', 'pm_name': '原神WIKI',
@ -56,12 +55,12 @@ total_wiki = on_regex(
'pm_usage': '<对象名><图鉴|攻略|材料>', 'pm_usage': '<对象名><图鉴|攻略|材料>',
'pm_priority': 1 'pm_priority': 1
}) })
material_map = on_command('材料图鉴', priority=11, block=True, state={ # material_map = on_command('材料图鉴', priority=11, block=True, state={
'pm_name': '材料图鉴', # 'pm_name': '材料图鉴',
'pm_description': '查看某个材料的介绍和采集点。', # 'pm_description': '查看某个材料的介绍和采集点。',
'pm_usage': '材料图鉴<材料名>[地图]', # 'pm_usage': '材料图鉴<材料名>[地图]',
'pm_priority': 2 # 'pm_priority': 2
}) # })
material_map_full = on_command('材料地图', priority=11, block=True, state={ material_map_full = on_command('材料地图', priority=11, block=True, state={
'pm_name': '材料地图', 'pm_name': '材料地图',
'pm_description': '查看多个材料大地图采集点。\n示例:材料地图 鸣草 鬼兜虫 提瓦特', 'pm_description': '查看多个材料大地图采集点。\n示例:材料地图 鸣草 鬼兜虫 提瓦特',
@ -90,38 +89,38 @@ card_wiki_list = on_command('七圣召唤列表', aliases={'七圣召唤卡牌
}) })
@material_map.handle() # @material_map.handle()
async def _(event: MessageEvent, state: T_State, msg: Message = CommandArg()): # async def _(event: MessageEvent, state: T_State, msg: Message = CommandArg()):
if params := msg.extract_plain_text().strip(): # if params := msg.extract_plain_text().strip():
params = params.split(' ') # params = params.split(' ')
state['name'] = Message(params[0]) # state['name'] = Message(params[0])
if len(params) > 1: # if len(params) > 1:
if params[1] in {'提瓦特', '层岩巨渊', '渊下宫'}: # if params[1] in {'提瓦特', '层岩巨渊', '渊下宫'}:
state['map'] = params[1] # state['map'] = params[1]
else: # else:
state['map'] = Message('提瓦特') # state['map'] = Message('提瓦特')
else: # else:
state['map'] = Message('提瓦特') # state['map'] = Message('提瓦特')
@material_map.got('map', prompt='地图名称有误,请在【提瓦特、层岩巨渊、渊下宫】中选择,或回答【取消】退出', # @material_map.got('map', prompt='地图名称有误,请在【提瓦特、层岩巨渊、渊下宫】中选择,或回答【取消】退出',
parameterless=cancel) # parameterless=cancel)
async def _(event: MessageEvent, state: T_State, map_: str = ArgPlainText('map')): # async def _(event: MessageEvent, state: T_State, map_: str = ArgPlainText('map')):
if map_ not in {'提瓦特', '层岩巨渊', '渊下宫'}: # if map_ not in {'提瓦特', '层岩巨渊', '渊下宫'}:
await material_map.reject('地图名称有误,请在【提瓦特、层岩巨渊、渊下宫】中选择') # await material_map.reject('地图名称有误,请在【提瓦特、层岩巨渊、渊下宫】中选择')
else: # else:
state['map'] = Message(map_) # state['map'] = Message(map_)
#
#
@material_map.got('name', prompt='请输入要查询的材料名称,或回答【取消】退出', # @material_map.got('name', prompt='请输入要查询的材料名称,或回答【取消】退出',
parameterless=cancel) # parameterless=cancel)
async def _(event: MessageEvent, map_: str = ArgPlainText('map'), name: str = ArgPlainText('name')): # async def _(event: MessageEvent, map_: str = ArgPlainText('map'), name: str = ArgPlainText('name')):
if (file_path := RESOURCE_BASE_PATH / 'genshin_map' / 'results' / f'{map_}_{name}.png').exists(): # if (file_path := RESOURCE_BASE_PATH / 'genshin_map' / 'results' / f'{map_}_{name}.png').exists():
await material_map.finish(MessageSegment.image(file_path), at_sender=True) # await material_map.finish(MessageSegment.image(file_path), at_sender=True)
else: # else:
await material_map.send(MessageBuild.Text(f'开始查找{name}的资源点,请稍候...')) # await material_map.send(MessageBuild.Text(f'开始查找{name}的资源点,请稍候...'))
result = await draw_map(name, map_) # result = await draw_map(name, map_)
await material_map.finish(result, at_sender=True) # await material_map.finish(result, at_sender=True)
@material_map_full.handle() @material_map_full.handle()