Skip to content

配置文件详解

字数
5016 字
阅读时间
22 分钟

IMPORTANT

在本节中,我们将详细介绍配置文件的各个配置项。

.env:

  • 位置: 处于karin的根目录下: karin/.env
  • 描述: 存放karin的环境变量

.env 文件

温馨提示

环境变量配置文件,用于配置一些基础的运行环境参数 支持在控制台通过log <level>命令动态更新日志等级哦~

点击展开配置详细说明
配置项类型描述
HTTP_ENABLEboolean是否启用HTTP服务
HTTP_PORTnumberHTTP服务监听端口
HTTP_HOSTstringHTTP服务监听地址
HTTP_AUTH_KEYstringHTTP服务鉴权密钥,仅用于karin自身Api
WS_SERVER_AUTH_KEYstringWebSocket服务器鉴权密钥
REDIS_ENABLEboolean是否启用Redis,关闭后将使用内部虚拟Redis
PM2_RESTARTboolean重启是否调用pm2,如果不调用则会直接关机
LOG_LEVELstring日志等级,可选值: trace debug info warn error fatal
LOG_DAYS_TO_KEEPnumber日志保留天数
LOG_MAX_LOG_SIZEnumber日志文件最大大小(字节),如果大于0则启用日志分割
LOG_FNC_COLORstringlogger.fnc的颜色,支持HEX格式
FFMPEG_PATHstringffmpeg可执行文件路径
FFPROBE_PATHstringffprobe可执行文件路径
FFPLAY_PATHstringffplay可执行文件路径
RUNTIMEstring运行时环境,固定为node
点击展开默认配置
ini
# 是否启用HTTP
HTTP_ENABLE=true
# HTTP监听端口
HTTP_PORT=7777
# HTTP监听地址
HTTP_HOST=0.0.0.0
# HTTP鉴权秘钥 仅用于karin自身Api
HTTP_AUTH_KEY=default
# ws_server鉴权秘钥
WS_SERVER_AUTH_KEY=

# 是否启用Redis 关闭后将使用内部虚拟Redis
REDIS_ENABLE=true
# 重启是否调用pm2 如果不调用则会直接关机 此配置适合有进程守护的程序
PM2_RESTART=true

# 日志等级
LOG_LEVEL=info
# 日志保留天数
LOG_DAYS_TO_KEEP=7
# 日志文件最大大小 如果此项大于0则启用日志分割
LOG_MAX_LOG_SIZE=0
# logger.fnc颜色
LOG_FNC_COLOR="#E1D919"

# ffmpeg
FFMPEG_PATH=
# ffprobe
FFPROBE_PATH=
# ffplay
FFPLAY_PATH=

# 这里请勿修改
RUNTIME=node
点击展开示例配置
ini
# 启用HTTP服务并监听所有地址的7777端口
HTTP_ENABLE=true
HTTP_PORT=7777
HTTP_HOST=0.0.0.0
# 设置API鉴权密钥
HTTP_AUTH_KEY=your_secret_key
# 设置WebSocket服务器鉴权密钥
WS_SERVER_AUTH_KEY=your_ws_key

# 启用Redis服务
REDIS_ENABLE=true
# 启用PM2重启
PM2_RESTART=true

# 设置日志级别为debug以获取更详细的日志
LOG_LEVEL=debug
# 保留30天的日志
LOG_DAYS_TO_KEEP=30
# 设置日志分割大小为10MB
LOG_MAX_LOG_SIZE=10485760
# 设置logger.fnc的颜色为蓝色
LOG_FNC_COLOR="#4169E1"

# 配置ffmpeg相关路径
FFMPEG_PATH=/usr/local/bin/ffmpeg
FFPROBE_PATH=/usr/local/bin/ffprobe
FFPLAY_PATH=/usr/local/bin/ffplay

RUNTIME=node

@karinjs:

  • 位置: 处于karin的根目录下: karin/@karinjs

  • 描述: 存放插件以及karin本身的配置、临时、数据文件等

  • 结构: 除了config data temp文件夹外,其余文件夹均属于插件的配置文件夹

  • 插件的配置文件夹一般情况会自动生成

    • 插件包名称: 名称来源于package.jsonname字段,并且karin会将其中的/替换为-
    • 位置: karin/@karinjs/<plugin_name>

config 目录

  • 位置: karin/@karinjs/config
  • 描述: 存放karin的配置文件夹
  • 结构:
    • adapter.json: 适配器配置文件
    • config.json: karin基本配置文件
    • privates.json: 好友、频道私信 触发事件相关的配置文件
    • groups.json: 群、频道 触发事件相关的配置文件
    • pm2.json: pm2配置文件
    • redis.json: redis配置文件
    • render.json: 渲染器配置

adapter.json

温馨提示

适配器配置文件,用于配置各种协议适配器

点击展开配置详细说明
配置项类型描述
consoleobject控制台适配器配置
console.isLocalboolean是否为只允许本地访问
console.tokenstring如果isLocalfalse,则需要设置token
console.hoststring打印的资源地址
onebotobjectonebot适配器配置
onebot.ws_serverobjectWebSocket服务器配置(反向ws)
onebot.ws_server.enableboolean是否启用WebSocket服务器
onebot.ws_server.timeoutnumberonebot发送请求超时时间
onebot.ws_clientobject[]WebSocket客户端配置(正向ws)
onebot.ws_client[].enableboolean是否启用此WebSocket客户端
onebot.ws_client[].urlstring正向ws的地址
onebot.ws_client[].tokenstring正向ws的鉴权令牌
onebot.http_serverobject[]HTTP服务器配置
onebot.http_server[].enableboolean是否启用此HTTP服务器
onebot.http_server[].self_idstring正向http的QQ号
onebot.http_server[].urlstringhttp服务的地址
onebot.http_server[].tokenstringhttp服务的鉴权令牌
点击展开默认配置
json
{
  "console": {
    "isLocal": true,
    "token": "",
    "host": ""
  },
  "onebot": {
    "ws_server": {
      "enable": true,
      "timeout": 120
    },
    "ws_client": [
      {
        "enable": false,
        "url": "ws://127.0.0.1:7778",
        "token": ""
      }
    ],
    "http_server": [
      {
        "enable": false,
        "self_id": "default",
        "url": "http://127.0.0.1:6099",
        "token": ""
      }
    ]
  }
}
点击展开示例配置
json
{
  "console": {
    "isLocal": false,           // 允许远程访问
    "token": "abc123",          // 设置远程访问令牌
    "host": "example.com"       // 设置资源访问地址
  },
  "onebot": {
    "ws_server": {
      "enable": true,           // 启用反向WebSocket服务器
      "timeout": 60            // 设置请求超时时间为60秒
    },
    "ws_client": [
      {
        "enable": true,         // 启用第一个正向WebSocket客户端
        "url": "ws://bot1.example.com:6700",  // 连接到第一个机器人
        "token": "xyz789"       // 设置连接令牌
      },
      {
        "enable": true,         // 启用第二个正向WebSocket客户端
        "url": "ws://bot2.example.com:6700",  // 连接到第二个机器人
        "token": "uvw321"       // 设置连接令牌
      }
    ],
    "http_server": [
      {
        "enable": true,         // 启用第一个HTTP服务器
        "self_id": "123456789", // 设置机器人QQ号
        "url": "http://bot1.example.com:5700",  // 第一个机器人的API地址
        "token": "def456"       // 设置访问令牌
      },
      {
        "enable": true,         // 启用第二个HTTP服务器
        "self_id": "987654321", // 设置机器人QQ号
        "url": "http://bot2.example.com:5700",  // 第二个机器人的API地址
        "token": "ghi789"       // 设置访问令牌
      }
    ]
  }
}

config.json

温馨提示

karin基本配置文件

点击展开配置详细说明

注意

对于黑白名单配置,是可以同时存在的,并且黑名单的优先级更高
例如: 如果一个用户同时处于黑白名单中,那么他将被视为黑名单用户

配置项类型描述
masterstring[]Bot主人列表
adminstring[]Bot管理员列表
userobject用户管理配置
user.enableboolean是否启用用户事件
user.enable_liststring[]用户白名单
user.disable_liststring[]用户黑名单
friendobject好友管理配置
friend.enableboolean是否启用好友消息事件
friend.enable_liststring[]好友白名单
friend.disable_liststring[]好友黑名单
friend.log_enable_liststring[]好友日志白名单
friend.log_disable_liststring[]好友日志黑名单
groupobject群管理配置
group.enableboolean是否启用群消息事件
group.enable_liststring[]群白名单
group.disable_liststring[]群黑名单
group.log_enable_liststring[]群日志白名单
group.log_disable_liststring[]群日志黑名单
directsobject频道私信管理配置
directs.enableboolean是否启用私信消息事件
directs.enable_liststring[]私信白名单
directs.disable_liststring[]私信黑名单
directs.log_enable_liststring[]私信日志白名单
directs.log_disable_liststring[]私信日志黑名单
guildsobject频道管理配置
guilds.enableboolean是否启用频道消息事件
guilds.enable_liststring[]频道白名单
guilds.disable_liststring[]频道黑名单
guilds.log_enable_liststring[]频道日志白名单
guilds.log_disable_liststring[]频道日志黑名单
channelsobject频道消息管理配置
channels.enableboolean是否启用频道消息事件
channels.enable_liststring[]频道白名单
channels.disable_liststring[]频道黑名单
channels.log_enable_liststring[]频道日志白名单
channels.log_disable_liststring[]频道日志黑名单
点击展开默认配置
json
{
  "master": [
    "console"
  ],
  "admin": [],
  "user": {
    "enable": true,
    "enable_list": [],
    "disable_list": []
  },
  "friend": {
    "enable": true,
    "enable_list": [],
    "disable_list": [],
    "log_enable_list": [],
    "log_disable_list": []
  },
  "group": {
    "enable": true,
    "enable_list": [],
    "disable_list": [],
    "log_enable_list": [],
    "log_disable_list": []
  },
  "directs": {
    "enable": true,
    "enable_list": [],
    "disable_list": [],
    "log_enable_list": [],
    "log_disable_list": []
  },
  "guilds": {
    "enable": true,
    "enable_list": [],
    "disable_list": [],
    "log_enable_list": [],
    "log_disable_list": []
  },
  "channels": {
    "enable": true,
    "enable_list": [],
    "disable_list": [],
    "log_enable_list": [],
    "log_disable_list": []
  }
}
点击展开示例配置
json
{
  "master": [
    "console",  // 默认控制台用户
    "123456789" // 示例:添加一个主人用户
  ],
  "admin": [
    "987654321" // 示例:添加一个管理员
  ],
  "user": {
    "enable": true,  // 示例:启用用户事件
    "enable_list": [
      "111111111" // 示例:允许此用户使用机器人
    ],
    "disable_list": [
      "222222222" // 示例:禁止此用户使用机器人
    ]
  },
  "friend": {
    "enable": true,
    "enable_list": [
      "333333333" // 示例:允许此好友触发事件
    ],
    "disable_list": [
      "444444444" // 示例:禁止此好友触发事件
    ],
    "log_enable_list": [
      "555555555" // 示例:记录此好友的日志
    ],
    "log_disable_list": [
      "666666666" // 示例:不记录此好友的日志
    ]
  },
  "group": {
    "enable": true,
    "enable_list": [
      "777777777" // 示例:允许此群触发事件
    ],
    "disable_list": [
      "888888888" // 示例:禁止此群触发事件
    ],
    "log_enable_list": [
      "999999999" // 示例:记录此群的日志
    ],
    "log_disable_list": [
      "000000000" // 示例:不记录此群的日志
    ]
  },
  "directs": {
    "enable": true,
    "enable_list": [
      "111222333" // 示例:允许此用户私信触发事件
    ],
    "disable_list": [
      "444555666" // 示例:禁止此用户私信触发事件
    ],
    "log_enable_list": [
      "777888999" // 示例:记录此用户的私信日志
    ],
    "log_disable_list": [
      "000111222" // 示例:不记录此用户的私信日志
    ]
  },
  "guilds": {
    "enable": true,
    "enable_list": [
      "333444555" // 示例:允许此频道触发事件
    ],
    "disable_list": [
      "666777888" // 示例:禁止此频道触发事件
    ],
    "log_enable_list": [
      "999000111" // 示例:记录此频道的日志
    ],
    "log_disable_list": [
      "222333444" // 示例:不记录此频道的日志
    ]
  },
  "channels": {
    "enable": true,
    "enable_list": [
      "555666777" // 示例:允许此子频道触发事件
    ],
    "disable_list": [
      "888999000" // 示例:禁止此子频道触发事件
    ],
    "log_enable_list": [
      "111222333" // 示例:记录此子频道的日志
    ],
    "log_disable_list": [
      "444555666" // 示例:不记录此子频道的日志
    ]
  }
}

privates.json

温馨提示

好友 频道私信 触发事件相关的配置文件

点击展开配置详细说明
配置项类型描述
defaultobject全局默认配置,自定义配置中缺少的会从全局配置结构合并
default.cdnumber好友消息冷却时间,单位秒,0则无限制
default.modenumber机器人响应模式
0-所有 2-仅回应管理员 3-仅回应别名
5-管理员无限制,非管理员别名 6-仅回应主人
default.aliasstring[]机器人别名,设置后别名+指令触发机器人
default.enablestring[]白名单插件、功能,只有在白名单中的插件、功能才会响应
<插件名称> <插件名称>:<插件文件后缀名称|插件方法名称>
default.disablestring[]黑名单插件、功能,黑名单中的插件、功能不会响应
<插件名称> <插件名称>:<插件文件后缀名称|插件方法名称>
Bot:<selfId>object单个Bot的配置,结构同 default
Bot:<selfId>:<userId>object单个Bot中特定用户的配置,结构同 default
点击展开默认配置
json
{
  "default": {
    "cd": 0,
    "mode": 0,
    "alias": [],
    "enable": [],
    "disable": []
  },
  "Bot:selfId": {
    "cd": 0,
    "mode": 0,
    "alias": [],
    "enable": [],
    "disable": []
  },
  "Bot:selfId:userId": {
    "cd": 0,
    "mode": 0,
    "alias": [],
    "enable": [],
    "disable": []
  }
}
点击展开示例配置
json
{
  "default": {
    "cd": 1,                // 全局消息冷却时间1秒
    "mode": 0,              // 响应所有消息
    "alias": ["k"],         // 设置全局别名为"k"
    "enable": [
      "karin-plugin-test",           // 仅启用整个插件
      "karin-plugin-test:app.js",    // 仅启用插件中的特定文件
      "karin-plugin-test:测试转发"    // 仅启用插件中的特定功能
    ],
    "disable": [
      "karin-plugin-demo",           // 禁用整个插件
      "karin-plugin-demo:app.js"     // 禁用插件中的特定文件
    ]
  },
  "Bot:123456": {           // 机器人123456的专属配置
    "cd": 0,               // 无冷却时间限制
    "mode": 2,             // 仅回应管理员
    "alias": ["bot"],      // 设置此机器人的别名为"bot"
    "enable": [],          // 不设置白名单
    "disable": []          // 不设置黑名单
  },
  "Bot:123456:789012": {    // 机器人123456对用户789012的专属配置
    "cd": 5,               // 该用户消息冷却时间5秒
    "mode": 3,             // 仅回应别名
    "alias": ["小助手"],    // 设置对该用户的别名为"小助手"
    "enable": [
      "karin-plugin-chat"  // 仅启用聊天插件
    ],
    "disable": []          // 不设置黑名单
  }
}

groups.json

温馨提示

群、频道 触发事件相关的配置文件

点击展开配置详细说明
配置项类型描述
defaultobject全局默认配置,自定义配置中缺少的会从全局配置结构合并
default.cdnumber群聊、频道中所有消息冷却时间,单位秒,0则无限制
default.userCDnumber群聊、频道中每个人的消息冷却时间,单位秒,0则无限制。注意,开启后所有消息都会进CD,无论是否触发插件
default.modenumber机器人响应模式
0-所有 1-仅@机器人 2-仅回应管理员
3-仅回应别名 4-别名或@机器人
5-管理员无限制,成员别名或@机器人 6-仅回应主人
default.aliasstring[]机器人别名,设置后别名+指令触发机器人
default.enablestring[]白名单插件、功能,只有在白名单中的插件、功能才会响应
<插件名称> <插件名称>:<插件文件后缀名称|插件方法名称>
default.disablestring[]黑名单插件、功能,黑名单中的插件、功能不会响应
<插件名称> <插件名称>:<插件文件后缀名称|插件方法名称>
default.memberEnablestring[]群、频道成员单独白名单
default.memberDisablestring[]群、频道成员单独黑名单
Bot:<selfId>object单个Bot的配置,结构同 default
Bot:<selfId>:<groupId>object单个Bot中特定群的配置,结构同 default
Bot:<selfId>:<guildId>object单个Bot中特定频道的配置,结构同 default
Bot:<selfId>:<guildId>:<channelId>object单个Bot中特定频道的子频道配置,结构同 default
点击展开默认配置
json
{
  "default": {
    "cd": 0,
    "userCD": 0,
    "mode": 0,
    "alias": [],
    "enable": [],
    "disable": [],
    "memberEnable": [],
    "memberDisable": []
  },
  "Bot:selfId": {
    "cd": 0,
    "userCD": 0,
    "mode": 0,
    "alias": [],
    "enable": [],
    "disable": [],
    "memberEnable": [],
    "memberDisable": []
  },
  "Bot:selfId:groupId": {
    "cd": 0,
    "userCD": 0,
    "mode": 0,
    "alias": [],
    "enable": [],
    "disable": [],
    "memberEnable": [],
    "memberDisable": []
  },
  "Bot:selfId:guildId": {
    "cd": 0,
    "userCD": 0,
    "mode": 0,
    "alias": [],
    "enable": [],
    "disable": [],
    "memberEnable": [],
    "memberDisable": []
  },
  "Bot:selfId:guildId:channelId": {
    "cd": 0,
    "userCD": 0,
    "mode": 0,
    "alias": [],
    "enable": [],
    "disable": [],
    "memberEnable": [],
    "memberDisable": []
  }
}
点击展开示例配置
json
{
  "default": {
    "cd": 1,                // 全局消息冷却时间1秒
    "userCD": 5,            // 每个用户消息冷却时间5秒
    "mode": 4,              // 别名或@机器人时响应
    "alias": ["k"],         // 设置全局别名为"k"
    "enable": [
      "karin-plugin-test",           // 仅启用整个插件
      "karin-plugin-test:app.js",    // 仅启用插件中的特定文件
      "karin-plugin-test:测试转发"    // 仅启用插件中的特定功能
    ],
    "disable": [
      "karin-plugin-demo",           // 禁用整个插件
      "karin-plugin-demo:app.js"     // 禁用插件中的特定文件
    ],
    "memberEnable": [
      "123456789"           // 允许此成员使用机器人
    ],
    "memberDisable": [
      "987654321"           // 禁止此成员使用机器人
    ]
  },
  "Bot:123456": {           // 机器人123456的专属配置
    "cd": 0,               // 无全局冷却时间限制
    "userCD": 3,           // 每个用户消息冷却时间3秒
    "mode": 1,             // 仅@机器人时响应
    "alias": ["bot"],      // 设置此机器人的别名为"bot"
    "enable": [],          // 不设置白名单
    "disable": [],         // 不设置黑名单
    "memberEnable": [],    // 不设置成员白名单
    "memberDisable": []    // 不设置成员黑名单
  },
  "Bot:123456:789012": {    // 机器人123456在群789012中的专属配置
    "cd": 2,               // 群内消息冷却时间2秒
    "userCD": 10,          // 群内每个用户消息冷却时间10秒
    "mode": 5,             // 管理员无限制,成员需要别名或@
    "alias": ["群助手"],    // 设置在此群的别名为"群助手"
    "enable": [
      "karin-plugin-chat"  // 仅启用聊天插件
    ],
    "disable": [],         // 不设置黑名单
    "memberEnable": [
      "111222333"          // 允许此群成员使用机器人
    ],
    "memberDisable": [
      "444555666"          // 禁止此群成员使用机器人
    ]
  }
}

pm2.json

温馨提示

pm2配置项 pm2配置不提供示例配置

点击展开配置详细说明
配置项类型描述
linesnumber日志最多显示行数
appsobject[]pm2配置数组
apps.namestringpm2应用名称
apps.scriptstring入口文件
apps.autorestartboolean自动重启
apps.max_restartsnumber重启次数
apps.max_memory_restartstring最大重启内存
apps.restart_delaynumber重启延迟
apps.merge_logsboolean合并日志
apps.error_filestring错误日志
apps.out_filestring输出日志
点击展开默认配置
json
{
  "lines": 1000,
  "apps": [
    {
      "name": "karin",
      "script": "./node_modules/node-karin/dist/cli/pm2.js",
      "autorestart": true,
      "max_restarts": 60,
      "max_memory_restart": "1G",
      "restart_delay": 2000,
      "merge_logs": true,
      "error_file": "./@karinjs/logs/pm2_error.log",
      "out_file": "./@karinjs/logs/pm2_out.log"
    }
  ]
}

redis.json

温馨提示

redis配置项
redis配置不提供示例配置

点击展开配置详细说明
配置项类型描述
urlstringRedis连接URL,优先级高于其他配置项
socketobject套接字连接属性
socket.hoststringRedis服务器地址
socket.portnumberRedis服务器端口
usernamestringRedis用户名
passwordstringRedis密码
databasenumberRedis数据库索引 0-15
点击展开默认配置
json
{
  "url": "redis://127.0.0.1:6379",
  "socket": {
    "host": "127.0.0.1",
    "port": 6379
  },
  "username": "",
  "password": "",
  "database": 0
}

render.json

温馨提示

渲染服务配置文件

点击展开配置详细说明
配置项类型描述
ws_serverobjectWebSocket服务器配置(反向ws)
ws_server.enableboolean是否启用WebSocket服务器
ws_clientobject[]WebSocket客户端配置(正向ws)
ws_client[].enableboolean是否启用此WebSocket客户端
ws_client[].urlstringWebSocket连接地址
ws_client[].tokenstringWebSocket连接令牌
http_serverobject[]HTTP服务器配置(反向http)
http_server[].enableboolean是否启用此HTTP服务器
http_server[].urlstringHTTP服务器地址
http_server[].tokenstringHTTP服务器令牌
点击展开默认配置
json
{
  "ws_server": {
    "enable": true
  },
  "ws_client": [
    {
      "enable": false,
      "url": "ws://127.0.0.1:7005/ws",
      "token": "123456"
    }
  ],
  "http_server": [
    {
      "enable": false,
      "url": "http://127.0.0.1:7005",
      "token": "123456"
    }
  ]
}
点击展开示例配置
json
{
  "ws_server": {
    "enable": true          // 启用WebSocket服务器(反向ws)
  },
  "ws_client": [
    {
      "enable": true,       // 启用第一个WebSocket客户端
      "url": "ws://127.0.0.1:7005/ws",  // 连接到本地7005端口
      "token": "abc123"     // 设置连接令牌
    },
    {
      "enable": true,       // 启用第二个WebSocket客户端
      "url": "ws://render.example.com/ws",  // 连接到远程渲染服务
      "token": "def456"     // 设置连接令牌
    }
  ],
  "http_server": [
    {
      "enable": true,       // 启用第一个HTTP服务器
      "url": "http://127.0.0.1:7005",   // 本地渲染服务地址
      "token": "xyz789"     // 设置访问令牌
    },
    {
      "enable": true,       // 启用第二个HTTP服务器
      "url": "http://render.example.com",  // 远程渲染服务地址
      "token": "uvw321"     // 设置访问令牌
    }
  ]
}

data 目录

  • 位置: karin/@karinjs/data
  • 描述: data目录用于存放一些数据文件,如sqlite数据库文件等
  • 结构:
    • db/level: 存放level数据库文件
    • db/redis-level: 存放伪造的redis持久化数据文件
    • 其余文件夹: 均属于插件数据文件夹

temp 目录

  • 位置: karin/@karinjs/temp
  • 描述: temp目录用于存放一些临时文件,如ffmpeg临时文件等
  • 结构:
    • html: 存放模板渲染后的html文件
    • 其余文件夹: 均属于插件临时文件夹