🐛 fix typing

This commit is contained in:
yanyongyu 2021-03-19 14:59:59 +08:00
parent fc334ec7b9
commit 22033e1cfb
5 changed files with 69 additions and 68 deletions

View File

@ -25,17 +25,12 @@ class HandlerMeta(type):
class Handler(metaclass=HandlerMeta): class Handler(metaclass=HandlerMeta):
"""事件处理函数类""" """事件处理函数类"""
def __init__(self, func: T_Handler, module: Optional[str] = None): def __init__(self, func: T_Handler):
self.func: T_Handler = func self.func: T_Handler = func
""" """
:类型: ``T_Handler`` :类型: ``T_Handler``
:说明: 事件处理函数 :说明: 事件处理函数
""" """
self.module: Optional[str] = module
"""
:类型: ``Optional[str]``
:说明: 事件处理函数所在模块名称
"""
self.signature: inspect.Signature = self.get_signature() self.signature: inspect.Signature = self.get_signature()
""" """
:类型: ``inspect.Signature`` :类型: ``inspect.Signature``

View File

@ -146,7 +146,8 @@ class Matcher(metaclass=MatcherMeta):
type_: str = "", type_: str = "",
rule: Optional[Rule] = None, rule: Optional[Rule] = None,
permission: Optional[Permission] = None, permission: Optional[Permission] = None,
handlers: Optional[List[Union[T_Handler, Handler]]] = None, handlers: Optional[Union[List[T_Handler], List[Handler],
List[Union[T_Handler, Handler]]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = False, block: bool = False,
@ -299,10 +300,8 @@ class Matcher(metaclass=MatcherMeta):
return func return func
@classmethod @classmethod
def append_handler(cls, def append_handler(cls, handler: T_Handler) -> Handler:
handler: T_Handler, handler_ = Handler(handler)
module: Optional[str] = None) -> Handler:
handler_ = Handler(handler, module)
cls.handlers.append(handler_) cls.handlers.append(handler_)
return handler_ return handler_

View File

@ -14,6 +14,7 @@ from typing import Any, Set, List, Dict, Type, Tuple, Union, Optional, TYPE_CHEC
import tomlkit import tomlkit
from nonebot.log import logger from nonebot.log import logger
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
from nonebot.handler import Handler
from nonebot.permission import Permission from nonebot.permission import Permission
from nonebot.typing import T_State, T_StateFactory, T_Handler, T_RuleChecker from nonebot.typing import T_State, T_StateFactory, T_Handler, T_RuleChecker
from nonebot.rule import Rule, startswith, endswith, keyword, command, shell_command, ArgumentParser, regex from nonebot.rule import Rule, startswith, endswith, keyword, command, shell_command, ArgumentParser, regex
@ -107,7 +108,7 @@ def on(type: str = "",
rule: Optional[Union[Rule, T_RuleChecker]] = None, rule: Optional[Union[Rule, T_RuleChecker]] = None,
permission: Optional[Permission] = None, permission: Optional[Permission] = None,
*, *,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = False, block: bool = False,
@ -123,7 +124,7 @@ def on(type: str = "",
* ``type: str``: 事件响应器类型 * ``type: str``: 事件响应器类型
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -150,7 +151,7 @@ def on(type: str = "",
def on_metaevent( def on_metaevent(
rule: Optional[Union[Rule, T_RuleChecker]] = None, rule: Optional[Union[Rule, T_RuleChecker]] = None,
*, *,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = False, block: bool = False,
@ -164,7 +165,7 @@ def on_metaevent(
:参数: :参数:
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -191,7 +192,7 @@ def on_metaevent(
def on_message(rule: Optional[Union[Rule, T_RuleChecker]] = None, def on_message(rule: Optional[Union[Rule, T_RuleChecker]] = None,
permission: Optional[Permission] = None, permission: Optional[Permission] = None,
*, *,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = True, block: bool = True,
@ -206,7 +207,7 @@ def on_message(rule: Optional[Union[Rule, T_RuleChecker]] = None,
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -232,7 +233,7 @@ def on_message(rule: Optional[Union[Rule, T_RuleChecker]] = None,
def on_notice(rule: Optional[Union[Rule, T_RuleChecker]] = None, def on_notice(rule: Optional[Union[Rule, T_RuleChecker]] = None,
*, *,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = False, block: bool = False,
@ -246,7 +247,7 @@ def on_notice(rule: Optional[Union[Rule, T_RuleChecker]] = None,
:参数: :参数:
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -272,7 +273,7 @@ def on_notice(rule: Optional[Union[Rule, T_RuleChecker]] = None,
def on_request(rule: Optional[Union[Rule, T_RuleChecker]] = None, def on_request(rule: Optional[Union[Rule, T_RuleChecker]] = None,
*, *,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = False, block: bool = False,
@ -286,7 +287,7 @@ def on_request(rule: Optional[Union[Rule, T_RuleChecker]] = None,
:参数: :参数:
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -323,7 +324,7 @@ def on_startswith(msg: str,
* ``msg: str``: 指定消息开头内容 * ``msg: str``: 指定消息开头内容
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -350,7 +351,7 @@ def on_endswith(msg: str,
* ``msg: str``: 指定消息结尾内容 * ``msg: str``: 指定消息结尾内容
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -377,7 +378,7 @@ def on_keyword(keywords: Set[str],
* ``keywords: Set[str]``: 关键词列表 * ``keywords: Set[str]``: 关键词列表
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -408,7 +409,7 @@ def on_command(cmd: Union[str, Tuple[str, ...]],
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名 * ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -457,7 +458,7 @@ def on_shell_command(cmd: Union[str, Tuple[str, ...]],
* ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名 * ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名
* ``parser: Optional[ArgumentParser]``: ``nonebot.rule.ArgumentParser`` 对象 * ``parser: Optional[ArgumentParser]``: ``nonebot.rule.ArgumentParser`` 对象
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -504,7 +505,7 @@ def on_regex(pattern: str,
* ``flags: Union[int, re.RegexFlag]``: 正则匹配标志 * ``flags: Union[int, re.RegexFlag]``: 正则匹配标志
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -619,7 +620,7 @@ class MatcherGroup:
* ``type: str``: 事件响应器类型 * ``type: str``: 事件响应器类型
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -645,7 +646,7 @@ class MatcherGroup:
:参数: :参数:
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -673,7 +674,7 @@ class MatcherGroup:
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -700,7 +701,7 @@ class MatcherGroup:
:参数: :参数:
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -727,7 +728,7 @@ class MatcherGroup:
:参数: :参数:
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -756,7 +757,7 @@ class MatcherGroup:
* ``msg: str``: 指定消息开头内容 * ``msg: str``: 指定消息开头内容
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -785,7 +786,7 @@ class MatcherGroup:
* ``msg: str``: 指定消息结尾内容 * ``msg: str``: 指定消息结尾内容
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -814,7 +815,7 @@ class MatcherGroup:
* ``keywords: Set[str]``: 关键词列表 * ``keywords: Set[str]``: 关键词列表
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -849,7 +850,7 @@ class MatcherGroup:
* ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名 * ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -889,7 +890,7 @@ class MatcherGroup:
* ``parser: Optional[ArgumentParser]``: ``nonebot.rule.ArgumentParser`` 对象 * ``parser: Optional[ArgumentParser]``: ``nonebot.rule.ArgumentParser`` 对象
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -927,7 +928,7 @@ class MatcherGroup:
* ``flags: Union[int, re.RegexFlag]``: 正则匹配标志 * ``flags: Union[int, re.RegexFlag]``: 正则匹配标志
* ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
* ``permission: Optional[Permission]``: 事件响应权限 * ``permission: Optional[Permission]``: 事件响应权限
* ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``handlers: Optional[List[Union[T_Handler, Handler]]]``: 事件处理函数列表
* ``temp: bool``: 是否为临时事件响应器仅执行一次 * ``temp: bool``: 是否为临时事件响应器仅执行一次
* ``priority: int``: 事件响应器优先级 * ``priority: int``: 事件响应器优先级
* ``block: bool``: 是否阻止事件向更低优先级传递 * ``block: bool``: 是否阻止事件向更低优先级传递
@ -959,8 +960,8 @@ def _load_plugin(manager: PluginManager, plugin_name: str) -> Optional[Plugin]:
try: try:
module = manager.load_plugin(plugin_name) module = manager.load_plugin(plugin_name)
for m in _tmp_matchers.get(): # for m in _tmp_matchers.get():
m.module = plugin_name # m.module = plugin_name
plugin = Plugin(plugin_name, module, _tmp_matchers.get(), _export.get()) plugin = Plugin(plugin_name, module, _tmp_matchers.get(), _export.get())
plugins[plugin_name] = plugin plugins[plugin_name] = plugin
logger.opt( logger.opt(

View File

@ -4,6 +4,7 @@ from contextvars import ContextVar
from typing import Any, Set, List, Dict, Type, Tuple, Union, Optional from typing import Any, Set, List, Dict, Type, Tuple, Union, Optional
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
from nonebot.handler import Handler
from nonebot.permission import Permission from nonebot.permission import Permission
from nonebot.rule import Rule, ArgumentParser from nonebot.rule import Rule, ArgumentParser
from nonebot.typing import T_State, T_StateFactory, T_Handler, T_RuleChecker from nonebot.typing import T_State, T_StateFactory, T_Handler, T_RuleChecker
@ -37,7 +38,7 @@ def on(type: str = ...,
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
*, *,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -49,7 +50,7 @@ def on(type: str = ...,
def on_metaevent( def on_metaevent(
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
*, *,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -61,7 +62,7 @@ def on_metaevent(
def on_message(rule: Optional[Union[Rule, T_RuleChecker]] = ..., def on_message(rule: Optional[Union[Rule, T_RuleChecker]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
*, *,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -72,7 +73,7 @@ def on_message(rule: Optional[Union[Rule, T_RuleChecker]] = ...,
def on_notice(rule: Optional[Union[Rule, T_RuleChecker]] = ..., def on_notice(rule: Optional[Union[Rule, T_RuleChecker]] = ...,
*, *,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -83,7 +84,7 @@ def on_notice(rule: Optional[Union[Rule, T_RuleChecker]] = ...,
def on_request(rule: Optional[Union[Rule, T_RuleChecker]] = ..., def on_request(rule: Optional[Union[Rule, T_RuleChecker]] = ...,
*, *,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -97,7 +98,7 @@ def on_startswith(
rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ..., rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ...,
*, *,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -110,7 +111,7 @@ def on_endswith(msg: str,
rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ..., rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ...,
*, *,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -123,7 +124,7 @@ def on_keyword(keywords: Set[str],
rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ..., rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ...,
*, *,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -137,7 +138,7 @@ def on_command(cmd: Union[str, Tuple[str, ...]],
aliases: Optional[Set[Union[str, Tuple[str, ...]]]] = ..., aliases: Optional[Set[Union[str, Tuple[str, ...]]]] = ...,
*, *,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -159,7 +160,7 @@ def on_regex(pattern: str,
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
*, *,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -216,7 +217,7 @@ class CommandGroup:
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
*, *,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -230,7 +231,7 @@ class CommandGroup:
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
aliases: Optional[Set[Union[str, Tuple[str, ...]]]] = ..., aliases: Optional[Set[Union[str, Tuple[str, ...]]]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -246,7 +247,7 @@ class CommandGroup:
aliases: Optional[Set[Union[str, Tuple[str, ...]]]] = ..., aliases: Optional[Set[Union[str, Tuple[str, ...]]]] = ...,
parser: Optional[ArgumentParser] = ..., parser: Optional[ArgumentParser] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -262,7 +263,7 @@ class MatcherGroup:
type: str = ..., type: str = ...,
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -274,7 +275,7 @@ class MatcherGroup:
type: str = ..., type: str = ...,
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -286,7 +287,7 @@ class MatcherGroup:
self, self,
*, *,
rule: Optional[Union[Rule, T_RuleChecker]] = None, rule: Optional[Union[Rule, T_RuleChecker]] = None,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = False, block: bool = False,
@ -299,7 +300,7 @@ class MatcherGroup:
*, *,
rule: Optional[Union[Rule, T_RuleChecker]] = None, rule: Optional[Union[Rule, T_RuleChecker]] = None,
permission: Optional[Permission] = None, permission: Optional[Permission] = None,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = True, block: bool = True,
@ -311,7 +312,7 @@ class MatcherGroup:
self, self,
*, *,
rule: Optional[Union[Rule, T_RuleChecker]] = None, rule: Optional[Union[Rule, T_RuleChecker]] = None,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = False, block: bool = False,
@ -323,7 +324,7 @@ class MatcherGroup:
self, self,
*, *,
rule: Optional[Union[Rule, T_RuleChecker]] = None, rule: Optional[Union[Rule, T_RuleChecker]] = None,
handlers: Optional[List[T_Handler]] = None, handlers: Optional[List[Union[T_Handler, Handler]]] = None,
temp: bool = False, temp: bool = False,
priority: int = 1, priority: int = 1,
block: bool = False, block: bool = False,
@ -337,7 +338,7 @@ class MatcherGroup:
*, *,
rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ..., rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -351,7 +352,7 @@ class MatcherGroup:
*, *,
rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ..., rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -365,7 +366,7 @@ class MatcherGroup:
*, *,
rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ..., rule: Optional[Optional[Union[Rule, T_RuleChecker]]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -380,7 +381,7 @@ class MatcherGroup:
*, *,
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -396,7 +397,7 @@ class MatcherGroup:
*, *,
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,
@ -411,7 +412,7 @@ class MatcherGroup:
*, *,
rule: Optional[Union[Rule, T_RuleChecker]] = ..., rule: Optional[Union[Rule, T_RuleChecker]] = ...,
permission: Optional[Permission] = ..., permission: Optional[Permission] = ...,
handlers: Optional[List[T_Handler]] = ..., handlers: Optional[List[Union[T_Handler, Handler]]] = ...,
temp: bool = ..., temp: bool = ...,
priority: int = ..., priority: int = ...,
block: bool = ..., block: bool = ...,

View File

@ -174,7 +174,8 @@ class PluginFinder(MetaPathFinder):
list(manager.search_path), list(manager.search_path),
target) target)
if spec: if spec:
spec.loader = PluginLoader(newname, spec.origin) spec.loader = PluginLoader(manager, newname,
spec.origin)
return spec return spec
index -= 1 index -= 1
return None return None
@ -182,7 +183,8 @@ class PluginFinder(MetaPathFinder):
class PluginLoader(SourceFileLoader): class PluginLoader(SourceFileLoader):
def __init__(self, fullname: str, path) -> None: def __init__(self, manager: PluginManager, fullname: str, path) -> None:
self.manager = manager
self.loaded = False self.loaded = False
super().__init__(fullname, path) super().__init__(fullname, path)
@ -190,12 +192,15 @@ class PluginLoader(SourceFileLoader):
if self.name in sys.modules: if self.name in sys.modules:
self.loaded = True self.loaded = True
return sys.modules[self.name] return sys.modules[self.name]
# return None to use default module creation
return super().create_module(spec) return super().create_module(spec)
def exec_module(self, module: ModuleType) -> None: def exec_module(self, module: ModuleType) -> None:
if self.loaded: if self.loaded:
return return
return super().exec_module(module) setattr(module, "__manager__", self.manager)
super().exec_module(module)
return
sys.meta_path.insert(0, PluginFinder()) sys.meta_path.insert(0, PluginFinder())