更新星铁wiki

This commit is contained in:
CMHopeSunshine 2023-12-22 23:39:05 +08:00
parent 034d18609f
commit 688d98fec6

View File

@ -1,7 +1,7 @@
import datetime import datetime
from difflib import get_close_matches from difflib import get_close_matches
from re import escape from re import escape
from typing import Dict from typing import Dict, List
from nonebot import on_regex from nonebot import on_regex
from nonebot.adapters.onebot.v11 import Message, MessageSegment, ActionFailed from nonebot.adapters.onebot.v11 import Message, MessageSegment, ActionFailed
@ -17,6 +17,7 @@ from LittlePaimon.utils.requests import aiorequests
from LittlePaimon.utils.typing import COMMAND_START_RE from LittlePaimon.utils.typing import COMMAND_START_RE
wiki_data: Dict[str, Dict[str, str]] = {} wiki_data: Dict[str, Dict[str, str]] = {}
name_map: Dict[str, Dict[str, List[str]]] = {}
last_update_time: datetime.datetime = datetime.datetime.now() last_update_time: datetime.datetime = datetime.datetime.now()
GAME_ALIAS = ['星穹铁道', '星铁', '崩铁', '穹轨', '铁轨', '铁道', escape('*'), ''] GAME_ALIAS = ['星穹铁道', '星铁', '崩铁', '穹轨', '铁轨', '铁道', escape('*'), '']
@ -79,9 +80,9 @@ async def sr_wiki_handler(state: T_State, regex_dict: dict = RegexDict()):
if name: if name:
state['name'] = Message(name) state['name'] = Message(name)
else: else:
data = list(wiki_data[TYPE_MAP[type]].keys()) data = list(name_map[TYPE_MAP[type]].values())
state['name_list'] = '\n'.join( state['name_list'] = '\n'.join(
[' '.join(data[i: i + 3]) for i in range(0, len(data), 3)] [' '.join(data[i: i + 3][0]) for i in range(0, len(data), 3)]
) )
state['times'] = 1 state['times'] = 1
@ -99,18 +100,21 @@ async def sr_wiki_got(matcher: Matcher,
else: else:
state['times'] += 1 state['times'] += 1
await wiki.reject(f'你要查询谁的{type}呢?', at_sender=True) await wiki.reject(f'你要查询谁的{type}呢?', at_sender=True)
data = wiki_data[TYPE_MAP[type]] data = name_map[TYPE_MAP[type]]
matcher.stop_propagation() matcher.stop_propagation()
if matches := get_close_matches(name, data.keys(), cutoff=0.4, n=1): find_flag = False
final_name = str(matches[0]) for id_, alias in data.items():
if name in alias:
find_flag = True
data_path = wiki_data[TYPE_MAP[type]][id_]
try: try:
await wiki.finish(MessageSegment.image( await wiki.finish(MessageSegment.image(
f'{config.github_proxy}https://raw.githubusercontent.com/Nwflower/star-rail-atlas/master{data[final_name]}'.replace(" ", "%20") f'{config.github_proxy}https://raw.githubusercontent.com/Nwflower/star-rail-atlas/master{data_path}'.replace(" ", "%20")
)) ))
except ActionFailed: except ActionFailed:
await wiki.finish(f'{final_name}{type}发送失败,可能是网络问题') await wiki.finish(f'{alias[0]}{type}发送失败,可能是网络问题')
else: if not find_flag:
data = list(data.keys()) data = [i[0] for i in data.values()]
msg = '\n'.join( msg = '\n'.join(
[' '.join(data[i: i + 3]) for i in range(0, len(data), 3)] [' '.join(data[i: i + 3]) for i in range(0, len(data), 3)]
) )
@ -121,8 +125,10 @@ async def init_data():
try: try:
resp = await aiorequests.get( resp = await aiorequests.get(
f'{config.github_proxy}https://raw.githubusercontent.com/Nwflower/star-rail-atlas/master/path.json') f'{config.github_proxy}https://raw.githubusercontent.com/Nwflower/star-rail-atlas/master/path.json')
data = resp.json() wiki_data.update(resp.json())
wiki_data.update(data) resp2 = await aiorequests.get(
f'{config.github_proxy}https://raw.githubusercontent.com/Nwflower/star-rail-atlas/master/othername.json')
name_map.update(resp2.json())
global last_update_time global last_update_time
last_update_time = datetime.datetime.now() last_update_time = datetime.datetime.now()
except Exception: except Exception: