💡 add log, exception, consts docstring

This commit is contained in:
yanyongyu
2022-01-18 16:12:12 +08:00
parent 27b1ded9a1
commit 608cf859c8
3 changed files with 110 additions and 72 deletions

View File

@ -4,6 +4,28 @@
下列文档中的异常是所有 NoneBot 运行时可能会抛出的。
这些异常并非所有需要用户处理,在 NoneBot 内部运行时被捕获,并进行对应操作。
```bash
NoneBotException
├── ParserExit
├── ProcessException
| ├── IgnoredException
| ├── MockApiException
| └── StopPropagation
├── MatcherException
| ├── SkippedException
| | └── TypeMisMatch
| ├── PausedException
| ├── RejectedException
| └── FinishedException
├── AdapterException
| ├── NoLogException
| ├── ApiNotAvailable
| ├── NetworkError
| └── ActionFailed
└── DriverException
└── WebSocketClosed
```
FrontMatter:
sidebar_position: 10
description: nonebot.exception 模块
@ -15,16 +37,12 @@ from pydantic.fields import ModelField
class NoneBotException(Exception):
"""
所有 NoneBot 发生的异常基类。
"""
"""所有 NoneBot 发生的异常基类。"""
# Rule Exception
class ParserExit(NoneBotException):
"""
`shell command` 处理消息失败时返回的异常
"""
"""{ref}`nonebot.rule.shell_command` 处理消息失败时返回的异常"""
def __init__(self, status: int = 0, message: Optional[str] = None):
self.status = status
@ -39,21 +57,18 @@ class ParserExit(NoneBotException):
# Processor Exception
class ProcessException(NoneBotException):
"""
事件处理过程中发生的异常基类。
"""
"""事件处理过程中发生的异常基类。"""
class IgnoredException(ProcessException):
"""
指示 NoneBot 应该忽略该事件。可由 PreProcessor 抛出。
"""指示 NoneBot 应该忽略该事件。可由 PreProcessor 抛出。
参数:
reason: 忽略事件的原因
"""
def __init__(self, reason):
self.reason = reason
def __init__(self, reason: Any):
self.reason: Any = reason
def __repr__(self):
return f"<IgnoredException, reason={self.reason}>"
@ -63,8 +78,7 @@ class IgnoredException(ProcessException):
class MockApiException(ProcessException):
"""
指示 NoneBot 阻止本次 API 调用或修改本次调用返回值,并返回自定义内容。可由 api hook 抛出。
"""指示 NoneBot 阻止本次 API 调用或修改本次调用返回值,并返回自定义内容。可由 api hook 抛出。
参数:
result: 返回的内容
@ -81,34 +95,46 @@ class MockApiException(ProcessException):
class StopPropagation(ProcessException):
"""
指示 NoneBot 终止事件向下层传播。
"""指示 NoneBot 终止事件向下层传播。
{ref}`nonebot.matcher.Matcher.block` 为 `True`
或使用 {ref}`nonebot.matcher.Matcher.stop_propagation` 方法时抛出。
用法:
`Matcher.block == True` 时抛出。
```python
matcher = on_notice(block=True)
# 或者
@matcher.handle()
async def handler(matcher: Matcher):
matcher.stop_propagation()
```
"""
# Matcher Exceptions
class MatcherException(NoneBotException):
"""
所有 Matcher 发生的异常基类。
"""
"""所有 Matcher 发生的异常基类。"""
class SkippedException(MatcherException):
"""
指示 NoneBot 立即结束当前 `Handler` 的处理,继续处理下一个 `Handler`。
"""指示 NoneBot 立即结束当前 `Handler` 的处理,继续处理下一个 `Handler`。
可以在 `Handler` 中通过 {ref}`nonebot.matcher.Matcher.skip` 抛出。
用法:
可以在 `Handler` 中通过 `Matcher.skip()` 抛出。
```python
def always_skip():
Matcher.skip()
@matcher.handle()
async def handler(dependency = Depends(always_skip)):
...
```
"""
class TypeMisMatch(SkippedException):
"""
当前 `Handler` 的参数类型不匹配。
"""
"""当前 `Handler` 的参数类型不匹配。"""
def __init__(self, param: ModelField, value: Any):
self.param: ModelField = param
@ -122,91 +148,85 @@ class TypeMisMatch(SkippedException):
class PausedException(MatcherException):
"""
指示 NoneBot 结束当前 `Handler` 并等待下一条消息后继续下一个 `Handler`。
可用于用户输入新信息
"""指示 NoneBot 结束当前 `Handler` 并等待下一条消息后继续下一个 `Handler`。可用于用户输入新信息。
可以在 `Handler` 中通过 {ref}`nonebot.matcher.Matcher.pause` 抛出
用法:
可以在 `Handler` 中通过 `Matcher.pause()` 抛出。
```python
@matcher.handle()
async def handler():
await matcher.pause("some message")
```
"""
class RejectedException(MatcherException):
"""
指示 NoneBot 结束当前 `Handler` 并等待下一条消息后重新运行当前 `Handler`。
可用于用户重新输入
"""指示 NoneBot 结束当前 `Handler` 并等待下一条消息后重新运行当前 `Handler`。可用于用户重新输入。
可以在 `Handler` 中通过 {ref}`nonebot.matcher.Matcher.reject` 抛出
用法:
可以在 `Handler` 中通过 `Matcher.reject()` 抛出。
```python
@matcher.handle()
async def handler():
await matcher.reject("some message")
```
"""
class FinishedException(MatcherException):
"""
指示 NoneBot 结束当前 `Handler` 且后续 `Handler` 不再被运行。
可用于结束用户会话
"""指示 NoneBot 结束当前 `Handler` 且后续 `Handler` 不再被运行。可用于结束用户会话。
可以在 `Handler` 中通过 {ref}`nonebot.matcher.Matcher.finish` 抛出
用法:
可以在 `Handler` 中通过 `Matcher.finish()` 抛出。
```python
@matcher.handle()
async def handler():
await matcher.finish("some message")
```
"""
# Adapter Exceptions
class AdapterException(NoneBotException):
"""
代表 `Adapter` 抛出的异常,所有的 `Adapter` 都要在内部继承自这个 `Exception`
"""代表 `Adapter` 抛出的异常,所有的 `Adapter` 都要在内部继承自这个 `Exception`
参数:
adapter_name: 标识 adapter
"""
def __init__(self, adapter_name: str) -> None:
self.adapter_name = adapter_name
self.adapter_name: str = adapter_name
class NoLogException(AdapterException):
"""
指示 NoneBot 对当前 `Event` 进行处理但不显示 Log 信息,可在 `get_log_string` 时抛出
"""
"""指示 NoneBot 对当前 `Event` 进行处理但不显示 Log 信息。
pass
可在 {ref}`nonebot.adapters._event.Event.get_log_string` 时抛出
"""
class ApiNotAvailable(AdapterException):
"""
在 API 连接不可用时抛出。
"""
pass
"""在 API 连接不可用时抛出。"""
class NetworkError(AdapterException):
"""
在网络出现问题时抛出,如: API 请求地址不正确, API 请求无返回或返回状态非正常等。
"""
pass
"""在网络出现问题时抛出,如: API 请求地址不正确, API 请求无返回或返回状态非正常等。"""
class ActionFailed(AdapterException):
"""
API 请求成功返回数据,但 API 操作失败。
"""
pass
"""API 请求成功返回数据,但 API 操作失败。"""
# Driver Exceptions
class DriverException(NoneBotException):
"""
`Driver` 抛出的异常基类
"""
"""`Driver` 抛出的异常基类"""
class WebSocketClosed(DriverException):
"""
WebSocket 连接已关闭
"""
"""WebSocket 连接已关闭"""
def __init__(self, code: int, reason: Optional[str] = None):
self.code = code