diff --git a/docs/.vitepress/config.js b/docs/.vitepress/config.js
index 91b7cd48..4391c844 100644
--- a/docs/.vitepress/config.js
+++ b/docs/.vitepress/config.js
@@ -14,7 +14,7 @@ export default {
text: '在 GitHub 上编辑此页'
},
socialLinks: [
- {icon: 'github', link: 'https://github.com/AmiyaBot'}
+ { icon: 'github', link: 'https://github.com/AmiyaBot' }
],
footer: {
message: 'MIT & CC BY-NC-SA 4.0 Licensed. More Info Click Here.',
diff --git a/docs/.vitepress/nav/sidebar.js b/docs/.vitepress/nav/sidebar.js
index e57855a4..21afa735 100644
--- a/docs/.vitepress/nav/sidebar.js
+++ b/docs/.vitepress/nav/sidebar.js
@@ -4,53 +4,53 @@ export default {
text: '开始使用',
collapsible: true,
items: [
- {text: '起步', link: '/develop/basic/index.md'},
- {text: '适配器选择', link: '/develop/basic/selectAdapter.md'},
- {text: '多账号', link: '/develop/basic/multipleAccounts.md'}
+ { text: '起步', link: '/develop/basic/index.md' },
+ { text: '适配器选择', link: '/develop/basic/selectAdapter.md' },
+ { text: '多账号', link: '/develop/basic/multipleAccounts.md' }
]
},
{
text: '基础开发',
collapsible: true,
items: [
- {text: '声明', link: '/develop/basic/statement.md'},
- {text: '注册消息响应', link: '/develop/basic/messageHandler.md'},
- {text: '接收消息(Message 对象)', link: '/develop/basic/recvMessage.md'},
- {text: '发送消息(Chain 对象)', link: '/develop/basic/sendMessage.md'},
- {text: '发送主动消息', link: '/develop/basic/sendActiveMessage.md'},
- {text: '创建连续对话', link: '/develop/basic/continuityMessage.md'},
- {text: '撤回消息', link: '/develop/basic/recallMessage.md'}
+ { text: '声明', link: '/develop/basic/statement.md' },
+ { text: '注册消息响应', link: '/develop/basic/messageHandler.md' },
+ { text: '接收消息(Message 对象)', link: '/develop/basic/recvMessage.md' },
+ { text: '发送消息(Chain 对象)', link: '/develop/basic/sendMessage.md' },
+ { text: '发送主动消息', link: '/develop/basic/sendActiveMessage.md' },
+ { text: '创建连续对话', link: '/develop/basic/continuityMessage.md' },
+ { text: '撤回消息', link: '/develop/basic/recallMessage.md' }
]
},
{
text: '消息的构建',
collapsible: true,
items: [
- {text: '发送 At', link: '/develop/basic/chainBuild/at.md'},
- {text: '发送表情', link: '/develop/basic/chainBuild/face.md'},
- {text: '发送文字', link: '/develop/basic/chainBuild/text.md'},
- {text: '发送图片', link: '/develop/basic/chainBuild/image.md'},
- {text: '发送文字生成的图片', link: '/develop/basic/chainBuild/textImage.md'},
- {text: '发送 html 生成的图片', link: '/develop/basic/chainBuild/html.md'},
- {text: '发送 markdown 生成的图片', link: '/develop/basic/chainBuild/markdown.md'},
- {text: '发送语音', link: '/develop/basic/chainBuild/voice.md'},
- {text: '发送合并转发消息', link: '/develop/basic/chainBuild/forward.md'},
- {text: '发送原生模板 & CQ码', link: '/develop/basic/chainBuild/extend.md'}
+ { text: '发送 At', link: '/develop/basic/chainBuild/at.md' },
+ { text: '发送表情', link: '/develop/basic/chainBuild/face.md' },
+ { text: '发送文字', link: '/develop/basic/chainBuild/text.md' },
+ { text: '发送图片', link: '/develop/basic/chainBuild/image.md' },
+ { text: '发送文字生成的图片', link: '/develop/basic/chainBuild/textImage.md' },
+ { text: '发送 html 生成的图片', link: '/develop/basic/chainBuild/html.md' },
+ { text: '发送 markdown 生成的图片', link: '/develop/basic/chainBuild/markdown.md' },
+ { text: '发送语音', link: '/develop/basic/chainBuild/voice.md' },
+ { text: '发送合并转发消息', link: '/develop/basic/chainBuild/forward.md' },
+ { text: '发送原生模板 & CQ码', link: '/develop/basic/chainBuild/extend.md' }
]
},
{
text: '监听',
collapsible: true,
items: [
- {text: '事件监听', link: '/develop/basic/handleEvents.md'},
- {text: '异常监听', link: '/develop/basic/handleException.md'}
+ { text: '事件监听', link: '/develop/basic/handleEvents.md' },
+ { text: '异常监听', link: '/develop/basic/handleException.md' }
]
},
{
text: '测试',
collapsible: true,
items: [
- {text: '使用测试实例调试', link: '/develop/basic/testInstance.md'}
+ { text: '使用测试实例调试', link: '/develop/basic/testInstance.md' }
]
}
],
@@ -59,30 +59,30 @@ export default {
text: '进阶开发',
collapsible: true,
items: [
- {text: '说明', link: '/develop/advanced/index.md'},
- {text: '生命周期', link: '/develop/advanced/lifeCycle.md'},
- {text: '定时任务', link: '/develop/advanced/timedTask.md'},
- {text: '事件总线', link: '/develop/advanced/eventBus.md'},
- {text: '日志模块', link: '/develop/advanced/logger.md'},
- {text: '加载插件', link: '/develop/advanced/loadPlugins.md'}
+ { text: '说明', link: '/develop/advanced/index.md' },
+ { text: '生命周期', link: '/develop/advanced/lifeCycle.md' },
+ { text: '定时任务', link: '/develop/advanced/timedTask.md' },
+ { text: '事件总线', link: '/develop/advanced/eventBus.md' },
+ { text: '日志模块', link: '/develop/advanced/logger.md' },
+ { text: '加载插件', link: '/develop/advanced/loadPlugins.md' }
]
},
{
text: '辅助',
collapsible: true,
items: [
- {text: 'HTTP 请求', link: '/develop/advanced/httpRequests.md'},
- {text: '处理 IO 阻塞的操作', link: '/develop/advanced/blockingIO.md'},
- {text: '改变 Playwright 启动', link: '/develop/advanced/playwright.md'},
- {text: '启动参数', link: '/develop/advanced/startupParameter.md'}
+ { text: 'HTTP 请求', link: '/develop/advanced/httpRequests.md' },
+ { text: '处理 IO 阻塞的操作', link: '/develop/advanced/blockingIO.md' },
+ { text: '改变 Playwright 启动', link: '/develop/advanced/playwright.md' },
+ { text: '启动参数', link: '/develop/advanced/startupParameter.md' }
]
},
{
text: '额外支持',
collapsible: true,
items: [
- {text: 'HTTP 服务器', link: '/develop/advanced/httpSupport.md'},
- {text: '数据库', link: '/develop/advanced/databaseSupport.md'}
+ { text: 'HTTP 服务器', link: '/develop/advanced/httpSupport.md' },
+ { text: '数据库', link: '/develop/advanced/databaseSupport.md' }
]
}
],
@@ -91,27 +91,27 @@ export default {
text: '准备',
collapsible: true,
items: [
- {text: '插件开发说明', link: '/develop/plugin/index.md'},
- {text: '环境准备', link: '/develop/plugin/env.md'},
+ { text: '插件开发说明', link: '/develop/plugin/index.md' },
+ { text: '环境准备', link: '/develop/plugin/env.md' },
]
},
{
text: '开发',
collapsible: true,
items: [
- {text: '创建&编写插件', link: '/develop/plugin/create.md'},
- {text: '插件生命周期', link: '/develop/plugin/life.md'},
- {text: '添加插件文档', link: '/develop/plugin/addDoc.md'},
- {text: '对接控制台', link: '/develop/plugin/consoleConfig.md'},
- {text: '调试插件', link: '/develop/plugin/debug.md'},
+ { text: '创建&编写插件', link: '/develop/plugin/create.md' },
+ { text: '插件生命周期', link: '/develop/plugin/life.md' },
+ { text: '添加插件文档', link: '/develop/plugin/addDoc.md' },
+ { text: '对接控制台', link: '/develop/plugin/consoleConfig.md' },
+ { text: '调试插件', link: '/develop/plugin/debug.md' },
]
},
{
text: '发布',
collapsible: true,
items: [
- {text: '打包插件', link: '/develop/plugin/build.md'},
- {text: '发布到插件商店', link: '/develop/plugin/publish.md'},
+ { text: '打包插件', link: '/develop/plugin/build.md' },
+ { text: '发布到插件商店', link: '/develop/plugin/publish.md' },
]
},
],
@@ -120,41 +120,41 @@ export default {
text: '准备',
collapsible: true,
items: [
- {text: '部署AmiyaBot-demo-v6', link: '/guide/deploy/index.md'},
- {text: '选择你的运营方', link: '/guide/deploy/yourChoose.md'},
- {text: '开始部署', link: '/guide/deploy/getStarted.md'},
+ { text: '部署AmiyaBot-demo-v6', link: '/guide/deploy/index.md' },
+ { text: '选择你的运营方', link: '/guide/deploy/yourChoose.md' },
+ { text: '开始部署', link: '/guide/deploy/getStarted.md' },
]
},
{
text: '使用控制台',
collapsible: true,
items: [
- {text: '连接控制台', link: '/guide/deploy/console/index.md'},
- {text: '配置实例', link: '/guide/deploy/console/configure.md'},
- {text: '安装插件', link: '/guide/deploy/console/plugin.md'},
+ { text: '连接控制台', link: '/guide/deploy/console/index.md' },
+ { text: '配置实例', link: '/guide/deploy/console/configure.md' },
+ { text: '安装插件', link: '/guide/deploy/console/plugin.md' },
]
},
{
text: '维护',
collapsible: true,
items: [
- {text: '如何更新', link: '/guide/deploy/maintain/upgrade.md'},
+ { text: '如何更新', link: '/guide/deploy/maintain/upgrade.md' },
]
},
{
text: '高级使用',
collapsible: true,
items: [
- {text: '说明', link: '/guide/deploy/advanced/index.md'},
- {text: '使用 Mysql', link: '/guide/deploy/advanced/mysql.md'},
+ { text: '说明', link: '/guide/deploy/advanced/index.md' },
+ { text: '使用 Mysql', link: '/guide/deploy/advanced/mysql.md' },
]
},
{
text: 'F&Q',
collapsible: true,
items: [
- {text: '常见问题', link: '/guide/deploy/faq/commonProblem.md'},
- {text: '插件常见问题', link: '/guide/deploy/faq/PluginProblem.md'}
+ { text: '常见问题', link: '/guide/deploy/faq/commonProblem.md' },
+ { text: '插件常见问题', link: '/guide/deploy/faq/PluginProblem.md' }
]
}
]
diff --git a/docs/develop/advanced/databaseSupport.md b/docs/develop/advanced/databaseSupport.md
index b25299f7..1bbd766c 100644
--- a/docs/develop/advanced/databaseSupport.md
+++ b/docs/develop/advanced/databaseSupport.md
@@ -1,7 +1,8 @@
# 数据库支持
AmiyaBot 提供了 Sqlite 和 MySQL 数据库的 ORM
-支持。基于 [peewee](https://github.com/coleifer/peewee),封装了部分表结构管理以及查询转换。日常使用的查询操作详见 [peewee文档](http://docs.peewee-orm.com/)
+支持。基于 [peewee](https://github.com/coleifer/peewee)
+,封装了部分表结构管理以及查询转换。日常使用的查询操作详见 [peewee文档](http://docs.peewee-orm.com/)
::: warning 温馨提示
AmiyaBot 仅能提供有限的数据库支持,**推荐你使用自己的更优的数据库解决方案**。
@@ -74,7 +75,7 @@ class TableName(BotBaseModel):
| 参数名 | 类型 | 释义 | 默认值 |
|------------|-------------|--------|-----|
| rows | List\[dict] | 数据列表 | |
-| chunk_size | Int | 分片插入大小 | 200 |
+| chunk_size | int | 分片插入大小 | 200 |
```python
data = [
@@ -132,8 +133,8 @@ data = query_to_list(TableName.select())
| 参数名 | 类型 | 释义 | 默认值 |
|-----------|-------------|-------------|-----|
| model | ModelSelect | peewee 查询对象 | |
-| page | Int | 当前页 | |
-| page_size | Int | 页行数 | |
+| page | int | 当前页 | |
+| page_size | int | 页行数 | |
```python
data = select_for_paginate(TableName.select(), 1, 10)
diff --git a/docs/develop/advanced/eventBus.md b/docs/develop/advanced/eventBus.md
index b22bd112..d9636179 100644
--- a/docs/develop/advanced/eventBus.md
+++ b/docs/develop/advanced/eventBus.md
@@ -10,10 +10,10 @@ from amiyabot import event_bus
**publish**
-| 参数名 | 类型 | 释义 | 默认值 |
-|------------|--------|------|------|
-| event_name | String | 事件名 | |
-| data | Any | 事件数据 | None |
+| 参数名 | 类型 | 释义 | 默认值 |
+|------------|-----|------|------|
+| event_name | str | 事件名 | |
+| data | Any | 事件数据 | None |
```python
event_bus.publish('myEvent', data=...)
@@ -25,7 +25,7 @@ event_bus.publish('myEvent', data=...)
| 参数名 | 类型 | 释义 | 默认值 |
|------------|----------|----------|------|
-| event_name | String | 事件名 | |
+| event_name | str | 事件名 | |
| method | Callable | 响应方法(可选) | None |
::: tip 提示
@@ -57,7 +57,7 @@ event_bus.subscribe('myEvent', event_handler)
| 参数名 | 类型 | 释义 | 默认值 |
|------------|----------|------|------|
-| event_name | String | 事件名 | |
+| event_name | str | 事件名 | |
| method | Callable | 响应方法 | None |
```python
diff --git a/docs/develop/advanced/httpRequests.md b/docs/develop/advanced/httpRequests.md
index fe463629..ff1062aa 100644
--- a/docs/develop/advanced/httpRequests.md
+++ b/docs/develop/advanced/httpRequests.md
@@ -30,10 +30,10 @@ await download_async()
res: str = await http_requests.get()
```
-| 参数名 | 类型 | 释义 | 默认值 |
-|-----------|--------|--------------------------------------------------------------------------------------|-----|
-| interface | String | 请求地址 | |
-| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-----------|-----|--------------------------------------------------------------------------------------|-----|
+| interface | str | 请求地址 | |
+| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
## POST
@@ -45,7 +45,7 @@ res: str = await http_requests.post()
| 参数名 | 类型 | 释义 | 默认值 |
|-----------|--------------------|--------------------------------------------------------------------------------------|-----|
-| interface | String | 请求地址 | |
+| interface | str | 请求地址 | |
| payload | Union\[Dict, List] | 请求体 | |
| headers | Dict | 追加的请求头 | |
| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
@@ -58,12 +58,12 @@ post_form 方法类似 post 方法。唯一不同的是请求体仅接受**字
res: str = await http_requests.post_form()
```
-| 参数名 | 类型 | 释义 | 默认值 |
-|-----------|--------|--------------------------------------------------------------------------------------|-----|
-| interface | String | 请求地址 | |
-| payload | Dict | 请求体 | |
-| headers | Dict | 追加的请求头 | |
-| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-----------|------|--------------------------------------------------------------------------------------|-----|
+| interface | str | 请求地址 | |
+| payload | Dict | 请求体 | |
+| headers | Dict | 追加的请求头 | |
+| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
## 文件上传
@@ -73,14 +73,14 @@ res: str = await http_requests.post_form()
res: str = await http_requests.post_upload()
```
-| 参数名 | 类型 | 释义 | 默认值 |
-|------------|--------|--------------------------------------------------------------------------------------|------|
-| interface | String | 请求地址 | |
-| file | Bytes | 文件 bytes | |
-| file_field | String | 表单数据中存放文件的字段名 | file |
-| payload | Dict | 请求体 | |
-| headers | Dict | 追加的请求头 | |
-| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|------------|-------|--------------------------------------------------------------------------------------|------|
+| interface | str | 请求地址 | |
+| file | Bytes | 文件 bytes | |
+| file_field | str | 表单数据中存放文件的字段名 | file |
+| payload | Dict | 请求体 | |
+| headers | Dict | 追加的请求头 | |
+| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
## 自定义请求
@@ -90,12 +90,12 @@ res: str = await http_requests.post_upload()
res: str = await http_requests.request()
```
-| 参数名 | 类型 | 释义 | 默认值 |
-|--------------|--------|--------------------------------------------------------------------------------------|------|
-| url | String | 请求地址 | |
-| method | Dict | 请求方法 | post |
-| request_name | Dict | 请求过程的 LOG 标识 | |
-| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|--------------|------|--------------------------------------------------------------------------------------|------|
+| url | str | 请求地址 | |
+| method | Dict | 请求方法 | post |
+| request_name | Dict | 请求过程的 LOG 标识 | |
+| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
## 下载文件
@@ -105,12 +105,12 @@ download_async 是提供的异步下载文件的方法。默认返回 bytes 类
file: bytes = await download_async()
```
-| 参数名 | 类型 | 释义 | 默认值 |
-|-----------|--------|--------------------------------------------------------------------------------------|-------|
-| url | String | 请求地址 | |
-| headers | Dict | 追加的请求头 | |
-| stringify | Bool | 是否返回字符串结果 | False |
-| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-----------|------|--------------------------------------------------------------------------------------|-------|
+| url | str | 请求地址 | |
+| headers | Dict | 追加的请求头 | |
+| stringify | bool | 是否返回字符串结果 | False |
+| **kwargs | | [request 参数](https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L316) | |
### 同步下载
@@ -122,10 +122,10 @@ from amiyabot.network.download import download_sync
file: bytes = download_sync()
```
-| 参数名 | 类型 | 释义 | 默认值 |
-|-----------|--------|-----------------------------------------------------------------------------|-------|
-| url | String | 请求地址 | |
-| headers | Dict | 追加的请求头 | |
-| stringify | Bool | 是否返回字符串结果 | False |
-| progress | Bool | 是否显示进度条 | False |
-| **kwargs | | [request 参数](https://github.com/psf/requests/blob/main/requests/api.py#L14) | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-----------|------|-----------------------------------------------------------------------------|-------|
+| url | str | 请求地址 | |
+| headers | Dict | 追加的请求头 | |
+| stringify | bool | 是否返回字符串结果 | False |
+| progress | bool | 是否显示进度条 | False |
+| **kwargs | | [request 参数](https://github.com/psf/requests/blob/main/requests/api.py#L14) | |
diff --git a/docs/develop/advanced/httpSupport.md b/docs/develop/advanced/httpSupport.md
index 987de629..7cb75b95 100644
--- a/docs/develop/advanced/httpSupport.md
+++ b/docs/develop/advanced/httpSupport.md
@@ -51,7 +51,8 @@ server = HttpServer(..., auth_key='my_auth_key')
## FastApi 扩展
-AmiyaBot 仅对 FastApi 的路由注册做了简易的封装。如需要扩展其用法,可获取 app 实例后参考[官方文档](https://fastapi.tiangolo.com/)进一步使用。
+AmiyaBot 仅对 FastApi 的路由注册做了简易的封装。如需要扩展其用法,可获取 app
+实例后参考[官方文档](https://fastapi.tiangolo.com/)进一步使用。
```python
server = HttpServer()
diff --git a/docs/develop/advanced/lifeCycle.md b/docs/develop/advanced/lifeCycle.md
index 775dbfd1..8f5bb735 100644
--- a/docs/develop/advanced/lifeCycle.md
+++ b/docs/develop/advanced/lifeCycle.md
@@ -51,7 +51,8 @@ async def _(data: Message, waiter: Waiter, instance: BotAdapterProtocol):
### message_before_handle
-当消息分配器有返回,在执行消息响应器前执行此钩子。存在多个此钩子时,按加载顺序逐个调用。全部执行完成后当有其中一个返回 False,则不往下继续执行并结束生命周期。
+当消息分配器有返回,在执行消息响应器前执行此钩子。存在多个此钩子时,按加载顺序逐个调用。全部执行完成后当有其中一个返回
+False,则不往下继续执行并结束生命周期。
```python
@bot.message_before_handle
@@ -63,7 +64,8 @@ async def _(data: Message, factory_name: str, instance: BotAdapterProtocol):
### message_before_send
-当消息响应器执行完毕且存在返回时,在发送其返回前执行此钩子。可以在此阶段修改 Chain 对象并返回。存在多个此钩子时,按加载顺序逐个调用,参数接受的 Chain 对象受上一个执行的影响。
+当消息响应器执行完毕且存在返回时,在发送其返回前执行此钩子。可以在此阶段修改 Chain 对象并返回。存在多个此钩子时,按加载顺序逐个调用,参数接受的
+Chain 对象受上一个执行的影响。
```python
@bot.message_before_send
diff --git a/docs/develop/advanced/loadPlugins.md b/docs/develop/advanced/loadPlugins.md
index a8ed257f..e9bc965b 100644
--- a/docs/develop/advanced/loadPlugins.md
+++ b/docs/develop/advanced/loadPlugins.md
@@ -142,11 +142,11 @@ ImportError: attempted relative import with no known parent package
**install_plugin** 里提供了参数解决这一问题。先看看这个方法的参数列表。
-| 参数名 | 类型 | 释义 | 默认值 |
-|---------------------|--------|------------------------|-------|
-| plugin | Union | 插件 | |
-| extract_plugin | Bool | 是否解压插件 | False |
-| extract_plugin_dest | String | 插件解压后的目录名(默认为 zip 文件名) | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|---------------------|-------|------------------------|-------|
+| plugin | Union | 插件 | |
+| extract_plugin | bool | 是否解压插件 | False |
+| extract_plugin_dest | str | 插件解压后的目录名(默认为 zip 文件名) | |
解决上述问题,我们只需要添加参数 `extract_plugin=True`,将 zip 导入转换为 Package 目录导入。
@@ -164,10 +164,10 @@ bot.install_plugin('myPlugin.zip', extract_plugin=True)
**uninstall_plugin**
-| 参数名 | 类型 | 释义 | 默认值 |
-|-----------|--------|------------|-------|
-| plugin_id | String | 插件 ID | |
-| remove | Bool | 是否删除插件的原文件 | False |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-----------|------|------------|-------|
+| plugin_id | str | 插件 ID | |
+| remove | bool | 是否删除插件的原文件 | False |
```python
bot.uninstall_plugin('my-plugin')
diff --git a/docs/develop/advanced/logger.md b/docs/develop/advanced/logger.md
index d7abd6ae..160bcaab 100644
--- a/docs/develop/advanced/logger.md
+++ b/docs/develop/advanced/logger.md
@@ -55,7 +55,7 @@ TypeError: unsupported operand type(s) for +=: 'int' and 'str'
| 参数名 | 类型 | 释义 | 默认值 |
|---------|----------|--------------|------|
-| desc | String | 异常标题 | |
+| desc | str | 异常标题 | |
| ignore | List[] | 仅捕获但不输出的异常列表 | None |
| handler | Callable | 捕获异常后执行的方法 | None |
@@ -89,13 +89,13 @@ logger.info('this is a log.')
**LoggerManager**
-| 参数名 | 类型 | 释义 | 默认值 |
-|---------------|--------|-------------|------------------------------------------------------|
-| name | String | logger 模块名称 | |
-| level | Int | 日志等级 | logging.INFO |
-| formatter | String | 日志格式 | `%(asctime)s [%(name)8s][%(levelname)8s]%(message)s` |
-| save_path | String | 日志文件保存目录 | log |
-| save_filename | String | 日志文件名 | running |
+| 参数名 | 类型 | 释义 | 默认值 |
+|---------------|-----|-------------|------------------------------------------------------|
+| name | str | logger 模块名称 | |
+| level | int | 日志等级 | logging.INFO |
+| formatter | str | 日志格式 | `%(asctime)s [%(name)8s][%(levelname)8s]%(message)s` |
+| save_path | str | 日志文件保存目录 | log |
+| save_filename | str | 日志文件名 | running |
## 自定义全局日志模块
diff --git a/docs/develop/advanced/timedTask.md b/docs/develop/advanced/timedTask.md
index c1b8ce92..385e73c5 100644
--- a/docs/develop/advanced/timedTask.md
+++ b/docs/develop/advanced/timedTask.md
@@ -1,38 +1,53 @@
# 定时任务
-AmiyaBot 提供了全局定时任务管理器。你可以通过单独导入或使用 AmiyaBot 实例的装饰器注册定时任务。
+AmiyaBot 提供了全局定时任务管理器,基于 [apscheduler](https://github.com/agronholm/apscheduler)。
+
+::: warning ⚠️注意⚠️不兼容的更新
+在版本 1.6.9 开始,不再支持全局定义定时任务,以及移除了 custom 参数,使用更泛用的 apscheduler trigger 控制任务执行时机。
+
+此方法已不再支持,全局变量 tasks_control 已删除。
```python
from amiyabot import AmiyaBot, tasks_control
+
+@tasks_control.timed_task(each=120)
+async def _():
+ ...
+```
+
+bot.timed_task 装饰器的 custom 参数已删除。
+
+| 参数名 | 类型 | 释义 | 默认值 |
+|------------|--------------|----------------|-------------|
+| each | int | 循环执行间隔时间,单位(秒) | |
+| ~~custom~~ | ~~Callable~~ | ~~自定义循环规则~~ | |
+| sub_tag | str | 子标签 | default_tag |
+
+:::
+
+## 简单使用
+
+```python
+from amiyabot import AmiyaBot
from amiyabot.factory import BotHandlerFactory
bot = AmiyaBot(...) # 或 MultipleAccounts / PluginInstance 对象
-
+# 每 60 秒执行一次任务
@bot.timed_task(each=60)
async def _(instance: BotHandlerFactory):
...
-
-
-@tasks_control.timed_task(each=120)
-async def _():
- ...
```
-使用直接导入的 tasks_control(`TasksControl` 的实例)和使用 AmiyaBot 实例的装饰器是一样的,定时任务最终都会注册进单例的
-TasksControl 实例里。唯一不同的是使用 AmiyaBot
-实例注册的方法,能够接受一个 `BotHandlerFactory` 对象的参数。BotHandlerFactory 是 AmiyaBot 的超类,能够通过其 `instance`
-属性访问到适配器实例。此设计的目的是为了能够给单独的 AmiyaBot 实例注册专属的定时任务。
-
-TasksControl 实例是单例的,即使你手动实例化,返回的实例仍然会是同一个。
+## 插件开发
-::: tip 提示
-如果你在开发插件,并且你不希望在插件的卸载方法里手动取消定时任务,请务必通过 `PluginInstance.timed_task` 定义任务。
+如果你正在开发插件,并且你不希望在插件的卸载方法里手动取消定时任务,请务必通过 `PluginInstance.timed_task` 定义任务。
通过 `PluginInstance.timed_task` 定义的任务可以在插件被卸载时自动取消。
-```python {3,5}
+```python
from amiyabot import PluginInstance
+from amiyabot.factory import BotHandlerFactory
bot = PluginInstance(...)
@@ -41,86 +56,65 @@ async def _(instance: BotHandlerFactory):
...
```
-插件开发详情请查看 [文档](/develop/plugin/)。
-:::
+插件开发详情请查看 [插件开发文档](/develop/plugin/)。
## timed_task 装饰器
-| 参数名 | 类型 | 释义 | 默认值 |
-|---------|----------|-----------------------------------------------------------|---------------|
-| each | Int | 循环执行间隔时间,单位(秒) | |
-| custom | Callable | 自定义循环规则 | |
-| tag | String | 标签(仅在 TasksControl 实例里可用) | \_\_default__ |
-| sub_tag | String | 子标签 | \_\_sub__ |
+| 参数名 | 类型 | 释义 | 默认值 |
+|----------------|------|---------------------------------------------------------------------------------------------------------------|-------------|
+| each | int | 循环执行间隔时间,单位(秒),如果使用其他触发方式,请使用 kwargs 形式的 scheduler.add_job 参数 | None |
+| sub_tag | str | 子标签 | default_tag |
+| run_when_added | bool | 添加时立即执行一次任务 | default_tag |
+| **kwargs | | [scheduler.add_job](https://github.com/agronholm/apscheduler/blob/3.x/apscheduler/schedulers/base.py#L384) 参数 | |
-::: warning 提示
-TasksControl 是非严格定时的,因为执行协程会产生等待和切换的耗时。所以此装饰器定义的循环时间为"约等于"。
+::: danger 注意
+使用 kwargs 自定义定时任务时,不可使用参数 `func` 以及 `id`。
:::
-示例:定义一个**每分钟执行一次**的方法
+### 自定义执行时机
-```python
-@tasks_control.timed_task(each=60)
-async def _():
- print('A minute has passed.')
-```
-
-## 自定义执行的时机
-
-通过参数 custom 可自定义定时任务执行的时机。custom 接受一个异步函数,该函数会被**每秒执行一次**,当函数返回 `True`
-时,定时任务将会执行。
-
-传入 custom 参数后,each 参数将失效。
-方法接受一个整数参数,为 TasksControl 自运行以来的总秒数,上限为 31536000,到达上限后归零。
-
-::: warning 注意
-此方法目的是为了校验,应尽量避免在其中执行业务逻辑。
-:::
+使用 `scheduler.add_job` 参数定义任务,可以使任务的实现时机更加灵活。
```python
-async def my_check(t: int):
- if ...:
- return True
+from amiyabot import PluginInstance
+from amiyabot.factory import BotHandlerFactory
+from apscheduler.triggers.cron import CronTrigger
+bot = PluginInstance(...)
-@tasks_control.timed_task(custom=my_check)
-async def _():
+# 每个小时中的 5 分 30 秒时执行
+@bot.timed_task(trigger='cron', minute=5, second=30)
+async def _(instance: BotHandlerFactory):
+ ...
+
+# 每分钟的第 20 秒和 40 秒时执行
+@bot.timed_task(trigger=CronTrigger('20,40'))
+async def _(instance: BotHandlerFactory):
...
```
## 取消定时任务
-为需要取消的定时任务传入 tag 参数。可以是重复的,重复的 tag 会被整合为一组。
+为需要取消的定时任务传入 sub_tag 参数,可以重复,重复的 sub_tag 会被整合为一组。
-### tasks_control.remove_tag()
+### bot.remove_timed_task()
按标签名取消定时任务
-| 参数名 | 类型 | 释义 | 默认值 |
-|---------|--------|-----------|-----|
-| tag | String | 需要取消的标签名 | |
-| sub_tag | String | 需要取消的子标签名 | |
-
-示例:定义一个**每分钟执行但只执行两次**的方法
-
-```python {7}
-count = 0
+| 参数名 | 类型 | 释义 | 默认值 |
+|---------|-----|----------------|-----|
+| sub_tag | str | 需要取消的定时任务的子标签名 | |
-@tasks_control.timed_task(each=60, tag='twice')
-async def _():
- count += 1
- if count >= 2:
- tasks_control.remove_tag('twice')
-```
+示例:执行一次后取消任务
-如果设置了子标签(sub_tag),允许只取消子标签的任务。子标签是为 `BotHandlerFactory` 设计的,因为 `BotHandlerFactory`
-注册定时任务时,无法手动指定标签名(tag),其标签名固定为**工厂名称**。如果需要取消在 `BotHandlerFactory` 下的定时任务,需通过子标签名解决。
+```python
+from amiyabot import PluginInstance
+from amiyabot.factory import BotHandlerFactory
-```python {1,6}
-bot = AmiyaBot(...)
+bot = PluginInstance(...)
-@bot.timed_task(each=60, sub_tag='once')
+@bot.timed_task(each=60, sub_tag='test')
async def _(instance: BotHandlerFactory):
...
- bot.remove_timed_task('once')
+ bot.remove_timed_task('test')
```
diff --git a/docs/develop/basic/chainBuild/at.md b/docs/develop/basic/chainBuild/at.md
index 1a822484..eaa0d5be 100644
--- a/docs/develop/basic/chainBuild/at.md
+++ b/docs/develop/basic/chainBuild/at.md
@@ -10,8 +10,8 @@
| 参数名 | 类型 | 释义 | 默认值 |
|-------|------|---------------------------|-------|
-| user | Int | @ 的用户ID,默认为 Message 对象的用户 | |
-| enter | Bool | 是否 @ 用户后换行 | False |
+| user | int | @ 的用户ID,默认为 Message 对象的用户 | |
+| enter | bool | 是否 @ 用户后换行 | False |
```python
Chain(data).at(12345678).text('hello, world')
diff --git a/docs/develop/basic/chainBuild/extend.md b/docs/develop/basic/chainBuild/extend.md
index d8a763ec..2446b9dd 100644
--- a/docs/develop/basic/chainBuild/extend.md
+++ b/docs/develop/basic/chainBuild/extend.md
@@ -19,7 +19,8 @@
### 示例
-使用 [mirai-api-http 消息类型 Dice](https://docs.mirai.mamoe.net/mirai-api-http/api/MessageType.html#dice) 发送一个点数 6 的骰子魔法表情
+使用 [mirai-api-http 消息类型 Dice](https://docs.mirai.mamoe.net/mirai-api-http/api/MessageType.html#dice) 发送一个点数
+6 的骰子魔法表情
```python
Chain(data).extend(
diff --git a/docs/develop/basic/chainBuild/face.md b/docs/develop/basic/chainBuild/face.md
index ad554441..530a9ad4 100644
--- a/docs/develop/basic/chainBuild/face.md
+++ b/docs/develop/basic/chainBuild/face.md
@@ -4,9 +4,9 @@
## Chain().face()
-| 参数名 | 类型 | 释义 | 默认值 |
-|---------|-----|------|-------|
-| face_id | int | 表情ID | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|---------|-----|------|-----|
+| face_id | int | 表情ID | |
```python
Chain(data).face(175)
diff --git a/docs/develop/basic/chainBuild/forward.md b/docs/develop/basic/chainBuild/forward.md
index 89a01522..4051af8a 100644
--- a/docs/develop/basic/chainBuild/forward.md
+++ b/docs/develop/basic/chainBuild/forward.md
@@ -30,9 +30,9 @@ async def _(data: Message):
| 参数名 | 类型 | 释义 | 默认值 |
|----------|---------------------|---------------------------------------------------------------|-----|
| chain | Union\[Chain, List] | Chain 对象,可为[空 Chain](/develop/basic/sendMessage.html#空-chain) | |
-| user_id | Int | 用户 ID | |
-| nickname | String | 用户昵称(可自定义) | |
-| time | Int | 发送时间 | 0 |
+| user_id | int | 用户 ID | |
+| nickname | str | 用户昵称(可自定义) | |
+| time | int | 发送时间 | 0 |
- `user_id` 为实际 QQ 用户的 QQ 号,可以是任意人,在合并消息内显示其头像。
- `nickname` 为自定义的昵称。
@@ -50,7 +50,7 @@ await forward.add_message(Chain().text(...), user_id=..., nickname='...')
| 参数名 | 类型 | 释义 | 默认值 |
|------------|-----|-------|-----|
-| message_id | Int | 消息 ID | |
+| message_id | int | 消息 ID | |
```python
await forward.add_message_by_id(5128)
diff --git a/docs/develop/basic/chainBuild/html.md b/docs/develop/basic/chainBuild/html.md
index ad40d8a6..37b1be96 100644
--- a/docs/develop/basic/chainBuild/html.md
+++ b/docs/develop/basic/chainBuild/html.md
@@ -38,12 +38,12 @@ bot.start(launch_browser=True)
| 参数名 | 类型 | 释义 | 默认值 |
|-------------|------------|--------------|------|
-| path | String | 模板文件路径或网站URL | |
+| path | str | 模板文件路径或网站URL | |
| data | Dict, List | 传入模板文件的数据 | |
| width | int | 浏览器视窗宽度 | 1280 |
| height | int | 浏览器视窗高度 | 720 |
-| is_template | Bool | 是否为模板文件 | True |
-| render_time | Int | 渲染时间(毫秒) | 200 |
+| is_template | bool | 是否为模板文件 | True |
+| render_time | int | 渲染时间(毫秒) | 200 |
```python
Chain(data).html('template.html', {...})
diff --git a/docs/develop/basic/chainBuild/image.md b/docs/develop/basic/chainBuild/image.md
index 2444713e..eb2c9ed7 100644
--- a/docs/develop/basic/chainBuild/image.md
+++ b/docs/develop/basic/chainBuild/image.md
@@ -7,7 +7,7 @@
| 参数名 | 类型 | 释义 | 默认值 |
|--------|---------------|-----------------|-----|
| target | String, Bytes | 图片文件路径或图片 bytes | |
-| url | String | 网络图片的URL | |
+| url | str | 网络图片的URL | |
```python
Chain(data).image(target)
diff --git a/docs/develop/basic/chainBuild/markdown.md b/docs/develop/basic/chainBuild/markdown.md
index 049b442a..d400d723 100644
--- a/docs/develop/basic/chainBuild/markdown.md
+++ b/docs/develop/basic/chainBuild/markdown.md
@@ -4,16 +4,17 @@
模式渲染。建议先阅读[发送 html 生成的图片](/develop/basic/chainBuild/html.md) 了解如何启动 Chromium。
::: danger 注意
-这并非QQ机器人官方提供的[发送markdown消息](https://bot.q.qq.com/wiki/develop/api/openapi/message/post_markdown_messages.html)
+这并非 QQ
+机器人官方提供的[发送markdown消息](https://bot.q.qq.com/wiki/develop/api/openapi/message/post_markdown_messages.html)
:::
## Chain().markdown()
-| 参数名 | 类型 | 释义 | 默认值 |
-|-------------|--------|-------------|-------|
-| content | String | markdown 文本 | |
-| render_time | Int | 渲染时间(毫秒) | 200 |
-| is_dark | Bool | 是否使用暗黑样式 | False |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-------------|------|-------------|-------|
+| content | str | markdown 文本 | |
+| render_time | int | 渲染时间(毫秒) | 200 |
+| is_dark | bool | 是否使用暗黑样式 | False |
```python
Chain(data).markdown(text)
diff --git a/docs/develop/basic/chainBuild/text.md b/docs/develop/basic/chainBuild/text.md
index a4774b6c..4d1dcc76 100644
--- a/docs/develop/basic/chainBuild/text.md
+++ b/docs/develop/basic/chainBuild/text.md
@@ -4,10 +4,10 @@
## Chain().text()
-| 参数名 | 类型 | 释义 | 默认值 |
-|--------------|--------|--------------|------|
-| text | String | 内容文本 | |
-| auto_convert | Bool | 是否超出字数后转换为图片 | True |
+| 参数名 | 类型 | 释义 | 默认值 |
+|--------------|------|--------------|------|
+| text | str | 内容文本 | |
+| auto_convert | bool | 是否超出字数后转换为图片 | True |
```python
Chain(data).text('hello, world')
diff --git a/docs/develop/basic/chainBuild/textImage.md b/docs/develop/basic/chainBuild/textImage.md
index 1769637a..67c77ca1 100644
--- a/docs/develop/basic/chainBuild/textImage.md
+++ b/docs/develop/basic/chainBuild/textImage.md
@@ -6,11 +6,11 @@
| 参数名 | 类型 | 释义 | 默认值 |
|---------|------------------|-------|---------|
-| text | String | 内容文本 | |
+| text | str | 内容文本 | |
| images | List\[ImageElem] | 插入图片 | None |
-| width | Int | 图片宽度 | None |
-| height | Int | 图片高度 | None |
-| bgcolor | String | 图片背景色 | #F5F5F5 |
+| width | int | 图片宽度 | None |
+| height | int | 图片高度 | None |
+| bgcolor | str | 图片背景色 | #F5F5F5 |
```python
Chain(data).text_image('hello, world')
@@ -44,8 +44,8 @@ async def _(data: Message):
| 参数名 | 类型 | 释义 | 默认值 |
|------|------------|---------------|-----|
-| path | String | 图片路径 | |
-| size | Int | 图片大小 | |
+| path | str | 图片路径 | |
+| size | int | 图片大小 | |
| pos | (Int, Int) | 图片渲染位置 (x, y) | |
简单尝试一下,发送一张 `hello, world` 的文字图片,并在里面插入一张图片。
diff --git a/docs/develop/basic/chainBuild/voice.md b/docs/develop/basic/chainBuild/voice.md
index e2ac5525..d4d9d96f 100644
--- a/docs/develop/basic/chainBuild/voice.md
+++ b/docs/develop/basic/chainBuild/voice.md
@@ -8,10 +8,10 @@ QQ 频道机器人暂时不支持发送语音,目前仅支持 `mirai-api-http`
## Chain().voice()
-| 参数名 | 类型 | 释义 | 默认值 |
-|-------|--------|-------------|-------|
-| file | String | 语音 wav 文件路径 | |
-| title | String | 语音标题 | voice |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-------|-----|-------------|-------|
+| file | str | 语音 wav 文件路径 | |
+| title | str | 语音标题 | voice |
```python
Chain(data).voice(file)
diff --git a/docs/develop/basic/continuityMessage.md b/docs/develop/basic/continuityMessage.md
index f12829da..14e31fb5 100644
--- a/docs/develop/basic/continuityMessage.md
+++ b/docs/develop/basic/continuityMessage.md
@@ -11,10 +11,10 @@ Message 对象内置了连续对话支持。
| 参数名 | 类型 | 释义 | 默认值 |
|-------------|----------|-------------|-------|
| reply | Chain | Chain 对象 | |
-| force | Bool | 使用强制等待 | False |
-| max_time | Int | 最长等待时间(秒数) | 30 |
+| force | bool | 使用强制等待 | False |
+| max_time | int | 最长等待时间(秒数) | 30 |
| data_filter | Callable | Message 过滤器 | |
-| level | Int | 优先级 | 0 |
+| level | int | 优先级 | 0 |
使用 wait 方法实现一个简单的连续对话
@@ -58,8 +58,11 @@ async def _(data: Message):
### 关于 wait 方法你需要知道的事
- 若用户超过最长等待时间未回复,wait 会返回 `None`。
-- 同一个子频道内的同一个用户只能存在一个等待事件,当一个新的等待事件创建后,上一个未使用的等待事件会被注销并引发 `WaitEventCancel`
- 异常,进行中的业务将会被**终止**,这是符合预期的,通常这个异常会被全局异常捕捉器过滤。
+-
+
+同一个子频道内的同一个用户只能存在一个等待事件,当一个新的等待事件创建后,上一个未使用的等待事件会被注销并引发 `WaitEventCancel`
+异常,进行中的业务将会被**终止**,这是符合预期的,通常这个异常会被全局异常捕捉器过滤。
+
- 在等待时间内使用其他功能,等待也会被注销。
## Message.wait_channel()
@@ -73,11 +76,11 @@ async def _(data: Message):
| 参数名 | 类型 | 释义 | 默认值 |
|-------------|----------|-------------|-------|
| reply | Chain | Chain 对象 | |
-| force | Bool | 使用强制等待 | False |
-| clean | Bool | 是否清空消息列表 | True |
-| max_time | Int | 最长等待时间(秒数) | 30 |
+| force | bool | 使用强制等待 | False |
+| clean | bool | 是否清空消息列表 | True |
+| max_time | int | 最长等待时间(秒数) | 30 |
| data_filter | Callable | Message 过滤器 | |
-| level | Int | 优先级 | 0 |
+| level | int | 优先级 | 0 |
wait_channel 方法用于等待**子频道全体成员的回复**。
@@ -94,9 +97,9 @@ wait_channel 方法用于等待**子频道全体成员的回复**。
方法
-| 方法名 | 参数 | 释义 | 异步 |
-|-------------|-----|--------|-----|
-| close_event | | 关闭等待事件 | 否 |
+| 方法名 | 参数 | 释义 | 异步 |
+|-------------|----|--------|----|
+| close_event | | 关闭等待事件 | 否 |
下面来看一个简单的例子
diff --git a/docs/develop/basic/handleEvents.md b/docs/develop/basic/handleEvents.md
index 9b62209c..2fe4c3d1 100644
--- a/docs/develop/basic/handleEvents.md
+++ b/docs/develop/basic/handleEvents.md
@@ -30,11 +30,11 @@ async def _(event: Event, instance: BotAdapterProtocol):
### Event 对象
-| 属性 | 类型 | 释义 |
-|------------|--------|------------------|
-| appid | String | 发生该事件的 Bot AppId |
-| event_name | String | 事件名 |
-| data | Dict | 事件的内容字典 |
+| 属性 | 类型 | 释义 |
+|------------|------|------------------|
+| appid | str | 发生该事件的 Bot AppId |
+| event_name | str | 事件名 |
+| data | Dict | 事件的内容字典 |
## 频道事件
diff --git a/docs/develop/basic/messageHandler.md b/docs/develop/basic/messageHandler.md
index 5a2f6fc2..ecba4f1b 100644
--- a/docs/develop/basic/messageHandler.md
+++ b/docs/develop/basic/messageHandler.md
@@ -28,13 +28,13 @@ async def _(data: Message):
| 参数名 | 类型 | 释义 | 默认值 |
|--------------|----------|--------------------------------|-------|
-| group_id | String | 功能组ID | |
+| group_id | str | 功能组ID | |
| keywords | Union | 触发关键字 | |
| verify | Callable | 自定义校验方法,当该参数被赋值时,keywords 将会失效 | |
-| check_prefix | Bool | 是否校验前缀或指定需要校验的前缀 | True |
-| allow_direct | Bool | 是否支持通过私信使用该功能 | False |
-| direct_only | Bool | 是否仅支持私信 | False |
-| level | Int | 关键字校验成功后函数的候选默认等级 | 0 |
+| check_prefix | bool | 是否校验前缀或指定需要校验的前缀 | True |
+| allow_direct | bool | 是否支持通过私信使用该功能 | False |
+| direct_only | bool | 是否仅支持私信 | False |
+| level | int | 关键字校验成功后函数的候选默认等级 | 0 |
## 功能组
@@ -42,12 +42,12 @@ async def _(data: Message):
实例化 **GroupConfig** 对象创建一个功能组,并将其设置到 bot 实例内。
-| 参数名 | 类型 | 释义 | 默认值 |
-|--------------|--------|------------------|-------|
-| group_id | String | 功能组ID | |
-| check_prefix | Bool | 是否校验前缀或指定需要校验的前缀 | True |
-| allow_direct | Bool | 是否支持通过私信使用该功能 | False |
-| direct_only | Bool | 是否仅支持私信 | False |
+| 参数名 | 类型 | 释义 | 默认值 |
+|--------------|------|------------------|-------|
+| group_id | str | 功能组ID | |
+| check_prefix | bool | 是否校验前缀或指定需要校验的前缀 | True |
+| allow_direct | bool | 是否支持通过私信使用该功能 | False |
+| direct_only | bool | 是否仅支持私信 | False |
```python
from amiyabot import GroupConfig
@@ -189,8 +189,8 @@ async def _(data: Message):
| 属性 | 类型 | 释义 |
|----------|------|-------|
-| result | Bool | 检查结果 |
-| weight | Int | 优先级 |
+| result | bool | 检查结果 |
+| weight | int | 优先级 |
| keypoint | Any | 关键值信息 |
### 动态输出优先级的值
diff --git a/docs/develop/basic/multipleAccounts.md b/docs/develop/basic/multipleAccounts.md
index 51068e80..21497052 100644
--- a/docs/develop/basic/multipleAccounts.md
+++ b/docs/develop/basic/multipleAccounts.md
@@ -37,7 +37,8 @@ asyncio.run(
**MultipleAccounts**
-`MultipleAccounts` 可以创建一个多账号实例,参数是多个 **AmiyaBot 实例**。它拥有与 AmiyaBot 一样的所有方法,所以你可以像 AmiyaBot 一样使用它来注册你的功能。
+`MultipleAccounts` 可以创建一个多账号实例,参数是多个 **AmiyaBot 实例**。它拥有与 AmiyaBot 一样的所有方法,所以你可以像
+AmiyaBot 一样使用它来注册你的功能。
通过 MultipleAccounts 注册的功能,将被所有包含的 AmiyaBot 共享。而其中的 AmiyaBot 实例,仍能单独注册属于自己的私有功能。
```python {8}
@@ -77,8 +78,8 @@ asyncio.run(bot.start())
| 参数名 | 类型 | 释义 | 默认值 |
|-----------------|----------|----------------|-------|
| item | AmiyaBot | AmiyaBot 实例 | |
-| enable_chromium | Bool | 启动时开启 chromium | False |
-| start_up | Bool | 插入后立即启动 | True |
+| enable_chromium | bool | 启动时开启 chromium | False |
+| start_up | bool | 插入后立即启动 | True |
示例
diff --git a/docs/develop/basic/recallMessage.md b/docs/develop/basic/recallMessage.md
index b1b6430c..9d56e75e 100644
--- a/docs/develop/basic/recallMessage.md
+++ b/docs/develop/basic/recallMessage.md
@@ -40,10 +40,10 @@ async def _(err: Exception,
**AmiyaBot.instance.recall_message()**
-| 参数名 | 类型 | 释义 | 默认值 |
-|------------|--------|------------------------------------|------|
-| message_id | String | 消息ID(通常可以在 Message.message_id 获取到) | |
-| target_id | String | 频道号(群号) 或好友ID | None |
+| 参数名 | 类型 | 释义 | 默认值 |
+|------------|-----|------------------------------------|------|
+| message_id | str | 消息ID(通常可以在 Message.message_id 获取到) | |
+| target_id | str | 频道号(群号) 或好友ID | None |
```python
await bot.instance.recall_message(message_id='......', target_id='......')
diff --git a/docs/develop/basic/recvMessage.md b/docs/develop/basic/recvMessage.md
index c861f2c7..8127af49 100644
--- a/docs/develop/basic/recvMessage.md
+++ b/docs/develop/basic/recvMessage.md
@@ -26,28 +26,28 @@ async def _(data: Message):
|---------------|-----------------------------------------------------------------------------------------------|---------------------|
| instance | BotAdapterProtocol | bot 实例 |
| message | Dict | 原始消息字典 |
-| message_id | String | 消息ID |
-| message_type | String | 消息类型(适用于群聊适配器) |
+| message_id | str | 消息ID |
+| message_type | str | 消息类型(适用于群聊适配器) |
| face | List\[String] | 消息内表情列表 |
| image | List\[String] | 消息内图片列表 |
-| text | String | 消息文本(中间件处理) |
-| text_digits | String | 消息文本(中间件处理、中文转数字处理) |
-| text_unsigned | String | 消息文本(去字符处理) |
-| text_original | String | 消息文本(原始文本) |
+| text | str | 消息文本(中间件处理) |
+| text_digits | str | 消息文本(中间件处理、中文转数字处理) |
+| text_unsigned | str | 消息文本(去字符处理) |
+| text_original | str | 消息文本(原始文本) |
| text_words | List\[String] | 消息文本分词 |
| at_target | List\[String] | 消息内 @ 的对象列表 |
-| is_at | Bool | 是否 @ 机器人 |
-| is_admin | Bool | 是否为子频道管理员 |
-| is_direct | Bool | 是否是私信消息 |
-| user_id | String | 用户ID |
-| guild_id | String | 频道ID |
-| src_guild_id | String | 来源频道ID,私信下有效 |
-| channel_id | String | 子频道ID |
-| nickname | String | 用户昵称 |
-| avatar | String | 用户头像的URL |
+| is_at | bool | 是否 @ 机器人 |
+| is_admin | bool | 是否为子频道管理员 |
+| is_direct | bool | 是否是私信消息 |
+| user_id | str | 用户ID |
+| guild_id | str | 频道ID |
+| src_guild_id | str | 来源频道ID,私信下有效 |
+| channel_id | str | 子频道ID |
+| nickname | str | 用户昵称 |
+| avatar | str | 用户头像的URL |
| joined_at | ISO8601 timestamp | 用户加入频道的时间 |
| verify | [Verify 对象](/develop/basic/messageHandler.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A3%80%E6%9F%A5) | 自定义检查的结果 |
-| time | Int | 消息时间 |
+| time | int | 消息时间 |
### 方法
diff --git a/docs/develop/basic/selectAdapter.md b/docs/develop/basic/selectAdapter.md
index e788b5b3..2d88522d 100644
--- a/docs/develop/basic/selectAdapter.md
+++ b/docs/develop/basic/selectAdapter.md
@@ -42,11 +42,11 @@ bot = AmiyaBot(token=ws_token, adapter=KOOKBotInstance)
### mirai_api_http
-| 参数名 | 类型 | 释义 | 默认值 |
-|-----------|--------|----------------------|-----|
-| host | String | 访问 mah 的 ip 地址 | |
-| ws_port | Int | mah 的 websocket 服务端口 | |
-| http_port | Int | mah 的 http 服务端口 | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-----------|-----|----------------------|-----|
+| host | str | 访问 mah 的 ip 地址 | |
+| ws_port | int | mah 的 websocket 服务端口 | |
+| http_port | int | mah 的 http 服务端口 | |
```python
from amiyabot.adapters.mirai import mirai_api_http
@@ -82,11 +82,11 @@ message:
### cq_http
-| 参数名 | 类型 | 释义 | 默认值 |
-|-----------|--------|-------------------------|-----|
-| host | String | 访问 cqhttp 的 ip 地址 | |
-| ws_port | Int | cqhttp 的 websocket 服务端口 | |
-| http_port | Int | cqhttp 的 http 服务端口 | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-----------|-----|-------------------------|-----|
+| host | str | 访问 cqhttp 的 ip 地址 | |
+| ws_port | int | cqhttp 的 websocket 服务端口 | |
+| http_port | int | cqhttp 的 http 服务端口 | |
```python
from amiyabot.adapters.cqhttp import cq_http
diff --git a/docs/develop/basic/sendActiveMessage.md b/docs/develop/basic/sendActiveMessage.md
index e843c624..d80065ff 100644
--- a/docs/develop/basic/sendActiveMessage.md
+++ b/docs/develop/basic/sendActiveMessage.md
@@ -13,12 +13,12 @@ send_message 是发送主动消息的方法,它的第一个参数 chain 需要
message = Chain().text('hello')
```
-| 参数名 | 类型 | 释义 | 默认值 |
-|---------------------|--------|----------|-----|
-| chain | Chain | Chain 对象 | |
-| user_id | String | 用户ID | |
-| channel_id | String | 子频道ID | |
-| direct_src_guild_id | String | 来源频道ID | |
+| 参数名 | 类型 | 释义 | 默认值 |
+|---------------------|-------|----------|-----|
+| chain | Chain | Chain 对象 | |
+| user_id | str | 用户ID | |
+| channel_id | str | 子频道ID | |
+| direct_src_guild_id | str | 来源频道ID | |
#### 发送一条主动子频道消息
diff --git a/docs/develop/basic/sendMessage.md b/docs/develop/basic/sendMessage.md
index 1791559a..89476311 100644
--- a/docs/develop/basic/sendMessage.md
+++ b/docs/develop/basic/sendMessage.md
@@ -17,8 +17,8 @@ async def _(data: Message):
| 参数名 | 类型 | 释义 | 默认值 |
|---------------|--------------|--------------|----------------|
| data | Message | Message 对象 | None |
-| at | Bool | 是否 @ 用户 | True |
-| reference | Bool | 是否回复用户(引用消息) | False |
+| at | bool | 是否 @ 用户 | True |
+| reference | bool | 是否回复用户(引用消息) | False |
| chain_builder | ChainBuilder | Chain 辅助构建实例 | ChainBuilder() |
`Chain` 对象是构建你的消息体的工具类。任何需要发送消息的时候,消息都必须由 Chain 类创建。
diff --git a/docs/develop/basic/statement.md b/docs/develop/basic/statement.md
index 79124c15..3fc4c0ae 100644
--- a/docs/develop/basic/statement.md
+++ b/docs/develop/basic/statement.md
@@ -1,6 +1,7 @@
# 声明
-在本章后续文档中,为了减少篇幅量,将不会再在代码示例中出现 AmiyaBot 类的实例化代码。统一以变量 `bot` 表示已经实例化的 AmiyaBot 类。
+在本章后续文档中,为了减少篇幅量,将不会再在代码示例中出现 AmiyaBot 类的实例化代码。统一以变量 `bot` 表示已经实例化的
+AmiyaBot 类。
你会在诸多场景中看到 bot 变量的存在。
diff --git a/docs/develop/design.md b/docs/develop/design.md
index b42c5eab..35291e50 100644
--- a/docs/develop/design.md
+++ b/docs/develop/design.md
@@ -1,6 +1,7 @@
# 设计
-AmiyaBot 是一款 QQ 机器人框架,基于异步I/O构建,并提供了装饰器模式(Decorator Pattern)以及插件化动态导入(Dynamic import)的编程方式。
+AmiyaBot 是一款 QQ 机器人框架,基于异步I/O构建,并提供了装饰器模式(Decorator Pattern)以及插件化动态导入(Dynamic
+import)的编程方式。
内置多种适配器兼容不同的服务来源以及丰富的消息构建类型,旨在帮助你更高效地编写业务逻辑,实现你的创意。
框架结构可分为`业务模块`,`通讯模块`,`数据处理模块`,`存储模块`和`运转中心`五个组成部分。它们独立运作,并在彼此之间相互提供数据。
@@ -43,7 +44,8 @@ AmiyaBot 是一款 QQ 机器人框架,基于异步I/O构建,并提供了装
## 运转中心
-运转中心包含**事件处理**,**消息处理**、**分配器**和**日志**等各种将所有模块相连的处理单元,是业务层的主要调度模块。在接收到由适配器传入的消息后,运转中心会将消息归类并分发到不同的处理模块。
+运转中心包含**事件处理**,**消息处理**、**分配器**和**日志**
+等各种将所有模块相连的处理单元,是业务层的主要调度模块。在接收到由适配器传入的消息后,运转中心会将消息归类并分发到不同的处理模块。
### 消息处理
diff --git a/docs/develop/plugin/consoleConfig.md b/docs/develop/plugin/consoleConfig.md
index e8090ca7..a63568e0 100644
--- a/docs/develop/plugin/consoleConfig.md
+++ b/docs/develop/plugin/consoleConfig.md
@@ -6,7 +6,8 @@
## AmiyaBotPluginInstance
-对接控制台需要在创建插件实例类时使用或继承 [AmiyaBot-demo](/guide/deploy/) 项目中的 **AmiyaBotPluginInstance** 类而不是上文的 PluginInstance
+对接控制台需要在创建插件实例类时使用或继承 [AmiyaBot-demo](/guide/deploy/) 项目中的 **AmiyaBotPluginInstance** 类而不是上文的
+PluginInstance
在 demo 项目里导入 `AmiyaBotPluginInstance`
@@ -30,13 +31,13 @@ AmiyaBotPluginInstance 继承了 PluginInstance,并且拥有以下新参数和
### 参数
-| 参数名 | 类型 | 释义 | 默认值 |
-|-------------------------------|--------|----------------------|------|
-| channel_config_default | String | 频道级别配置默认值 | None |
-| channel_config_schema | String | 频道级别配置表单的 JsonSchema | None |
-| global_config_default | String | 全局级别配置默认值 | None |
-| global_config_schema | String | 全局级别配置表单的 JsonSchema | None |
-| deprecated_config_delete_days | Int | 旧配置项失效的天数 | 7 |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-------------------------------|-----|----------------------|------|
+| channel_config_default | str | 频道级别配置默认值 | None |
+| channel_config_schema | str | 频道级别配置表单的 JsonSchema | None |
+| global_config_default | str | 全局级别配置默认值 | None |
+| global_config_schema | str | 全局级别配置表单的 JsonSchema | None |
+| deprecated_config_delete_days | int | 旧配置项失效的天数 | 7 |
- 默认值和 JsonSchema 传入的值均为字符串,可以是 JSON 字符串或 `json` 文件路径。(默认值允许使用 `yaml` 文件路径)
- 在控制台中点击 `重置为默认` 时会使用默认值的 JSON 数据覆盖,创建新配置项时使用默认值的 JSON 数据填充。
@@ -54,12 +55,13 @@ bot = AmiyaBotPluginInstance(
**get_config**
-读取一个指定名称的配置项,如果没有频道级别的配置则返回同名全局配置,如果也没有全局配置,返回 `None`。传入 `channel_id=None` 可以直接读取全局配置。
+读取一个指定名称的配置项,如果没有频道级别的配置则返回同名全局配置,如果也没有全局配置,返回 `None`。传入 `channel_id=None`
+可以直接读取全局配置。
-| 参数名 | 类型 | 释义 | 默认值 |
-|-------------|--------|------|------|
-| config_name | String | 配置名称 | |
-| channel_id | String | 频道ID | None |
+| 参数名 | 类型 | 释义 | 默认值 |
+|-------------|-----|------|------|
+| config_name | str | 配置名称 | |
+| channel_id | str | 频道ID | None |
```python
config_value = bot.get_config('name', channel_id='...')
@@ -69,11 +71,11 @@ config_value = bot.get_config('name', channel_id='...')
写入配置,传入 `channel_id=None` 可以强制指定写入全局配置。
-| 参数名 | 类型 | 释义 | 默认值 |
-|--------------|--------|------------------------|------|
-| config_name | String | 配置名称 | |
-| config_value | Any | 配置值,仅支持可被 JSON 序列化的值类型 | |
-| channel_id | String | 频道ID | None |
+| 参数名 | 类型 | 释义 | 默认值 |
+|--------------|-----|------------------------|------|
+| config_name | str | 配置名称 | |
+| config_value | Any | 配置值,仅支持可被 JSON 序列化的值类型 | |
+| channel_id | str | 频道ID | None |
```python
bot.set_config('name', 'value', channel_id='...')
diff --git a/docs/develop/plugin/env.md b/docs/develop/plugin/env.md
index a6054b9f..2351b4b3 100644
--- a/docs/develop/plugin/env.md
+++ b/docs/develop/plugin/env.md
@@ -1,6 +1,7 @@
# 准备开发环境
-插件并不强制要求在 demo 的项目下开发,如果插件**不需要使用 demo 的内置模块**,那么你可以在自己任意的目录内开发而不需要克隆 demo 项目以及插件仓库的代码。
+插件并不强制要求在 demo 的项目下开发,如果插件**不需要使用 demo 的内置模块**,那么你可以在自己任意的目录内开发而不需要克隆
+demo 项目以及插件仓库的代码。
以下说明默认在 demo 项目内。
diff --git a/docs/guide/deploy/console/index.md b/docs/guide/deploy/console/index.md
index 6e5b1952..7da3c048 100644
--- a/docs/guide/deploy/console/index.md
+++ b/docs/guide/deploy/console/index.md
@@ -38,4 +38,5 @@ host: 0.0.0.0
**如果不这么做,你的服务将面临极大的安全风险!因此造成的一切后果由你自行承担!**
:::
-我们的团队成员 Initial-heart 为你提供了 [一篇通过 Nginx 反向代理加密连接的博客](https://www.initbili.top/2022/84452dac2fe6/),你可以根据这篇博客对你的连接进行加密。
+我们的团队成员 Initial-heart
+为你提供了 [一篇通过 Nginx 反向代理加密连接的博客](https://www.initbili.top/2022/84452dac2fe6/),你可以根据这篇博客对你的连接进行加密。
diff --git a/docs/guide/deploy/index.md b/docs/guide/deploy/index.md
index 8f6e8831..16a656a0 100644
--- a/docs/guide/deploy/index.md
+++ b/docs/guide/deploy/index.md
@@ -4,7 +4,8 @@
为本框架的主体项目([Github 仓库](https://github.com/AmiyaBot/Amiya-Bot))。是 [Amiya-Bot V5](https://www.amiya.cn/)
的迭代版本。本框架原名为 **AmiyaBot-core**,是围绕着主体项目进行开发的。
-本章接下来的文档,是提供给 AmiyaBot-demo 部署用户的指引,如果你的目的是开发一个完全由自己定制的机器人,请阅读[开发指南](/develop/basic/)。
+本章接下来的文档,是提供给 AmiyaBot-demo
+部署用户的指引,如果你的目的是开发一个完全由自己定制的机器人,请阅读[开发指南](/develop/basic/)。
你也可以从 AmiyaBot-demo 的基础上进行定制。但之中的一部分代码服务于其本身的《明日方舟》功能系列插件,以及控制台项目
[Amiya-Bot-console2](https://github.com/AmiyaBot/Amiya-Bot-console2),如果你不需要这些代码,也许你难以将它们抽离。请谨慎选择此方式。