Skip to content

配置 ​

在首次启动过后,OneDisc 会自动创建一个新的配置文件(config.json)

json
{
    "account_token": "your token here",
    "system": {
        "proxy": "http://127.0.0.1:7890",
        "logger": {
            "level": 20
        }
    },
    "servers": []
}

机器人令牌(account_token) ​

类型必须默认值
字符串是无

机器人令牌,用于 OneDisc 登陆 Bot 的账号

参见:如何创建 机器人令牌(Bot Token)

系统设置(system) ​

类型必须默认值
对象是无

OneDisc 高级设置(无特殊需要不建议更改)

连接 Discord 时使用的代理(proxy) ​

类型必须默认值
字符串 / 空是无

在群管理员变动事件中使用服务器ID(guild_id_for_group_admin) ​

类型必须默认值
布尔否false

启用后,将在群组管理员变动事件(notice.group_admin)中使用群组 ID 填入 group_id 字段,且群组管理员变动时只会触发一次事件

禁用后,群组管理员变动时将在每个频道触发一次 notice.group_admin 事件

仅在文字频道触发群管理员变动事件(group_admin_text_channel) ​

类型必须默认值
布尔否false

启用后,在群组管理员变动时,将不在非文字频道触发 notice.group_admin 事件

仅在 guild_id_for_group_admin 为 false 时有效

是否启用群管理员变动事件(enable_group_admin) ​

类型必须默认值
布尔否true

日志记录工具配置(logger) ​

类型必须默认值
对象否{"level": 20}

配置日志记录工具时的参数,可参考 Python3 文档

合并转发图片类型(node_image_type) ​

类型必须默认值
字符串否jpg

将合并转发消息渲染为图片缓存并发送时使用的图片类型

数据库地址(database) ​

类型必须默认值
字符串否sqlite+aiosqlite:///缓存目录/onedisc.db

OneDisc 缓存消息使用的数据库地址

参考 Engine Configuration — SQLAlchemy 2.0 Documentation

未配置(或为 null)时,自动使用缓存目录(cache_dir)下的 onedisc.db,目录不存在会自动创建

目前可执行版只支持 SQLite3,源码版使用其他数据库需要手动安装依赖

缓存目录(cache_dir) ​

类型必须默认值
字符串否.cache

OneDisc 缓存文件、缓存索引(file_list.json / cached_url.json)与默认数据库的存放目录

缓存过期清理(cache) ​

类型必须默认值
对象否{}(全部不过期)

配置各类缓存的过期时间(秒)与自动清理间隔:

字段说明默认值
files_ttl文件缓存(files/ 目录与 node.* 节点)过期秒数0(不过期)
url_cache_ttlURL 缓存索引(cached_url.json)过期秒数0(不过期)
db_ttl本地消息数据库记录过期秒数0(不过期)
cleanup_interval自动清理检查间隔秒数3600

所有 TTL 为 0(默认)时表示永不过期,不会自动清理任何缓存;只有配置了 TTL,程序才会在每个清理周期删除过期条目

合并转发消息(merge_forward) ​

类型必须默认值
布尔否true

接收方向(Discord → OneBot):将同一频道同一发送者在 merge_forward_interval 内连续发送的「转发」消息自动合并为一条 OneBot V11 合并转发(forward)消息上报,框架收到后可通过 get_forward_msg 动作按 id 取回完整消息列表

合并转发窗口时长(merge_forward_interval) ​

类型必须默认值
整数(毫秒)否500

合并转发的收集窗口时长,窗口内到达的满足条件的转发消息会被吸收进同一条合并转发,不再单独上报

使用静态表情(use_static_face) ​

类型必须默认值
布尔否false

如启用,将在发送 CQ:face 时使用 QQ 表情包静态图

忽略机器人事件(ignore_bot_event) ​

类型必须默认值
布尔否false

如启用,将忽略所有 bot (如 APP、WebHook) 的事件

忽略不需要的实参(ignore_unneeded_args) ​

类型必须默认值
布尔否true

是否忽略动作请求中不需要的参数

如为 false,将在处理请求中发现不被动作需要的参数时返回 10004 - Unsupported Param

转义 text 段中的 MarkDown(escape_markdown) ​

类型必须默认值
布尔否false

默认最大成员数(default_max_member_count) ​

类型必须默认值
数字否-1

get_group_info (OneBot V11) 及有关接口 max_member_count 字段内容

位置消息段默认描述(location_default_content) ​

类型必须默认值
字符串否机器人向你发送了一个位置

合并转发换行符替换内容(node_linebreak_replacement) ​

类型必须默认值
字符串否<br>

解析合并转发消息节点时用于替换换行符(\n)内容

wkhtmltopdf 路径(wkhtmltopdf) ​

类型必须默认值
字符串/空否null

wkhtmltopdf 可执行程序路径

是否可以发送语音(can_send_record) ​

类型必须默认值
布尔否false

can_send_record (OneBot V11) 接口中 yes 字段内容

反向 WebSocket 最大消息大小(max_message_size) ​

类型必须默认值
数字否1048576

OneBot V11 和 OneBot V12 的反向 WebSocket 连接中最大消息大小,单位为字节,默认 1MB(即 2^20)

如果在使用过程中出现以下错误请考虑增大这一配置项的数值:

python
websockets.exceptions.ConnectionClosedError: sent 1009 (message too big); no close frame received

跳过参数类型检查(skip_params_type_checking) ​

类型必须默认值
布尔否false

心跳元事件设置(heartbeat) ​

类型必须默认值
对象否{"enable": true, 'interval': 5000}

OneBot V12 心跳元事件设置

心跳事件开关(enable) ​

类型必须默认值
布尔否true

是否启用心跳元事件

心跳事件触发间隔(interval) ​

类型必须默认值
数字否5000

心跳元事件触发间隔(单位:毫秒)

下载重试次数(download_max_retry_count) ​

类型必须默认值
数字否0

upload_file 及相关动作下载出错时的重试次数

隔离动作(action_isolation) ​

类型必须默认值
布尔否false

启用后将禁止跨协议访问动作

是否忽略自身事件(ignore_self_events) ​

类型必须默认值
布尔否true

如果此项为true,将忽略由 Bot 自身触发的事件

允许罢工(allow_strike) ​

类型必须默认值
布尔否false

如果此项为true,将在请求每次执行动作时有10%的概率返回36000(I Am Tired)错误

在事件中使用空字符串代替不支持的子类型(use_empty_for_unsupported_subtype) ​

类型必须默认值
布尔否true

在事件上报中将不支持的子类型替换为空字符串("")

如在channel_message_delete事件中,由于discord.py限制,无法判断消息为主动删除还是被管理员删除,当use_empty_for_unsupported_subtype为false时,这个事件的sub_type将被填入recall(发送者主动删除);当use_empty_for_unsupported_subtype为true时,这个事件的sub_type将被填入空字符串

默认私聊消息子类型(default_message_sub_type) ​

类型必须默认值
字符串否friend

OneBot V11 中,私聊消息事件(message.private)的 sub_type 字段内容

缓存优先(cache_first) ​

类型必须默认值
布尔否false

此项为 true 时,当同一文件同时存在于缓存 URL 索引和本地储存库(cache_dir 下的 files/ 目录)时,优先保留缓存(删除本地储存文件)

此项为 false 时,将删除缓存库的索引

在启动时检查更新(check_update) ​

类型必须默认值
布尔否true

在全局范围同步命令(sync_globally) ​

类型必须默认值
布尔否false

这可能需要一些时间(大约为一个小时)

指令响应超时时的提示(command_timeout_message) ​

类型必须默认值
字符串否timeout

指令前缀(prefix) ​

类型必须默认值
字符串否/

在收到指令调用请求后添加的指令前缀

同步指令的频道(sync_guilds) ​

类型必须默认值
数组否[]

是否忽略不支持的消息段(ignore_unsupported_segment) ​

类型必须默认值
布尔否false

如为false,将在发送消息并解析到不支持的消息段时返回 10005 错误

启动完成日志提示内容(started_text) ​

类型必须默认值
字符串否OneDisc 已成功启动

OneDisc 完成启动后打印的日志的内容

是否启用两级群组事件(enable_channel_event) ​

类型必须默认值
布尔否false

如果此项为 true,将以 message.channel 事件推送消息

如为 false 将以 message.group 事件推送消息

连接方式(servers) ​

类型必须默认值
数组是无

设置 OneDisc 的连接方式,可以创建多个连接方式

OneBot V12 ​

HTTP
json
{
    "type": "http",
    "host": "0.0.0.0",
    "port": 8080,
    "protocol_version": 12,
    "access_token": null,
    "event_enabled": false,
    "event_buffer_size": 0
}
项目类型必须默认值备注
type字符串是无连接的类型,为http
protocol_version数字否12协议版本,为 12
host字符串否0.0.0.0HTTP 服务器 IP
port数字否8080HTTP 服务器端口
access_token字符串/空是null访问令牌
event_enabled布尔否false是否启用 get_latest_events 元动作
event_buffer_size数字否0事件缓冲区大小
HTTP WebHook
json
{
    "type": "http-webhook",
    "url": null,
    "protocol_version": 12,
    "access_token": null,
    "timeout": 0
}
项目类型必须默认值说明
type字符串是无连接类型,为http-webhook
protocol_version数字否12协议版本,为 12
url字符串是无上报地址
access_token字符串/空否null访问令牌
timeout数字否0超时时间(单位毫秒,为0不启用)
WebSocket
json
{
    "type": "ws",
    "protocol_version": 12,
    "host": "0.0.0.0",
    "port": 5700,
    "access_token": null
}
项目类型必须默认值说明
type字符串是无连接类型,为ws
protocol_version数字否12协议版本,为 12
port数字否5700WebSocket 服务器端口
host字符串否0.0.0.0WebSocket 服务器 IP
access_token字符串/空否null访问令牌
反向 WebSocket
json
{
    "type": "ws-reverse",
    "url": "",
    "protocol_version": 12,
    "access_token": null,
    "reconnect_interval": 5000
}
项目类型必须默认值说明
type字符串是无连接类型,为ws-reverse
protocol_version数字否12协议版本,为 12
url字符串是无WebSocket 客户端连接地址
access_token字符串/空否null访问令牌
reconnect_interval数字否5000重连间隔(单位毫秒)

OneBot V11 ​

TIP

在所有采用 OneBot V11 标准的连接中,请确保指定 "protocol_version": 11(默认值为 12 )。

若不正确设定,将会收到「无效的连接类型或协议版本」的提示。

HTTP
json
{
    "type": "http",
    "protocol_version": 11,
    "host": "0.0.0.0",
    "port": 5700,
    "access_token": null
}
项目类型必须默认值说明
type字符串是无连接类型,为 http
protocol_version数字是12协议版本,为 11
host字符串否0.0.0.0HTTP 服务器 IP
port数字否5700HTTP 服务器端口
access_token字符串/空否null访问令牌
HTTP Post
json
{
    "type": "http-post",
    "protocol_version": 11,
    "url": "",
    "timeout": 0,
    "secret": null
}
项目类型必须默认值说明
type字符串是无连接类型,为 http
protocol_version数字是12协议版本,为 11
url字符串是无HTTP 连接地址
secret字符串/空否null请求密钥
WebSocket
json
{
    "type": "ws",
    "protocol_version": 11,
    "host": "0.0.0.0",
    "port": 6700,
    "access_token": null
}
项目类型必须默认值说明
type字符串是无连接类型,为ws
protocol_version数字是12协议版本,为 11
port数字否6700WebSocket 服务器端口
host字符串否0.0.0.0WebSocket 服务器 IP
access_token字符串/空否null访问令牌
反向 WebSocket
json
{
    "type": "ws-reverse",
    "protocol_version": 11,
    "url": "",
    "api_url": "",
    "event_url": "",
    "reconnect_interval": 3000,
    "use_universal_client": false,
    "access_token": null
}
项目类型必须默认值说明
type字符串是无连接类型,为ws-reverse
protocol_version数字是12协议版本,为 11
url字符串否无WebSocket 服务器地址
api_url字符串否无WebSocket API 服务器地址,为空时填入 url 字段的配置
event_url字符串否无WebSocket Event 服务器地址,为空时填入 url 字段的配置
use_universal_client布尔否false是否启用 WebSocket Universal 客户端
access_token字符串/空否null访问令牌