📝 Docs: 升级新版 NonePress 主题 (#2375)

This commit is contained in:
Ju4tCode
2023-09-27 16:00:26 +08:00
committed by GitHub
parent 7754f6da1d
commit 842c6ff4c6
234 changed files with 8759 additions and 5887 deletions

View File

@ -4,8 +4,8 @@ description: 注册适配器与指定平台交互
options:
menu:
weight: 20
category: advanced
- category: advanced
weight: 20
---
# 使用适配器
@ -158,4 +158,4 @@ is_tome: bool = event.is_tome()
## 更多
官方支持的适配器和社区贡献的适配器均可在[商店](/store)中查看。如果你想要开发自己的适配器,可以参考[开发文档](../developer/adapter-writing.md)。欢迎通过商店发布你的适配器。
官方支持的适配器和社区贡献的适配器均可在[商店](/store/adapters)中查看。如果你想要开发自己的适配器,可以参考[开发文档](../developer/adapter-writing.md)。欢迎通过商店发布你的适配器。

View File

@ -4,8 +4,8 @@ description: 通过依赖注入获取上下文信息
options:
menu:
weight: 70
category: advanced
- category: advanced
weight: 70
---
# 依赖注入
@ -557,7 +557,7 @@ async def _(x: httpx.AsyncClient = Depends(get_client)):
</TabItem>
</Tabs>
:::warning 注意
:::caution 注意
生成器作为依赖时,其中只能进行一次 `yield`,否则将会触发异常。如果对此有疑问并想探究原因,可以参考 [contextmanager](https://docs.python.org/zh-cn/3/library/contextlib.html#contextlib.contextmanager) 和 [asynccontextmanager](https://docs.python.org/zh-cn/3/library/contextlib.html#contextlib.asynccontextmanager) 文档。事实上NoneBot 内部就使用了这两个装饰器。
:::

View File

@ -4,8 +4,8 @@ description: 选择合适的驱动器运行机器人
options:
menu:
weight: 10
category: advanced
- category: advanced
weight: 10
---
# 选择驱动器
@ -118,7 +118,7 @@ DRIVER=~fastapi
##### `fastapi_reload`
:::warning 警告
:::caution 警告
不推荐开启该配置项,在 Windows 平台上开启该功能有可能会造成预料之外的影响!替代方案:使用 `nb-cli` 命令行工具以及参数 `--reload` 启动 NoneBot。
```bash
@ -200,7 +200,7 @@ DRIVER=~quart
##### `quart_reload`
:::warning 警告
:::caution 警告
不推荐开启该配置项,在 Windows 平台上开启该功能有可能会造成预料之外的影响!替代方案:使用 `nb-cli` 命令行工具以及参数 `--reload` 启动 NoneBot。
```bash
@ -252,7 +252,7 @@ nonebot.run(app="bot:app")
**类型:**HTTP 客户端驱动器
:::warning 注意
:::caution 注意
本驱动器仅支持 HTTP 请求,不支持 WebSocket 连接请求。
:::
@ -266,7 +266,7 @@ DRIVER=~httpx
**类型:**WebSocket 客户端驱动器
:::warning 注意
:::caution 注意
本驱动器仅支持 WebSocket 连接请求,不支持 HTTP 请求。
:::

View File

@ -4,8 +4,8 @@ description: 自定义事件响应器存储
options:
menu:
weight: 110
category: advanced
- category: advanced
weight: 110
---
# 事件响应器存储

View File

@ -4,8 +4,8 @@ description: 事件响应器组成与内置响应规则
options:
menu:
weight: 60
category: advanced
- category: advanced
weight: 60
---
# 事件响应器进阶

View File

@ -4,8 +4,8 @@ description: 填写与获取插件相关的信息
options:
menu:
weight: 30
category: advanced
- category: advanced
weight: 30
---
# 插件信息

View File

@ -4,8 +4,8 @@ description: 编写与加载嵌套插件
options:
menu:
weight: 40
category: advanced
- category: advanced
weight: 40
---
# 嵌套插件

View File

@ -4,8 +4,8 @@ description: 使用其他插件提供的功能
options:
menu:
weight: 50
category: advanced
- category: advanced
weight: 50
---
# 跨插件访问

View File

@ -4,8 +4,8 @@ description: 添加服务端路由规则
options:
menu:
weight: 100
category: advanced
- category: advanced
weight: 100
---
# 添加路由

View File

@ -4,8 +4,8 @@ description: 在特定的生命周期中执行代码
options:
menu:
weight: 90
category: advanced
- category: advanced
weight: 90
---
# 钩子函数

View File

@ -4,8 +4,8 @@ description: 控制会话响应对象
options:
menu:
weight: 80
category: advanced
- category: advanced
weight: 80
---
# 会话更新
@ -56,4 +56,4 @@ async def _(matcher: Matcher) -> Permission:
请注意,此处为全大写字母的 `USER` 权限,它可以匹配多个会话 ID。通过这种方式我们可以实现多用户同时参与的会话。
我们已经了解了如何控制会话的更新,相信你已经能够实现更复杂的会话功能了,例如多人小游戏等等。欢迎将你的作品分享到[插件商店](/store)。
我们已经了解了如何控制会话的更新,相信你已经能够实现更复杂的会话功能了,例如多人小游戏等等。欢迎将你的作品分享到[插件商店](/store/plugins)。

View File

@ -1,6 +1,8 @@
---
sidebar_position: 3
description: nonebot.plugin.plugin 模块
slug: /api/plugin/plugin
---
# nonebot.plugin.plugin

View File

@ -290,7 +290,7 @@ description: nonebot.rule 模块
通过 [ShellCommandArgs](params.md#ShellCommandArgs) 获取解析后的参数字典
(例: `{"arg": "arg", "h": True}`)。
:::warning 警告
:::caution 警告
如果参数解析失败,则通过 [ShellCommandArgs](params.md#ShellCommandArgs)
获取的将是 [ParserExit](exception.md#ParserExit) 异常。
:::

View File

@ -4,14 +4,13 @@ description: 使用平台接口,完成更多功能
options:
menu:
weight: 50
category: appendices
- category: appendices
weight: 50
---
# 使用平台接口
import Messenger from "@site/src/components/Messenger";
import MarkdownText from "!!raw-loader!./assets/console-markdown.txt";
在 NoneBot 中,除了使用事件响应器操作发送文本消息外,我们还可以直接通过使用协议适配器提供的方法来使用平台特定的接口,完成发送特殊消息、获取信息等其他平台提供的功能。同时,在部分无法使用事件响应器的情况中,例如[定时任务](../best-practice/scheduler.md),我们也可以使用平台接口来完成需要的功能。
@ -19,7 +18,7 @@ import MarkdownText from "!!raw-loader!./assets/console-markdown.txt";
在之前的章节中,我们介绍了如何向用户发送文本消息以及[如何处理平台消息](../tutorial/message.md),现在我们来向用户发送平台特殊消息。
:::warning 注意
:::caution 注意
在以下的示例中,我们将使用 `Console` 协议适配器来演示如何发送平台消息。在实际使用中,你需要确保你使用的**消息序列类型**与你所要发送的**平台类型**一致。
:::
@ -49,7 +48,11 @@ async def got_location(location: str = ArgPlainText()):
{ position: "right", msg: "/天气" },
{ position: "left", msg: "❓请输入地名" },
{ position: "right", msg: "北京" },
{ position: "left", msg: MarkdownText },
{
position: "left",
monospace: true,
msg: "┏━━━━━━━━━━━━━━━━┓\n┃ 北京 ┃\n┗━━━━━━━━━━━━━━━━┛\n• 今天\n⛅ 多云 20℃~24℃",
},
]}
/>
@ -100,7 +103,7 @@ result = await bot.get_user_info(user_id=12345678)
result = await bot.call_api("get_user_info", user_id=12345678)
```
:::warning 注意
:::caution 注意
实际可以使用的 API 以及参数取决于平台提供的接口以及协议适配器的实现,请参考协议适配器以及平台文档。
:::

View File

@ -1,6 +0,0 @@
┏━━━━━━━━━━━━━━━━┓
┃ 北京 ┃
┗━━━━━━━━━━━━━━━━┛
• 今天
⛅ 多云 20℃~24℃

View File

@ -4,8 +4,8 @@ description: 读取用户配置来控制插件行为
options:
menu:
weight: 10
category: appendices
- category: appendices
weight: 10
---
# 配置
@ -62,7 +62,7 @@ export CUSTOM_CONFIG="config in environment variables"
那最终 NoneBot 所读取的内容为环境变量中的内容,即 `config in environment variables`。
:::warning 注意
:::caution 注意
NoneBot 不会自发读取未被定义的配置项的环境变量,如果需要读取某一环境变量需要在 dotenv 配置文件中进行声明。
:::

View File

@ -4,8 +4,8 @@ description: 记录与控制日志
options:
menu:
weight: 70
category: appendices
- category: appendices
weight: 70
---
# 日志

View File

@ -4,8 +4,8 @@ description: 根据事件类型进行不同的处理
options:
menu:
weight: 80
category: appendices
- category: appendices
weight: 80
---
# 事件类型与重载
@ -28,7 +28,7 @@ async def got_location(event: MessageEvent, location: str = ArgPlainText()):
在上面的代码中,我们获取了 `Console` 协议适配器的消息事件提供的发送时间 `time` 属性。
:::warning 注意
:::caution 注意
如果**基类**就能满足你的需求,那么就**不要修改**事件参数类型注解,这样可以使你的代码更加**通用**,可以在更多平台上运行。如何根据不同平台事件类型进行不同的处理,我们将在[重载](#重载)一节中介绍。
:::
@ -63,7 +63,7 @@ async def handle_onebot(bot: OneBot):
await bot.send_group_message(group_id=123123, message="OneBot")
```
:::warning 注意
:::caution 注意
重载机制对所有的参数类型注解都有效,因此,依赖注入也可以使用这个特性来对不同的返回值进行处理。
但 Bot、Event 和 Matcher 三者的参数类型注解具有最高检查优先级,如果三者任一类型注解不匹配,那么其他依赖注入将不会执行(如:`Depends`)。

View File

@ -4,8 +4,8 @@ description: 控制事件响应器的权限
options:
menu:
weight: 60
category: appendices
- category: appendices
weight: 60
---
# 权限控制

View File

@ -4,8 +4,8 @@ description: 自定义响应规则
options:
menu:
weight: 20
category: appendices
- category: appendices
weight: 20
---
# 响应规则

View File

@ -4,8 +4,8 @@ description: 更灵活的会话控制
options:
menu:
weight: 30
category: appendices
- category: appendices
weight: 30
---
# 会话控制
@ -322,7 +322,7 @@ async def _(matcher: Matcher):
matcher.stop_propagation()
```
:::warning 注意
:::caution 注意
`stop_propagation` 操作是实例方法,需要先通过依赖注入获取事件响应器实例再进行调用。
:::

View File

@ -4,8 +4,8 @@ description: 会话状态信息
options:
menu:
weight: 40
category: appendices
- category: appendices
weight: 40
---
# 会话状态

View File

@ -27,7 +27,7 @@ nb plugin install nonebot-plugin-sentry
### 配置插件
:::warning 注意
:::caution 注意
错误跟踪通常在生产环境中使用,因此开发环境中 `sentry_dsn` 留空即会停用插件。
:::

View File

@ -58,7 +58,7 @@ scheduler.add_job(
)
```
:::warning 注意
:::caution 注意
由于 APScheduler 的定时任务并不是**由事件响应器所触发的事件**,因此其任务函数无法同[事件处理函数](../tutorial/handler.mdx#事件处理函数)一样通过[依赖注入](../tutorial/event-data.mdx#认识依赖注入)获取上下文信息,也无法通过事件响应器对象的方法进行任何操作,因此我们需要使用[调用平台 API](../appendices/api-calling.mdx#调用平台-api)的方式来获取信息或收发消息。
相对于事件处理依赖而言,编写定时任务更像是编写普通的函数,需要我们自行获取信息以及发送信息,请**不要**将事件处理依赖的特殊语法用于定时任务!

View File

@ -576,6 +576,6 @@ class Message(BaseMessage[MessageSegment]):
## 后续工作
在完成适配器代码的编写后,如果想要将适配器发布到 NoneBot 商店,我们需要将适配器发布到 PyPI 中,然后前往[商店](/store)页面,切换到适配器页签,点击**发布适配器**按钮,填写适配器相关信息并提交。
在完成适配器代码的编写后,如果想要将适配器发布到 NoneBot 商店,我们需要将适配器发布到 PyPI 中,然后前往[商店](/store/adapters)页面,切换到适配器页签,点击**发布适配器**按钮,填写适配器相关信息并提交。
另外建议编写适配器文档或者一些插件开发示例,以便其他开发者使用我们的适配器。

View File

@ -62,7 +62,7 @@ NoneBot 插件使用下述命名规范:
依赖填写的基本原则:程序直接导入了什么第三方库,就添加什么第三方包依赖;能用哪些第三方库的特性,就根据使用的特性锁定第三方包版本。
:::warning 注意
:::caution 注意
1. 插件需要添加 `nonebot2` 为依赖以避免“幽灵依赖”;
2. 插件需要将使用的适配器加入依赖列表,如:使用 OneBot 适配器的插件应添加 `nonebot-adapter-onebot` 依赖;
@ -102,7 +102,7 @@ __plugin_meta__ = PluginMetadata(
)
```
:::warning 注意
:::caution 注意
`__plugin_meta__` 变量**必须**处于插件最外层(如 `__init__.py` 中),否则无法正常识别。
一般做法是在 `__init__.py` 中定义 `__plugin_meta__`。
@ -183,7 +183,7 @@ twine upload dist/* # 只发布先前的构建
### 提交申请
完成在 PyPI 的插件发布流程后,前往[商店](/store)页面,切换到插件页签,点击 **发布插件** 按钮。
完成在 PyPI 的插件发布流程后,前往[商店](/store/plugins)页面,切换到插件页签,点击 **发布插件** 按钮。
在弹出的插件信息提交表单内,填入您所要发布的相应插件信息。请注意,如果插件需要必要配置项才能正常导入,请在“插件配置项”中填写必要的内容(请勿填写密钥等敏感信息)。
@ -199,4 +199,4 @@ twine upload dist/* # 只发布先前的构建
之后NoneBot 的维护者和一些插件开发者会初步检查插件代码,帮助减少该插件的问题。
完成这些步骤后,您的插件将会被自动合并到[商店](/store),而您也将成为 [**NoneBot 贡献者**](https://github.com/nonebot/nonebot2/graphs/contributors)的一员。
完成这些步骤后,您的插件将会被自动合并到[商店](/store/plugins),而您也将成为 [**NoneBot 贡献者**](https://github.com/nonebot/nonebot2/graphs/contributors)的一员。

View File

@ -4,8 +4,8 @@ description: 尝试使用 NoneBot
options:
menu:
weight: 10
category: tutorial
- category: tutorial
weight: 10
---
import Asciinema from "@site/src/components/Asciinema";
@ -13,7 +13,7 @@ import Messenger from "@site/src/components/Messenger";
# 快速上手
:::warning 前提条件
:::caution 前提条件
- 请确保你的 Python 版本 >= 3.8
- **我们强烈建议使用虚拟环境进行开发**,如果没有使用虚拟环境,请确保已经卸载可能存在的 NoneBot v1

View File

@ -4,15 +4,15 @@ description: 创建一个 NoneBot 项目
options:
menu:
weight: 20
category: tutorial
- category: tutorial
weight: 20
---
# 手动创建项目
在[快速上手](./quick-start.mdx)中,我们已经介绍了如何安装和使用 `nb-cli` 创建一个项目。在本章节中,我们将简要介绍如何在不使用 `nb-cli` 的方式创建一个机器人项目的**最小实例**并启动。如果你想要了解 NoneBot 的启动流程,也可以阅读本章节。
在[快速上手](../quick-start.mdx)中,我们已经介绍了如何安装和使用 `nb-cli` 创建一个项目。在本章节中,我们将简要介绍如何在不使用 `nb-cli` 的方式创建一个机器人项目的**最小实例**并启动。如果你想要了解 NoneBot 的启动流程,也可以阅读本章节。
:::warning
:::caution
我们十分不推荐直接创建机器人项目,请优先考虑使用 nb-cli 进行项目创建。
:::
@ -44,7 +44,7 @@ options:
pip install 'nonebot2[fastapi]'
```
驱动器包名可以在 [驱动器商店](/store) 中找到。
驱动器包名可以在 [驱动器商店](/store/drivers) 中找到。
3. 安装适配器
@ -52,7 +52,7 @@ options:
pip install nonebot-adapter-console
```
适配器包名可以在 [适配器商店](/store) 中找到。
适配器包名可以在 [适配器商店](/store/adapters) 中找到。
## 创建配置文件

View File

@ -4,8 +4,8 @@ description: 创建并加载自定义插件
options:
menu:
weight: 50
category: tutorial
- category: tutorial
weight: 50
---
# 插件编写准备
@ -41,7 +41,7 @@ options:
## 创建插件
:::warning 注意
:::caution 注意
如果在之前的[快速上手](../quick-start.mdx)章节中已经使用 `bootstrap` 模板创建了项目,那么你需要做出如下修改:
1. 在项目目录中创建一个两层文件夹 `awesome_bot/plugins`
@ -63,7 +63,7 @@ options:
:::
:::warning 注意
:::caution 注意
如果在之前的[创建项目](./application.md)章节中手动创建了相关文件,那么你需要做出如下修改:
1. 在项目目录中创建一个两层文件夹 `awesome_bot/plugins`
@ -144,7 +144,7 @@ nonebot.load_plugin("path.to.your.plugin") # 加载第三方插件
nonebot.load_plugin(Path("./path/to/your/plugin.py")) # 加载项目插件
```
:::warning 注意
:::caution 注意
请注意,本地插件的路径应该为相对机器人 **入口文件(通常为 bot.py** 可导入的,例如在项目 `plugins` 目录下。
:::
@ -156,7 +156,7 @@ nonebot.load_plugin(Path("./path/to/your/plugin.py")) # 加载项目插件
nonebot.load_plugins("src/plugins", "path/to/your/plugins")
```
:::warning 注意
:::caution 注意
请注意,插件目录应该为相对机器人 **入口文件(通常为 bot.py** 可导入的,例如在项目 `plugins` 目录下。
:::

View File

@ -4,8 +4,8 @@ description: 通过依赖注入获取所需事件信息
options:
menu:
weight: 80
category: tutorial
- category: tutorial
weight: 80
---
# 获取事件信息

View File

@ -4,8 +4,8 @@ description: NoneBot 机器人构成及基本使用
options:
menu:
weight: 30
category: tutorial
- category: tutorial
weight: 30
---
# 机器人的构成

View File

@ -4,8 +4,8 @@ description: 处理接收到的特定事件
options:
menu:
weight: 70
category: tutorial
- category: tutorial
weight: 70
---
# 事件处理

View File

@ -4,8 +4,8 @@ description: 响应接收到的特定事件
options:
menu:
weight: 60
category: tutorial
- category: tutorial
weight: 60
---
# 事件响应器

View File

@ -4,8 +4,8 @@ description: 处理消息序列与消息段
options:
menu:
weight: 90
category: tutorial
- category: tutorial
weight: 90
---
# 处理消息
@ -26,7 +26,7 @@ options:
顾名思义,消息段 `MessageSegment` 是一段消息。由于消息序列的本质是由若干消息段所组成的序列,消息段可以被认为是构成消息序列的最小单位。简单来说,消息序列类似于一个自然段,而消息段则是组成自然段的一句话。同时,作为特殊消息载体的存在,绝大多数的平台都有着**独特的消息类型**,这些独特的内容均需要由对应的**协议适配器**所提供,以适应不同平台中的消息模式。**这也意味着,你需要导入对应的协议适配器中的消息序列和消息段后才能使用其特殊的工厂方法。**
:::warning 注意
:::caution 注意
消息段的类型是由协议适配器提供的,因此你需要参考协议适配器的文档并导入对应的消息段后才能使用其特殊的消息类型。
在上一节的[使用依赖注入](./event-data.mdx#使用依赖注入)中,我们导入的为 `nonebot.adapters.Message` 抽象基类,因此我们无法使用平台特有的消息类型。仅能使用 `str` 作为纯文本消息回复。
@ -34,7 +34,7 @@ options:
## 使用消息序列
:::warning 注意
:::caution 注意
在以下的示例中,为了更好的理解多种类型的消息组成方式,我们将使用 `Console` 协议适配器来演示消息序列的使用方法。在实际使用中,你需要确保你使用的**消息序列类型**与你所要发送的**平台类型**一致。
:::
@ -297,7 +297,7 @@ msg == Message(
如果 `Message.template` 构建消息模板,那么消息模板将采用消息序列形式的格式化,此时的消息将会是平台特定的:
:::warning 注意
:::caution 注意
使用 `Message.template` 构建消息模板时,应注意消息序列为平台适配器提供的类型,不能使用 `nonebot.adapters.Message` 基类作为模板构建。使用基类构建模板与使用 `str` 构建模板的效果是一样的,因此请使用上述的 `MessageTemplate` 类直接构建模板。:
:::
@ -337,7 +337,7 @@ Message(
)
```
:::warning 注意
:::caution 注意
只有消息序列中的文本类型消息段才能被格式化,其他类型的消息段将会原样添加。
:::

View File

@ -4,8 +4,8 @@ description: 从商店安装适配器和插件
options:
menu:
weight: 40
category: tutorial
- category: tutorial
weight: 40
---
# 获取商店内容
@ -18,7 +18,7 @@ import Asciinema from "@site/src/components/Asciinema";
如果你暂时没有获取商店内容的需求,可以跳过本章节。
:::
NoneBot 提供了一个[商店](/store),商店内容均由社区开发者贡献。你可以在商店中查找你需要的适配器和插件等,进行安装或者参考其文档等。
NoneBot 提供了一个[商店](/store/plugins),商店内容均由社区开发者贡献。你可以在商店中查找你需要的适配器和插件等,进行安装或者参考其文档等。
商店中每个内容的卡片都包含了其名称和简介等信息,点击**卡片右上角**链接图标即可跳转到其主页。