🐛 修复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(): async def startup():
logger.opt(colors=True).info(logo) logger.opt(colors=True).info(logo)
await database.connect() await database.connect()
from LittlePaimon import admin from LittlePaimon import web
await migrate_database() # from LittlePaimon import admin
await check_resource() # await migrate_database()
# await check_resource()
DRIVER.on_shutdown(database.disconnect) DRIVER.on_shutdown(database.disconnect)
load_plugin('LittlePaimon.manager.bot_manager') # load_plugin('LittlePaimon.plugins.Mihoyo_bbs')
load_plugin('LittlePaimon.manager.plugin_manager') # load_plugin('LittlePaimon.plugins.tools')
load_plugin('LittlePaimon.manager.database_manager') # load_plugin('LittlePaimon.plugins.Chat')
load_plugin('LittlePaimon.manager.alias_manager') load_plugin('LittlePaimon.plugins.Paimon_MonthInfo')
load_plugins(str(Path(__file__).parent / 'plugins')) 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() @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) result = await get_voice_list(character[0], lang)
await get_voice.finish(result) await get_voice.finish(result)

View File

@ -1,6 +1,6 @@
from nonebot import on_command from nonebot import on_command
from nonebot.adapters.onebot.v11 import Message, MessageEvent, GroupMessageEvent 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 nonebot.plugin import PluginMetadata
from LittlePaimon.utils import logger from LittlePaimon.utils import logger
@ -42,9 +42,9 @@ abyss_team = on_command('深渊配队', aliases={'配队推荐', '深渊阵容'}
@sy.handle() @sy.handle()
async def _(event: MessageEvent, players=CommandPlayer(), msg: str = Arg('msg')): async def _(event: MessageEvent, players=CommandPlayer(), msg: Message = CommandArg()):
logger.info('原神深渊战报', '开始执行') 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() msg = Message()
for player in players: for player in players:
logger.info('原神深渊战报', '', {'用户': players[0].user_id, 'UID': players[0].uid}) 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 import on_command
from nonebot.adapters.onebot.v11 import Message, MessageEvent, GroupMessageEvent, PrivateMessageEvent from nonebot.adapters.onebot.v11 import Message, MessageEvent, GroupMessageEvent, PrivateMessageEvent
from nonebot.params import Arg
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot.typing import T_State
from LittlePaimon.database.models import DailyNoteSub from LittlePaimon.database.models import DailyNoteSub
from LittlePaimon.utils import logger from LittlePaimon.utils import logger
@ -39,8 +39,8 @@ ssbq_sub = on_command('ssbq提醒', aliases={'实时便笺提醒', '实时便签
@ssbq.handle() @ssbq.handle()
async def _(event: MessageEvent, players=CommandPlayer(), msg: str = Arg('msg')): async def _(event: MessageEvent, state: T_State, players=CommandPlayer()):
if msg: if state.get('clear_msg'):
await ssbq.finish('开启提醒请用[ssbq提醒开启|关闭 提醒内容+数量]指令,比如[ssbq提醒开启树脂150]') await ssbq.finish('开启提醒请用[ssbq提醒开启|关闭 提醒内容+数量]指令,比如[ssbq提醒开启树脂150]')
logger.info('原神实时便签', '开始执行查询') logger.info('原神实时便签', '开始执行查询')
result = Message() result = Message()

View File

@ -1,7 +1,7 @@
from nonebot import on_command from nonebot import on_command
from nonebot.adapters.onebot.v11 import Message, MessageEvent, MessageSegment from nonebot.adapters.onebot.v11 import Message, MessageEvent, MessageSegment
from nonebot.adapters.onebot.v11.helpers import HandleCancellation 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.plugin import PluginMetadata
from nonebot.typing import T_State from nonebot.typing import T_State
@ -208,7 +208,8 @@ running_udi = []
@update_info.handle() @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}'): 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) 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: elif f'{event.user_id}-{uid}' in running_udi:

View File

@ -2,9 +2,9 @@ import datetime
import re import re
from nonebot import on_command from nonebot import on_command
from nonebot.params import Arg
from nonebot.adapters.onebot.v11 import Message, MessageEvent from nonebot.adapters.onebot.v11 import Message, MessageEvent
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot.typing import T_State
from LittlePaimon.utils.message import CommandPlayer from LittlePaimon.utils.message import CommandPlayer
from .handler import handle_myzj from .handler import handle_myzj
@ -29,7 +29,8 @@ myzj = on_command('myzj', aliases={'札记信息', '每月札记'}, priority=10,
@myzj.handle() @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 month_now = datetime.datetime.now().month
if month_now == 1: if month_now == 1:
month_list = ['11', '12', '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' info += f'{u}尚未提供uid\n'
if info: if info:
await matcher.finish(info, at_sender=True) await matcher.finish(info, at_sender=True)
else:
state['main_user'] = users[0]
else: else:
user = users[0] user = users[0]
uids: List[str] = [] 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) extra_info = replace_all(extra_info, uids)
for uid in uids: for uid in uids:
query_list.append(Player(user_id=user, uid=uid)) query_list.append(Player(user_id=user, uid=uid))
state['main_user'] = str(event.user_id)
if len(query_list) > limit: if len(query_list) > limit:
query_list = query_list[:limit] query_list = query_list[:limit]
if only_cn: if only_cn:
query_list = [q for q in query_list if q.uid.startswith(('1', '2', '5'))] 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 query_list
return Depends(_player) return Depends(_player)
@ -161,31 +158,35 @@ def CommandUID(only_cn: bool = True) -> str:
uid = uid uid = uid
else: else:
await matcher.finish('第一次查询请把UID给我哦') 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 uid
return Depends(_uid) return Depends(_uid)
def CommandCharacter(limit: int = 3, replace_uid: bool = True) -> List[str]: def CommandCharacter(limit: int = 3) -> List[str]:
""" """
从命令中提取出原神的角色需配合CommandUID使用 从命令中提取出原神的角色需配合CommandUID使用
:param limit: 限制个数 :param limit: 限制个数
:param replace_uid: 是否先移除msg中的uid
:return: 角色名列表 :return: 角色名列表
""" """
async def _character(matcher: Matcher, state: T_State, event: MessageEvent): async def _character(matcher: Matcher, state: T_State, event: MessageEvent, msg: Message = CommandArg()):
msg = state['_prefix']['command_arg'].extract_plain_text().strip() if not replace_uid else state['msg'] # 获取艾特列表的第一个人或是事件触发者的qq
user_id = state.get('main_user', str(event.user_id)) user_id = users[0] if (users := [str(seg.data['qq']) for seg in msg['at']]) else str(event.user_id)
if not msg: # 去除消息中的uid
msg = re.sub(r'[125]\d{8}', '', msg.extract_plain_text())
# 没有消息的话,就随机选择一个角色
if not (msg := msg.strip()):
return [random.choice(CHARACTERS)] return [random.choice(CHARACTERS)]
character_list = [] 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): if character_match := await PlayerAlias.get_or_none(user_id=user_id, alias=character_name):
character_list.append(character_match.character) character_list.append(character_match.character)
msg.replace(character_name, '') msg.replace(character_name, '')
# 如果在预设别名列表
elif character_name in ['老婆', '老公', '女儿', '儿子', '爸爸', '妈妈']: elif character_name in ['老婆', '老公', '女儿', '儿子', '爸爸', '妈妈']:
if character_name == '老公': if character_name == '老公':
character_list.append(random.choice(MALE_CHARACTERS + BOY_CHARACTERS)) 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 == '妈妈': elif character_name == '妈妈':
character_list.append(random.choice(FEMALE_CHARACTERS)) character_list.append(random.choice(FEMALE_CHARACTERS))
msg.replace(character_name, '') msg.replace(character_name, '')
# 如果有匹配别名
elif character_match := get_match_alias(character_name, '角色', True): elif character_match := get_match_alias(character_name, '角色', True):
character_list.append(list(character_match.keys())[0]) character_list.append(list(character_match.keys())[0])
msg.replace(character_name, '') msg.replace(character_name, '')
# 没有匹配到角色时,结束事件
if not character_list: if not character_list:
await matcher.finish(f'没有名为{msg}的角色!') await matcher.finish(f'没有名为{msg}的角色!')
state['msg'] = msg
if len(character_list) > limit: if len(character_list) > limit:
character_list = character_list[:limit] character_list = character_list[:limit]
return character_list return character_list