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),如果你不需要这些代码,也许你难以将它们抽离。请谨慎选择此方式。