mirror of
https://github.com/nonebot/nonebot2.git
synced 2026-07-24 09:12:58 +00:00
📝 migrate admonition title syntax to Docusaurus v3 bracket form
This commit is contained in:
@@ -15,7 +15,7 @@ import TabItem from "@theme/TabItem";
|
||||
|
||||
在[快速上手](../quick-start.mdx)中,我们已经介绍了如何安装和使用 `nb-cli` 创建一个项目。在本章节中,我们将简要介绍如何在不使用 `nb-cli` 的方式创建一个机器人项目的**最小实例**并启动。如果你想要了解 NoneBot 的启动流程,也可以阅读本章节。
|
||||
|
||||
:::warning 警告
|
||||
:::warning[警告]
|
||||
我们十分不推荐直接创建机器人项目,请优先考虑使用 nb-cli 进行项目创建。
|
||||
:::
|
||||
|
||||
@@ -102,7 +102,7 @@ COMMAND_SEP=["."] # 配置命令分割字符
|
||||
|
||||
入口文件( Entrypoint )顾名思义,是用来初始化并运行机器人的 Python 文件。入口文件需要完成框架的初始化、注册适配器、加载插件等工作。
|
||||
|
||||
:::tip 提示
|
||||
:::tip[提示]
|
||||
如果你使用 `nb-cli` 创建项目,入口文件不会被创建,该文件功能会被 `nb run` 命令代替。
|
||||
:::
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ options:
|
||||
|
||||
## 创建插件
|
||||
|
||||
:::warning 注意
|
||||
:::warning[注意]
|
||||
如果在之前的[快速上手](../quick-start.mdx)章节中已经使用 `bootstrap` 模板创建了项目,那么你需要做出如下修改:
|
||||
|
||||
1. 在项目目录中创建一个两层文件夹 `awesome_bot/plugins`
|
||||
@@ -65,7 +65,7 @@ options:
|
||||
|
||||
:::
|
||||
|
||||
:::warning 注意
|
||||
:::warning[注意]
|
||||
如果在之前的[创建项目](./application.mdx)章节中手动创建了相关文件,那么你需要做出如下修改:
|
||||
|
||||
1. 在项目目录中创建一个两层文件夹 `awesome_bot/plugins`
|
||||
@@ -113,7 +113,7 @@ $ nb plugin create
|
||||
|
||||
## 加载插件
|
||||
|
||||
:::danger 警告
|
||||
:::danger[警告]
|
||||
请勿在插件被加载前 `import` 插件模块,这会导致 NoneBot 无法将其转换为插件而出现意料之外的情况。
|
||||
:::
|
||||
|
||||
@@ -148,7 +148,7 @@ nonebot.load_plugin("path.to.your.plugin") # 加载第三方插件
|
||||
nonebot.load_plugin(Path("./path/to/your/plugin.py")) # 加载项目插件
|
||||
```
|
||||
|
||||
:::warning 注意
|
||||
:::warning[注意]
|
||||
请注意,本地插件的路径应该为相对机器人 **入口文件(通常为 bot.py)** 可导入的,例如在项目 `plugins` 目录下。
|
||||
:::
|
||||
|
||||
@@ -160,7 +160,7 @@ nonebot.load_plugin(Path("./path/to/your/plugin.py")) # 加载项目插件
|
||||
nonebot.load_plugins("src/plugins", "path/to/your/plugins")
|
||||
```
|
||||
|
||||
:::warning 注意
|
||||
:::warning[注意]
|
||||
请注意,插件目录应该为相对机器人 **入口文件(通常为 bot.py)** 可导入的,例如在项目 `plugins` 目录下。
|
||||
:::
|
||||
|
||||
@@ -187,7 +187,7 @@ nonebot.load_all_plugins(["path.to.your.plugin"], ["path/to/your/plugins"])
|
||||
nonebot.load_from_json("plugin_config.json", encoding="utf-8")
|
||||
```
|
||||
|
||||
:::tip 提示
|
||||
:::tip[提示]
|
||||
如果 JSON 配置文件中的字段无法满足你的需求,可以使用 [`load_all_plugins`](#load_all_plugins) 方法自行读取配置来加载插件。
|
||||
:::
|
||||
|
||||
@@ -209,7 +209,7 @@ plugin_dirs = ["path/to/your/plugins"]
|
||||
nonebot.load_from_toml("plugin_config.toml", encoding="utf-8")
|
||||
```
|
||||
|
||||
:::tip 提示
|
||||
:::tip[提示]
|
||||
如果 TOML 配置文件中的字段无法满足你的需求,可以使用 [`load_all_plugins`](#load_all_plugins) 方法自行读取配置来加载插件。
|
||||
:::
|
||||
|
||||
|
||||
@@ -45,11 +45,11 @@ async def handle_function(args: Message = CommandArg()):
|
||||
|
||||
如上方示例所示,我们使用了 `args` 作为注入参数名,注入的内容为 `CommandArg()`,也就是**消息命令后跟随的内容**。在这个示例中,我们获得的参数会被检查是否有效,对无效参数则会结束事件。
|
||||
|
||||
:::tip 提示
|
||||
:::tip[提示]
|
||||
命令与参数之间可以不需要空格,`CommandArg()` 获取的信息为命令后跟随的内容并去除了头部空白符。例如:`/天气 上海` 消息的参数为 `上海`。
|
||||
:::
|
||||
|
||||
:::tip 提示
|
||||
:::tip[提示]
|
||||
`:=` 是 Python 3.8 引入的新语法 [Assignment Expressions](https://docs.python.org/zh-cn/3/reference/expressions.html#assignment-expressions),也称为海象表达式,可以在表达式中直接赋值。
|
||||
:::
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ async def handle_function():
|
||||
|
||||
值得注意的是,在执行 `finish` 方法时,NoneBot 会在向机器人用户发送消息内容后抛出 `FinishedException` 异常来结束事件响应流程。也就是说,在 `finish` 被执行后,后续的程序是不会被执行的。如果你需要回复机器人用户消息但不想事件处理流程结束,可以使用注释的部分中展示的 `send` 方法。
|
||||
|
||||
:::danger 警告
|
||||
:::danger[警告]
|
||||
由于 `finish` 是通过抛出 `FinishedException` 异常来结束事件的,因此异常可能会被未加限制的 `try-except` 捕获,影响事件处理流程正确处理,导致无法正常结束此事件。请务必在异常捕获中指定错误类型或排除所有 [MatcherException](../api/exception.md#MatcherException) 类型的异常(如下所示),或将 `finish` 移出捕获范围进行使用。
|
||||
|
||||
```python
|
||||
|
||||
@@ -36,7 +36,7 @@ weather = on_command("天气")
|
||||
|
||||
这样,我们就获得一个名为 `weather` 的事件响应器了,这个事件响应器会对 `/天气` 开头的消息进行响应。
|
||||
|
||||
:::tip 提示
|
||||
:::tip[提示]
|
||||
如果一条消息中包含“@机器人”或以“机器人的昵称”开始,例如 `@bot /天气` 时,协议适配器会将 `event.is_tome()` 判断为 `True` ,同时也会自动去除 `@bot`,即事件响应器收到的信息内容为 `/天气`,方便进行命令匹配。
|
||||
:::
|
||||
|
||||
@@ -53,6 +53,6 @@ weather = on_command("天气", rule=to_me(), aliases={"weather", "查天气"}, p
|
||||
|
||||
这样,我们就获得了一个可以响应 `天气`、`weather`、`查天气` 三个命令的响应规则,需要私聊或 `@bot` 时才会响应,优先级为 10(越小越优先),阻断事件向后续优先级传播的事件响应器了。这些内容的意义和使用方法将会在后续的章节中一一介绍。
|
||||
|
||||
:::tip 提示
|
||||
:::tip[提示]
|
||||
需要注意的是,不同的辅助函数有不同的可选参数,在使用之前可以参考[事件响应器进阶 - 基本辅助函数](../advanced/matcher.md#基本辅助函数)或 [API 文档](../api/plugin/on.md#on)。
|
||||
:::
|
||||
|
||||
@@ -26,7 +26,7 @@ options:
|
||||
|
||||
顾名思义,消息段 `MessageSegment` 是一段消息。由于消息序列的本质是由若干消息段所组成的序列,消息段可以被认为是构成消息序列的最小单位。简单来说,消息序列类似于一个自然段,而消息段则是组成自然段的一句话。同时,作为特殊消息载体的存在,绝大多数的平台都有着**独特的消息类型**,这些独特的内容均需要由对应的**协议适配器**所提供,以适应不同平台中的消息模式。**这也意味着,你需要导入对应的协议适配器中的消息序列和消息段后才能使用其特殊的工厂方法。**
|
||||
|
||||
:::warning 注意
|
||||
:::warning[注意]
|
||||
消息段的类型是由协议适配器提供的,因此你需要参考协议适配器的文档并导入对应的消息段后才能使用其特殊的消息类型。
|
||||
|
||||
在上一节的[使用依赖注入](./event-data.mdx#使用依赖注入)中,我们导入的为 `nonebot.adapters.Message` 抽象基类,因此我们无法使用平台特有的消息类型。仅能使用 `str` 作为纯文本消息回复。
|
||||
@@ -34,7 +34,7 @@ options:
|
||||
|
||||
## 使用消息序列
|
||||
|
||||
:::warning 注意
|
||||
:::warning[注意]
|
||||
在以下的示例中,为了更好的理解多种类型的消息组成方式,我们将使用 `Console` 协议适配器来演示消息序列的使用方法。在实际使用中,你需要确保你使用的**消息序列类型**与你所要发送的**平台类型**一致。
|
||||
:::
|
||||
|
||||
@@ -296,7 +296,7 @@ msg == Message(
|
||||
|
||||
如果 `Message.template` 构建消息模板,那么消息模板将采用消息序列形式的格式化,此时的消息将会是平台特定的:
|
||||
|
||||
:::warning 注意
|
||||
:::warning[注意]
|
||||
使用 `Message.template` 构建消息模板时,应注意消息序列为平台适配器提供的类型,不能使用 `nonebot.adapters.Message` 基类作为模板构建。使用基类构建模板与使用 `str` 构建模板的效果是一样的,因此请使用上述的 `MessageTemplate` 类直接构建模板。:
|
||||
:::
|
||||
|
||||
@@ -336,7 +336,7 @@ Message(
|
||||
)
|
||||
```
|
||||
|
||||
:::warning 注意
|
||||
:::warning[注意]
|
||||
只有消息序列中的文本类型消息段才能被格式化,其他类型的消息段将会原样添加。
|
||||
:::
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import Asciinema from "@site/src/components/Asciinema";
|
||||
|
||||
:::tip 提示
|
||||
:::tip[提示]
|
||||
|
||||
如果你暂时没有获取商店内容的需求,可以跳过本章节。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user