|
| 1 | +# 配置 |
| 2 | + |
| 3 | +配置文件支持 INI 和 JSON 两种格式,并支持单个文件配置多个账号,或每个账号对应一个配置文件。 |
| 4 | + |
| 5 | +插件启动时(或重启时)按如下顺序依次尝试加载配置文件,一旦有一条加载成功,则停止加载(所有路径均为相对于 `app\io.github.richardchien.coolqhttpapi` 的相对路径): |
| 6 | + |
| 7 | +- `config.(cfg|ini)`(扩展名的括号和竖线表示优先加载 `.cfg`,若没有,则加载 `.ini`,下同),文件中通用配置需要放在 `[general]` 下,QQ 号特定配置放在 `[<user_id>]` 下 |
| 8 | +- `config\general.(cfg|ini)` + `config\<user_id>.(cfg|ini)`,前者是通用配置,全部放在 `[general]` 下,后者是 QQ 号特定配置,全部放在 `[<user_id>]` 下,后者覆盖前者中已存在的内容 |
| 9 | +- `config.json`,通用配置需放在根对象的 `general` 字段,QQ 号特定配置放在 QQ 号对应字段,例如 `{"general": {"host": "0.0.0.0"}, "123456": {"port": 6666}}` |
| 10 | +- `config\general.json` + `config\<user_id>.json`,配置项均直接放在根对象,后者覆盖前者中已存在的内容 |
| 11 | + |
| 12 | +**重要:如果配置文件中需要使用中文或其它非 ASCII 字符,则必须使用 UTF-8 without BOM 编码保存文件!** |
| 13 | + |
| 14 | +## 几种典型的配置文件安排方式 |
| 15 | + |
| 16 | +### 使用 INI 格式,在单个文件中存放多个账号的配置 |
| 17 | + |
| 18 | +- `app\io.github.richardchien.coolqhttpapi\config.ini` |
| 19 | + |
| 20 | +```ini |
| 21 | +[general] |
| 22 | +host = 0.0.0.0 |
| 23 | +post_url = http://192.168.0.11:8888 |
| 24 | + |
| 25 | +[12345678] |
| 26 | +access_token = Mgep4rV49rM8Jf |
| 27 | +port = 5700 |
| 28 | + |
| 29 | +[87654321] |
| 30 | +port = 5701 |
| 31 | +``` |
| 32 | + |
| 33 | +### 使用 JSON 格式,在单个文件中存放多个账号的配置 |
| 34 | + |
| 35 | +- `app\io.github.richardchien.coolqhttpapi\config.json` |
| 36 | + |
| 37 | +```json |
| 38 | +{ |
| 39 | + "general": { |
| 40 | + "host": "0.0.0.0", |
| 41 | + "post_url": "http://127.0.0.1:8080" |
| 42 | + }, |
| 43 | + "12345678": { |
| 44 | + "access_token": "Mgep4rV49rM8Jf", |
| 45 | + "port": 5700 |
| 46 | + }, |
| 47 | + "87654321": { |
| 48 | + "port": 5701 |
| 49 | + } |
| 50 | +} |
| 51 | +``` |
| 52 | + |
| 53 | +### 使用 JSON 格式,每个账号对应一个配置文件 |
| 54 | + |
| 55 | +- `app\io.github.richardchien.coolqhttpapi\config\general.json` |
| 56 | + |
| 57 | +```json |
| 58 | +{ |
| 59 | + "host": "0.0.0.0", |
| 60 | + "post_url": "http://127.0.0.1:8080" |
| 61 | +} |
| 62 | +``` |
| 63 | + |
| 64 | +- `app\io.github.richardchien.coolqhttpapi\config\12345678.json` |
| 65 | + |
| 66 | +```json |
| 67 | +{ |
| 68 | + "access_token": "Mgep4rV49rM8Jf", |
| 69 | + "port": 5700 |
| 70 | +} |
| 71 | +``` |
| 72 | + |
| 73 | +- `app\io.github.richardchien.coolqhttpapi\config\87654321.json` |
| 74 | + |
| 75 | +```json |
| 76 | +{ |
| 77 | + "port": 5701 |
| 78 | +} |
| 79 | +``` |
| 80 | + |
| 81 | +## 配置项 |
| 82 | + |
| 83 | +| 配置项名称 | 默认值 | 说明 | |
| 84 | +| -------- | ------ | --- | |
| 85 | +| `host` | `0.0.0.0` | HTTP 服务器监听的 IP | |
| 86 | +| `port` | `5700` | HTTP 服务器监听的端口 | |
| 87 | +| `use_http` | `true` | 是否开启 HTTP 接口,即通过 HTTP 调用 API,见 [通信方式的第一种](/CommunicationMethods#插件作为-http-服务端) | |
| 88 | +| `ws_host` | `0.0.0.0` | WebSocket 服务器监听的 IP | |
| 89 | +| `ws_port` | `6700` | WebSocket 服务器监听的端口 | |
| 90 | +| `use_ws` | `false` | 是否开启 WebSocket 服务器,可用于调用 API 和推送事件,见 [通信方式的第二种](/CommunicationMethods#插件作为-websocket-服务端) | |
| 91 | +| `ws_reverse_url` | 空 | 反向 WebSocket Event 和事件上报的共用地址 | |
| 92 | +| `ws_reverse_api_url` | 空 | 反向 WebSocket API 地址,如果为空,则使用 `ws_reverse_url` 指定的值 | |
| 93 | +| `ws_reverse_event_url` | 空 | 反向 WebSocket 事件上报地址,如果为空,则使用 `ws_reverse_url` 指定的值 | |
| 94 | +| `ws_reverse_reconnect_interval` | `3000` | 反向 WebSocket 客户端断线重连间隔,单位毫秒 | |
| 95 | +| `ws_reverse_reconnect_on_code_1000` | `true` | 是否在关闭状态码为 1000 的时候重连 | |
| 96 | +| `use_ws_reverse` | `false` | 是否使用反向 WebSocket 服务,即插件作为 WebSocket 客户端主动连接指定的 API 和事件上报地址,见 [通信方式的第三种](/CommunicationMethods#插件作为-websocket-客户端(反向-websocket)) | |
| 97 | +| `post_url` | 空 | 消息和事件的上报地址,通过 POST 方式请求,数据以 JSON 格式发送 | |
| 98 | +| `post_timeout` | `0` | HTTP 上报(即访问 `post_url`)的超时时间(单位:秒),0 表示不设置超时 | |
| 99 | +| `access_token` | 空 | API 访问 token,如果不为空,则会在接收到请求时验证 `Authorization` 请求头是否为 `Token xxxxxxxx`,`xxxxxxxx` 为 access token | |
| 100 | +| `secret` | 空 | 上报数据签名密钥,如果不为空,则会在 HTTP 上报时对 HTTP 正文进行 HMAC SHA1 哈希,使用 `secret` 的值作为密钥,计算出的哈希值放在上报的 `X-Signature` 请求头,例如 `X-Signature: sha1=f9ddd4863ace61e64f462d41ca311e3d2c1176e2` | |
| 101 | +| `post_message_format` | `string` | 上报消息格式,`string` 为字符串格式,`array` 为数组格式,具体见 [消息格式](/Message) | |
| 102 | +| `serve_data_files` | `false` | 是否提供请求 `data` 目录的文件的功能 | |
| 103 | +| `update_source` | `github` | 更新源,默认使用托管在 GitHub 的 [richardchien/coolq-http-api-release](https://github.com/richardchien/coolq-http-api-release) 仓库,对于酷 Q 运行在国内的情况,可以换成 `gitee` | |
| 104 | +| `update_channel` | `stable` | 更新通道,目前有 `stable`、`beta`、`alpha` 三个 | |
| 105 | +| `auto_check_update` | `false` | 是否自动检查更新(每次启用插件时检查),不启用的情况下,仍然可以在酷 Q 应用菜单中手动检查更新 | |
| 106 | +| `auto_perform_update` | `false` | 是否自动执行更新,仅在 `auto_check_update` 启用时有效,若启用,则插件将在自动检查到更新后,自动下载新版本并重启酷 Q 生效 | |
| 107 | +| `thread_pool_size` | `4` | 工作线程池大小,用于异步发送消息和一些其它小的异步任务,应根据计算机性能和实际需求适当调节,若设为 0,则使用 `CPU 核心数 * 2 + 1` | |
| 108 | +| `server_thread_pool_size` | `4` | API 服务器线程池大小,用于异步处理请求,应根据计算机性能和实际需求适当调节,若设为 0,则使用 `CPU 核心数 * 2 + 1` | |
| 109 | +| `convert_unicode_emoji` | `true` | 是否在 CQ:emoji 和实际的 Unicode 之间进行转换,转换可能耗更多时间,但日常情况下影响不大,如果你的机器人需要处理非常大段的消息(上千字),且对性能有要求,可以考虑关闭转换 | |
| 110 | +| `event_filter` | 空 | 指定事件过滤规则文件,见 [事件过滤器](/EventFilter),留空将不开启事件过滤器 | |
| 111 | +| `enable_backward_compatibility` | `false` | 是否启用旧版兼容性,启用时**事件上报**的数据将和 3.x 版本保持兼容 | |
| 112 | +| `show_log_console` | `false` | 是否显示日志输出控制台 | |
| 113 | +| `max_log_file_size` | `6291456` | 最大单日志文件大小,默认 6 MB | |
| 114 | +| `max_log_files` | `1` | 最大日志文件备份数量(采用日志轮替机制) | |
| 115 | +| `log_level` | `info` | 日志文件和日志控制台的日志等级,可选 `debug`、`info`、`warning`、`error`、`fatal` | |
| 116 | +| `use_extension` | `false` | 是否启用扩展机制,见 [扩展](/Extension) | |
| 117 | +| `disable_coolq_log` | `true` | 是否禁用酷 Q 原生日志,由于使用酷 Q 原生日志可能会导致快速重启时插件卡死,所以默认禁用,如果你不在乎重启时卡死,并且需要在酷 Q 原生日志窗口查看插件的日志,可以将此项设为 false | |
| 118 | +| `online_status_detection_method` | `log_db` | QQ 在线状态检测方式,默认(`log_db`)从酷 Q 的日志数据库判断,设为 `get_stranger_info` 可切换成通过查询陌生人接口判断(频繁请求可能导致结果不准) | |
| 119 | +| `enable_heartbeat` | `false` | 是否启用心跳机制,启用时会产生类型为 `heartbeat` 的元事件,见 [元事件](/Post#元事件) | |
| 120 | +| `heartbeat_interval` | `15000` | 产生心跳元事件的时间间隔,默认 15 秒 | |
0 commit comments