From e0d44f3fa7765eeff27ee83f2453de66775007d5 Mon Sep 17 00:00:00 2001 From: yanyongyu Date: Mon, 7 Dec 2020 00:52:26 +0800 Subject: [PATCH] :memo: update api docs --- docs/api/adapters/README.md | 8 +- docs/api/adapters/cqhttp.md | 8 +- docs/api/adapters/ding.md | 8 +- docs/api/drivers/README.md | 4 +- docs/api/drivers/fastapi.md | 4 +- docs/api/matcher.md | 6 +- docs/api/message.md | 8 +- docs/api/plugin.md | 40 ++++----- docs/api/rule.md | 6 +- docs/api/typing.md | 164 +++--------------------------------- nonebot/matcher.py | 4 +- nonebot/message.py | 2 +- 12 files changed, 58 insertions(+), 204 deletions(-) diff --git a/docs/api/adapters/README.md b/docs/api/adapters/README.md index 1a1dd85b..61436c5c 100644 --- a/docs/api/adapters/README.md +++ b/docs/api/adapters/README.md @@ -10,7 +10,7 @@ sidebarDepth: 0 各协议请继承以下基类,并使用 `driver.register_adapter` 注册适配器 -## _class_ `BaseBot` +## _class_ `Bot` 基类:`abc.ABC` @@ -174,7 +174,7 @@ await bot.send_msg(message="hello world") -## _class_ `BaseEvent` +## _class_ `Event` 基类:`abc.ABC`, `typing.Generic` @@ -271,7 +271,7 @@ Event 基类。提供上报信息的关键信息,其余信息可从原始上 消息发送者信息 -## _class_ `BaseMessageSegment` +## _class_ `MessageSegment` 基类:`abc.ABC` @@ -296,7 +296,7 @@ Event 基类。提供上报信息的关键信息,其余信息可从原始上 * 说明: 消息段数据 -## _class_ `BaseMessage` +## _class_ `Message` 基类:`list`, `abc.ABC` diff --git a/docs/api/adapters/cqhttp.md b/docs/api/adapters/cqhttp.md index b80d6ad1..ba3c57aa 100644 --- a/docs/api/adapters/cqhttp.md +++ b/docs/api/adapters/cqhttp.md @@ -176,7 +176,7 @@ sidebarDepth: 0 ## _class_ `Bot` -基类:[`nonebot.adapters.BaseBot`](README.md#nonebot.adapters.BaseBot) +基类:[`nonebot.adapters.Bot`](README.md#nonebot.adapters.Bot) CQHTTP 协议 Bot 适配。继承属性参考 [BaseBot](./#class-basebot) 。 @@ -288,7 +288,7 @@ CQHTTP 协议 Bot 适配。继承属性参考 [BaseBot](./#class-basebot) 。 ## _class_ `Event` -基类:[`nonebot.adapters.BaseEvent`](README.md#nonebot.adapters.BaseEvent) +基类:[`nonebot.adapters.Event`](README.md#nonebot.adapters.Event) CQHTTP 协议 Event 适配。继承属性参考 [BaseEvent](./#class-baseevent) 。 @@ -430,13 +430,13 @@ CQHTTP 协议 Event 适配。继承属性参考 [BaseEvent](./#class-baseevent) ## _class_ `MessageSegment` -基类:[`nonebot.adapters.BaseMessageSegment`](README.md#nonebot.adapters.BaseMessageSegment) +基类:[`nonebot.adapters.MessageSegment`](README.md#nonebot.adapters.MessageSegment) CQHTTP 协议 MessageSegment 适配。具体方法参考协议消息段类型或源码。 ## _class_ `Message` -基类:[`nonebot.adapters.BaseMessage`](README.md#nonebot.adapters.BaseMessage) +基类:[`nonebot.adapters.Message`](README.md#nonebot.adapters.Message) CQHTTP 协议 Message 适配。 diff --git a/docs/api/adapters/ding.md b/docs/api/adapters/ding.md index 0bbdd6d8..8089d938 100644 --- a/docs/api/adapters/ding.md +++ b/docs/api/adapters/ding.md @@ -74,7 +74,7 @@ sidebarDepth: 0 ## _class_ `Bot` -基类:[`nonebot.adapters.BaseBot`](README.md#nonebot.adapters.BaseBot) +基类:[`nonebot.adapters.Bot`](README.md#nonebot.adapters.Bot) 钉钉 协议 Bot 适配。继承属性参考 [BaseBot](./#class-basebot) 。 @@ -193,7 +193,7 @@ sidebarDepth: 0 ## _class_ `Event` -基类:[`nonebot.adapters.BaseEvent`](README.md#nonebot.adapters.BaseEvent) +基类:[`nonebot.adapters.Event`](README.md#nonebot.adapters.Event) 钉钉 协议 Event 适配。继承属性参考 [BaseEvent](./#class-baseevent) 。 @@ -340,7 +340,7 @@ sidebarDepth: 0 ## _class_ `MessageSegment` -基类:[`nonebot.adapters.BaseMessageSegment`](README.md#nonebot.adapters.BaseMessageSegment) +基类:[`nonebot.adapters.MessageSegment`](README.md#nonebot.adapters.MessageSegment) 钉钉 协议 MessageSegment 适配。具体方法参考协议消息段类型或源码。 @@ -375,6 +375,6 @@ sidebarDepth: 0 ## _class_ `Message` -基类:[`nonebot.adapters.BaseMessage`](README.md#nonebot.adapters.BaseMessage) +基类:[`nonebot.adapters.Message`](README.md#nonebot.adapters.Message) 钉钉 协议 Message 适配。 diff --git a/docs/api/drivers/README.md b/docs/api/drivers/README.md index 624220ba..e8045d62 100644 --- a/docs/api/drivers/README.md +++ b/docs/api/drivers/README.md @@ -10,7 +10,7 @@ sidebarDepth: 0 各驱动请继承以下基类 -## _class_ `BaseDriver` +## _class_ `Driver` 基类:`abc.ABC` @@ -189,7 +189,7 @@ Driver 基类。将后端框架封装,以满足适配器使用。 用于处理 WebSocket 类型请求的函数 -## _class_ `BaseWebSocket` +## _class_ `WebSocket` 基类:`object` diff --git a/docs/api/drivers/fastapi.md b/docs/api/drivers/fastapi.md index b4f5c6fb..653e0923 100644 --- a/docs/api/drivers/fastapi.md +++ b/docs/api/drivers/fastapi.md @@ -12,7 +12,7 @@ sidebarDepth: 0 ## _class_ `Driver` -基类:[`nonebot.drivers.BaseDriver`](README.md#nonebot.drivers.BaseDriver) +基类:[`nonebot.drivers.Driver`](README.md#nonebot.drivers.Driver) FastAPI 驱动框架 @@ -80,7 +80,7 @@ fastapi 使用的 logger ## _class_ `WebSocket` -基类:[`nonebot.drivers.BaseWebSocket`](README.md#nonebot.drivers.BaseWebSocket) +基类:[`nonebot.drivers.WebSocket`](README.md#nonebot.drivers.WebSocket) ### _property_ `closed` diff --git a/docs/api/matcher.md b/docs/api/matcher.md index 9e72b658..6148215d 100644 --- a/docs/api/matcher.md +++ b/docs/api/matcher.md @@ -157,7 +157,7 @@ sidebarDepth: 0 * **类型** - `dict` + `State` @@ -238,7 +238,7 @@ sidebarDepth: 0 * `module: Optional[str]`: 事件响应器所在模块名称 - * `default_state: Optional[dict]`: 默认状态 `state` + * `default_state: Optional[State]`: 默认状态 `state` * `expire_time: Optional[datetime]`: 事件响应器最终有效时间点,过时即被删除 @@ -296,7 +296,7 @@ sidebarDepth: 0 * `event: Event`: 上报事件 - * `state: dict`: 当前状态 + * `state: State`: 当前状态 diff --git a/docs/api/message.md b/docs/api/message.md index c9d7c158..1f56cc25 100644 --- a/docs/api/message.md +++ b/docs/api/message.md @@ -30,7 +30,7 @@ NoneBot 内部处理并按优先级分发事件给所有事件响应器,提供 * `event: Event`: Event 对象 - * `state: dict`: 当前 State + * `state: State`: 当前 State @@ -54,7 +54,7 @@ NoneBot 内部处理并按优先级分发事件给所有事件响应器,提供 * `event: Event`: Event 对象 - * `state: dict`: 当前事件运行前 State + * `state: State`: 当前事件运行前 State @@ -81,7 +81,7 @@ NoneBot 内部处理并按优先级分发事件给所有事件响应器,提供 * `event: Event`: Event 对象 - * `state: dict`: 当前 State + * `state: State`: 当前 State @@ -111,7 +111,7 @@ NoneBot 内部处理并按优先级分发事件给所有事件响应器,提供 * `event: Event`: Event 对象 - * `state: dict`: 当前 State + * `state: State`: 当前 State diff --git a/docs/api/plugin.md b/docs/api/plugin.md index 91d7320e..43642f7e 100644 --- a/docs/api/plugin.md +++ b/docs/api/plugin.md @@ -133,7 +133,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -171,7 +171,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -212,7 +212,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -250,7 +250,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -288,7 +288,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -332,7 +332,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -376,7 +376,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -420,7 +420,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -469,7 +469,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -518,7 +518,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -666,7 +666,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -704,7 +704,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -745,7 +745,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -783,7 +783,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -821,7 +821,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -865,7 +865,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -909,7 +909,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -953,7 +953,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -1002,7 +1002,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state @@ -1051,7 +1051,7 @@ def something_else(): * `block: bool`: 是否阻止事件向更低优先级传递 - * `state: Optional[dict]`: 默认的 state + * `state: Optional[State]`: 默认的 state diff --git a/docs/api/rule.md b/docs/api/rule.md index dade2a5b..a9c173f6 100644 --- a/docs/api/rule.md +++ b/docs/api/rule.md @@ -42,7 +42,7 @@ Rule(async_function, run_sync(sync_function)) * **参数** - * `*checkers: Callable[[Bot, Event, dict], Awaitable[bool]]`: **异步** RuleChecker + * `*checkers: Callable[[Bot, Event, State], Awaitable[bool]]`: **异步** RuleChecker @@ -58,7 +58,7 @@ Rule(async_function, run_sync(sync_function)) * **类型** - * `Set[Callable[[Bot, Event, dict], Awaitable[bool]]]` + * `Set[Callable[[Bot, Event, State], Awaitable[bool]]]` @@ -80,7 +80,7 @@ Rule(async_function, run_sync(sync_function)) * `event: Event`: Event 对象 - * `state: dict`: 当前 State + * `state: State`: 当前 State diff --git a/docs/api/typing.md b/docs/api/typing.md index 8f8a2223..4bf5fa67 100644 --- a/docs/api/typing.md +++ b/docs/api/typing.md @@ -14,98 +14,18 @@ sidebarDepth: 0 以下类型均可从 nonebot.typing 模块导入。 -## `Driver` +## `State` * **类型** - `BaseDriver` + `Dict[Any, Any]` * **说明** - 所有 Driver 的基类。 - - - - -## `WebSocket` - - -* **类型** - - `BaseWebSocket` - - - -* **说明** - - 所有 WebSocket 的基类。 - - - - -## `Bot` - - -* **类型** - - `BaseBot` - - - -* **说明** - - 所有 Bot 的基类。 - - - - -## `Event` - - -* **类型** - - `BaseEvent` - - - -* **说明** - - 所有 Event 的基类。 - - - - -## `Message` - - -* **类型** - - `BaseMessage` - - - -* **说明** - - 所有 Message 的基类。 - - - - -## `MessageSegment` - - -* **类型** - - `BaseMessageSegment` - - - -* **说明** - - 所有 MessageSegment 的基类。 + 事件处理状态 State 类型 @@ -115,7 +35,7 @@ sidebarDepth: 0 * **类型** - `Callable[[Bot, Event, dict], Union[Awaitable[None], Awaitable[NoReturn]]]` + `Callable[[Bot, Event, State], Awaitable[None]]` @@ -131,7 +51,7 @@ sidebarDepth: 0 * **类型** - `Callable[[Bot, Event, dict], Union[Awaitable[None], Awaitable[NoReturn]]]` + `Callable[[Bot, Event, State], Awaitable[None]]` @@ -147,7 +67,7 @@ sidebarDepth: 0 * **类型** - `Callable[[Matcher, Bot, Event, dict], Union[Awaitable[None], Awaitable[NoReturn]]]` + `Callable[[Matcher, Bot, Event, State], Awaitable[None]]` @@ -163,7 +83,7 @@ sidebarDepth: 0 * **类型** - `Callable[[Matcher, Optional[Exception], Bot, Event, dict], Union[Awaitable[None], Awaitable[NoReturn]]]` + `Callable[[Matcher, Optional[Exception], Bot, Event, State], Awaitable[None]]` @@ -174,60 +94,12 @@ sidebarDepth: 0 -## `Matcher` - - -* **类型** - - `Matcher` - - - -* **说明** - - Matcher 即响应事件的处理类。通过 Rule 判断是否响应事件,运行 Handler。 - - - - -## `MatcherGroup` - - -* **类型** - - `MatcherGroup` - - - -* **说明** - - MatcherGroup 为 Matcher 的集合。可以共享 Handler。 - - - - -## `Rule` - - -* **类型** - - `Rule` - - - -* **说明** - - Rule 即判断是否响应事件的处理类。内部存储 RuleChecker ,返回全为 True 则响应事件。 - - - - ## `RuleChecker` * **类型** - `Callable[[Bot, Event, dict], Union[bool, Awaitable[bool]]]` + `Callable[[Bot, Event, State], Union[bool, Awaitable[bool]]]` @@ -238,22 +110,6 @@ sidebarDepth: 0 -## `Permission` - - -* **类型** - - `Permission` - - - -* **说明** - - Permission 即判断是否响应消息的处理类。内部存储 PermissionChecker ,返回只要有一个 True 则响应消息。 - - - - ## `PermissionChecker` @@ -275,7 +131,7 @@ sidebarDepth: 0 * **类型** - `Callable[[Bot, Event, dict], Union[Awaitable[None], Awaitable[NoReturn]]]` + `Callable[[Bot, Event, State], Union[Awaitable[None], Awaitable[NoReturn]]]` @@ -291,7 +147,7 @@ sidebarDepth: 0 * **类型** - `Callable[[Bot, Event, dict], Union[Awaitable[None], Awaitable[NoReturn]]]` + `Callable[[Bot, Event, State], Awaitable[None]]` diff --git a/nonebot/matcher.py b/nonebot/matcher.py index 4e76701b..93b72683 100644 --- a/nonebot/matcher.py +++ b/nonebot/matcher.py @@ -5,7 +5,6 @@ 该模块实现事件响应器的创建与运行,并提供一些快捷方法来帮助用户更好的与机器人进行 对话 。 """ -import typing import inspect from functools import wraps from datetime import datetime @@ -416,10 +415,9 @@ class Matcher(metaclass=MatcherMeta): for _ in range(len(self.handlers)): handler = self.handlers.pop(0) - # annotation = typing.get_type_hints(handler) - # BotType = annotation.get("bot") signature = inspect.signature(handler) BotType = signature.parameters.get("bot").annotation + print(BotType) if BotType is not inspect.Parameter.empty and inspect.isclass( BotType) and not isinstance(bot, BotType): continue diff --git a/nonebot/message.py b/nonebot/message.py index 3b0174b8..eb209a9c 100644 --- a/nonebot/message.py +++ b/nonebot/message.py @@ -133,7 +133,7 @@ async def _check_matcher(priority: int, bot: "Bot", event: "Event", expired = await asyncio.gather(*checking_expire_tasks) for expired_matcher in filter(lambda x: x and x in results, expired): try: - matchers[priority].remove(expired_matcher) + matchers[priority].remove(expired_matcher) # type: ignore except Exception: pass return filter(lambda x: x, results)