配置文件
Zhin.js 使用 zhin.config.yml 作为主配置文件。这个文件控制机器人的所有行为。
配置文件位置
配置文件位于项目根目录:
my-bot/
├── zhin.config.yml ← 配置文件
├── src/
└── package.json基础配置
日志级别
控制输出的日志详细程度:
yaml
# 日志级别 (0=debug, 1=info, 2=warn, 3=error)
log_level: 1级别说明:
0(debug) - 输出所有日志,包括调试信息(开发时使用)1(info) - 输出普通信息和以上(推荐)2(warn) - 只输出警告和错误3(error) - 只输出错误信息
示例:开发时设置为 0,生产环境设置为 1 或 2。
插件目录
指定插件的搜索路径:
yaml
plugin_dirs:
- node_modules # npm 安装的插件
- ./src/plugins # 你的本地插件说明:
node_modules- 通过 npm/pnpm 安装的插件包./src/plugins- 你自己编写的插件文件
核心服务
启用框架的核心服务:
yaml
services:
- process # 进程管理
- config # 配置管理
- command # 命令系统
- component # 组件系统
- permission # 权限管理
- cron # 定时任务说明:这些是框架的核心功能,通常不需要修改。
插件列表
启用要使用的插件:
yaml
plugins:
- "@zhin.js/http" # HTTP 服务
- "@zhin.js/console" # Web 控制台
- "@zhin.js/adapter-sandbox" # 终端适配器
- my-plugin # 你的本地插件注意:
- npm 插件使用完整包名(如
@zhin.js/http) - 本地插件使用文件名(如
my-plugin对应src/plugins/my-plugin.ts)
数据库配置
配置数据存储:
yaml
database:
dialect: sqlite # 数据库类型
filename: ./data/database.db # 数据库文件路径支持的数据库类型:
sqlite- SQLite(推荐,无需额外配置)mysql- MySQL(需要额外安装驱动)postgres- PostgreSQL(需要额外安装驱动)
SQLite 配置:
yaml
database:
dialect: sqlite
filename: ./data/database.db # 相对于项目根目录MySQL 配置:
yaml
database:
dialect: mysql
host: localhost
port: 3306
username: root
password: ${DB_PASSWORD} # 从环境变量读取
database: zhinHTTP 服务配置
配置 Web 服务器和 API:
yaml
http:
port: 8086 # 端口号
username: ${username} # 用户名(从环境变量读取)
password: ${password} # 密码(从环境变量读取)
base: /api # API 基础路径环境变量:
在项目根目录的 .env 文件中设置:
bash
username=admin
password=your_secure_password为什么使用环境变量?
- ✅ 安全 - 密码不会提交到 Git
- ✅ 灵活 - 不同环境使用不同配置
- ✅ 标准 - 符合 12-Factor App 原则
修改端口:
如果 8086 端口被占用,可以改成其他端口:
yaml
http:
port: 3000 # 改成 3000Web 控制台配置
配置 Web 管理界面:
yaml
console:
enabled: true # 是否启用控制台
lazyLoad: false # 是否延迟加载(开发时建议 false)配置说明:
enabled: true- 启用 Web 控制台enabled: false- 禁用 Web 控制台(生产环境可选)lazyLoad: false- 立即加载(开发推荐)lazyLoad: true- 延迟加载(节省内存)
插件配置
本地插件
本地插件是你自己编写的插件文件。
目录结构:
src/
└── plugins/
├── hello.ts # 插件文件
└── todo.ts # 另一个插件配置:
yaml
plugin_dirs:
- ./src/plugins # 插件目录
plugins:
- hello # 加载 src/plugins/hello.ts
- todo # 加载 src/plugins/todo.ts说明:
- 插件名对应文件名(不含
.ts扩展名) - 支持 TypeScript (
.ts) 和 JavaScript (.js)
npm 插件
npm 插件是通过包管理器安装的插件。
安装插件:
bash
pnpm add @zhin.js/plugin-music配置:
yaml
plugins:
- "@zhin.js/http" # HTTP 服务
- "@zhin.js/plugin-music" # 音乐插件官方插件列表:
@zhin.js/http- HTTP 服务@zhin.js/console- Web 控制台@zhin.js/plugin-music- 音乐播放@zhin.js/plugin-github-notify- GitHub 通知
禁用插件
注释掉不需要的插件:
yaml
plugins:
- "@zhin.js/http"
# - "@zhin.js/plugin-music" # 已禁用或者直接删除该行。
热重载
Zhin.js 支持配置热重载,修改配置文件后自动生效。
自动重载的配置
- ✅ 插件列表 - 添加/删除插件自动重载
- ✅ 插件配置 - 修改插件配置自动重载
- ✅ 日志级别 - 修改日志级别立即生效
需要重启的配置
- ⚠️ 端口号 - 修改 HTTP 端口需要重启
- ⚠️ 数据库连接 - 修改数据库配置需要重启
- ⚠️ 核心服务 - 修改
services列表需要重启
重启方法:
bash
# 停止机器人
Ctrl + C
# 重新启动
pnpm dev完整示例
yaml
log_level: 1
database:
dialect: sqlite
filename: ./data/zhin.db
plugin_dirs:
- node_modules
- ./src/plugins
services:
- process
- config
- command
- component
- permission
- cron
plugins:
- my-plugin
- "@zhin.js/http"
- "@zhin.js/console"
- "@zhin.js/adapter-sandbox"
http:
port: 8086
username: ${username}
password: ${password}
base: /api
console:
enabled: true
lazyLoad: false