🐛 修复nb rc1版本依赖注入更改导致的bug

This commit is contained in:
CMHopeSunshine 2022-10-20 21:07:41 +08:00
parent 4638c5d021
commit ae7a380cc3
7 changed files with 46 additions and 33 deletions

View File

@ -33,14 +33,23 @@ logo = """<g>
async def startup():
logger.opt(colors=True).info(logo)
await database.connect()
from LittlePaimon import admin
await migrate_database()
await check_resource()
from LittlePaimon import web
# from LittlePaimon import admin
# await migrate_database()
# await check_resource()
DRIVER.on_shutdown(database.disconnect)
load_plugin('LittlePaimon.manager.bot_manager')
load_plugin('LittlePaimon.manager.plugin_manager')
load_plugin('LittlePaimon.manager.database_manager')
load_plugin('LittlePaimon.manager.alias_manager')
load_plugins(str(Path(__file__).parent / 'plugins'))
# load_plugin('LittlePaimon.plugins.Mihoyo_bbs')
# load_plugin('LittlePaimon.plugins.tools')
# load_plugin('LittlePaimon.plugins.Chat')
load_plugin('LittlePaimon.plugins.Paimon_MonthInfo')
load_plugin('LittlePaimon.plugins.Paimon_Info')
# load_plugin('LittlePaimon.plugins.Paimon_Abyss')
# load_plugin('LittlePaimon.plugins.Paimon_Bind')
# load_plugin('LittlePaimon.manager.bot_manager')
# load_plugin('LittlePaimon.manager.plugin_manager')
# load_plugin('LittlePaimon.manager.database_manager')
# load_plugin('LittlePaimon.manager.alias_manager')
# load_plugins(str(Path(__file__).parent / 'plugins'))

View File

@ -89,7 +89,7 @@ async def _(event: Union[GroupMessageEvent, PrivateMessageEvent], lang=CommandLa
@voice_list.handle()
async def _(event: Union[GroupMessageEvent, PrivateMessageEvent], character=CommandCharacter(1, False), lang=CommandLang()):
async def _(event: Union[GroupMessageEvent, PrivateMessageEvent], character=CommandCharacter(1), lang=CommandLang()):
result = await get_voice_list(character[0], lang)
await get_voice.finish(result)

View File

@ -1,6 +1,6 @@
from nonebot import on_command
from nonebot.adapters.onebot.v11 import Message, MessageEvent, GroupMessageEvent
from nonebot.params import Arg
from nonebot.params import CommandArg
from nonebot.plugin import PluginMetadata
from LittlePaimon.utils import logger
@ -42,9 +42,9 @@ abyss_team = on_command('深渊配队', aliases={'配队推荐', '深渊阵容'}
@sy.handle()
async def _(event: MessageEvent, players=CommandPlayer(), msg: str = Arg('msg')):
async def _(event: MessageEvent, players=CommandPlayer(), msg: Message = CommandArg()):
logger.info('原神深渊战报', '开始执行')
abyss_index = 2 if any(i in msg for i in ['', 'last']) else 1
abyss_index = 2 if any(i in msg.extract_plain_text() for i in ['', 'last']) else 1
msg = Message()
for player in players:
logger.info('原神深渊战报', '', {'用户': players[0].user_id, 'UID': players[0].uid})

View File

@ -2,8 +2,8 @@ from typing import Union
from nonebot import on_command
from nonebot.adapters.onebot.v11 import Message, MessageEvent, GroupMessageEvent, PrivateMessageEvent
from nonebot.params import Arg
from nonebot.plugin import PluginMetadata
from nonebot.typing import T_State
from LittlePaimon.database.models import DailyNoteSub
from LittlePaimon.utils import logger
@ -39,8 +39,8 @@ ssbq_sub = on_command('ssbq提醒', aliases={'实时便笺提醒', '实时便签
@ssbq.handle()
async def _(event: MessageEvent, players=CommandPlayer(), msg: str = Arg('msg')):
if msg:
async def _(event: MessageEvent, state: T_State, players=CommandPlayer()):
if state.get('clear_msg'):
await ssbq.finish('开启提醒请用[ssbq提醒开启|关闭 提醒内容+数量]指令,比如[ssbq提醒开启树脂150]')
logger.info('原神实时便签', '开始执行查询')
result = Message()

View File

@ -1,7 +1,7 @@
from nonebot import on_command
from nonebot.adapters.onebot.v11 import Message, MessageEvent, MessageSegment
from nonebot.adapters.onebot.v11.helpers import HandleCancellation
from nonebot.params import Arg, ArgPlainText, CommandArg
from nonebot.params import ArgPlainText, CommandArg
from nonebot.plugin import PluginMetadata
from nonebot.typing import T_State
@ -208,7 +208,8 @@ running_udi = []
@update_info.handle()
async def _(event: MessageEvent, uid=CommandUID(), msg: str = Arg('msg')):
async def _(event: MessageEvent, state: T_State, uid=CommandUID()):
msg = state['clear_msg']
if not freq_limiter.check(f'udi{uid}'):
await update_info.finish(f'UID{uid}: 更新信息冷却剩余{freq_limiter.left(f"udi{uid}")}\n', at_sender=True)
elif f'{event.user_id}-{uid}' in running_udi:

View File

@ -2,9 +2,9 @@ import datetime
import re
from nonebot import on_command
from nonebot.params import Arg
from nonebot.adapters.onebot.v11 import Message, MessageEvent
from nonebot.plugin import PluginMetadata
from nonebot.typing import T_State
from LittlePaimon.utils.message import CommandPlayer
from .handler import handle_myzj
@ -29,7 +29,8 @@ myzj = on_command('myzj', aliases={'札记信息', '每月札记'}, priority=10,
@myzj.handle()
async def myzj_handler(event: MessageEvent, players=CommandPlayer(), msg: str = Arg('msg')):
async def myzj_handler(event: MessageEvent, state: T_State, players=CommandPlayer()):
msg = state['clear_msg']
month_now = datetime.datetime.now().month
if month_now == 1:
month_list = ['11', '12', '1']

View File

@ -118,8 +118,6 @@ def CommandPlayer(limit: int = 3, only_cn: bool = True) -> List[Player]:
info += f'{u}尚未提供uid\n'
if info:
await matcher.finish(info, at_sender=True)
else:
state['main_user'] = users[0]
else:
user = users[0]
uids: List[str] = []
@ -132,13 +130,12 @@ def CommandPlayer(limit: int = 3, only_cn: bool = True) -> List[Player]:
extra_info = replace_all(extra_info, uids)
for uid in uids:
query_list.append(Player(user_id=user, uid=uid))
state['main_user'] = str(event.user_id)
if len(query_list) > limit:
query_list = query_list[:limit]
if only_cn:
query_list = [q for q in query_list if q.uid.startswith(('1', '2', '5'))]
state['msg'] = extra_info.strip()
state['clear_msg'] = extra_info.strip()
return query_list
return Depends(_player)
@ -161,31 +158,35 @@ def CommandUID(only_cn: bool = True) -> str:
uid = uid
else:
await matcher.finish('第一次查询请把UID给我哦')
state['msg'] = event.message.extract_plain_text().replace(uid, '')
state['clear_msg'] = event.message.extract_plain_text().replace(uid, '')
return uid
return Depends(_uid)
def CommandCharacter(limit: int = 3, replace_uid: bool = True) -> List[str]:
def CommandCharacter(limit: int = 3) -> List[str]:
"""
从命令中提取出原神的角色需配合CommandUID使用
:param limit: 限制个数
:param replace_uid: 是否先移除msg中的uid
:return: 角色名列表
"""
async def _character(matcher: Matcher, state: T_State, event: MessageEvent):
msg = state['_prefix']['command_arg'].extract_plain_text().strip() if not replace_uid else state['msg']
user_id = state.get('main_user', str(event.user_id))
if not msg:
async def _character(matcher: Matcher, state: T_State, event: MessageEvent, msg: Message = CommandArg()):
# 获取艾特列表的第一个人或是事件触发者的qq
user_id = users[0] if (users := [str(seg.data['qq']) for seg in msg['at']]) else str(event.user_id)
# 去除消息中的uid
msg = re.sub(r'[125]\d{8}', '', msg.extract_plain_text())
# 没有消息的话,就随机选择一个角色
if not (msg := msg.strip()):
return [random.choice(CHARACTERS)]
character_list = []
characters = msg.split(' ')
for character_name in characters:
# 按空格分割消息
for character_name in msg.split(' '):
# 如果有设置别名
if character_match := await PlayerAlias.get_or_none(user_id=user_id, alias=character_name):
character_list.append(character_match.character)
msg.replace(character_name, '')
# 如果在预设别名列表
elif character_name in ['老婆', '老公', '女儿', '儿子', '爸爸', '妈妈']:
if character_name == '老公':
character_list.append(random.choice(MALE_CHARACTERS + BOY_CHARACTERS))
@ -200,12 +201,13 @@ def CommandCharacter(limit: int = 3, replace_uid: bool = True) -> List[str]:
elif character_name == '妈妈':
character_list.append(random.choice(FEMALE_CHARACTERS))
msg.replace(character_name, '')
# 如果有匹配别名
elif character_match := get_match_alias(character_name, '角色', True):
character_list.append(list(character_match.keys())[0])
msg.replace(character_name, '')
# 没有匹配到角色时,结束事件
if not character_list:
await matcher.finish(f'没有名为{msg}的角色!')
state['msg'] = msg
if len(character_list) > limit:
character_list = character_list[:limit]
return character_list