所有配置都在项目根目录的 .env(从 .env.example 复制而来,.env 不进仓库、不进镜像)。
Redis 里的运行时数据(群集合、审计等)见本文最后一节。
变量
默认值
说明
COMPOSE_PROJECT_NAME
monitor-qq-bot
Docker Compose 项目名,多实例必须不同
TZ
Asia/Shanghai
容器时区,国内保持默认
BOT_HOST
0.0.0.0
bot 容器内监听地址
BOT_PORT
8080
bot 监听端口并映射宿主机,多实例必须不同 ;NapCat URL 跟随
NAPCAT_WEBUI_PORT
6099
NapCat WebUI 映射端口,多实例必须不同
NAPCAT_HTTP_PORT
3000
NapCat HTTP 服务映射端口,多实例必须不同
NAPCAT_WS_PORT
3001
NapCat WS 服务映射端口,多实例必须不同
NAPCAT_UID / NAPCAT_GID
1000
NapCat 容器内文件权限用 UID/GID
变量
默认值
说明
ONEBOT_ACCESS_TOKEN
change-this-access-token
NapCat↔bot 通信令牌,必须改成强随机值 (openssl rand -hex 24)
REDIS_PASSWORD
change-this-redis-password
Redis 密码,必须修改
REDIS_URL
redis://:change-this-redis-password@redis:6379/0
bot 连接 Redis 的地址,必须与 REDIS_PASSWORD 对应
REDIS_PREFIX
monitor-qq-bot:demo
Redis 键前缀,多实例必须不同 (隔离配置/状态/事件)
变量
默认值
说明
MONITOR_GROUP_IDS
空
静默监控的学生群,逗号分隔;留空 = 不监控任何群
ADMIN_GROUP_IDS
空
管理员群:确凿告警发送到这里,也在这里响应 /guard 命令
RESOURCE_GROUP_IDS
空
资源群:图片/文件/转发复核资源只发到这里;留空 = 不配置,仅落审计 (不会回退到管理员群)
SUPERUSER_QQ_IDS
空
超管 QQ:可维护管理员群/资源群,逗号分隔
REQUIRE_AT_MENTION
false
false:免 @ 响应,多实例靠 @ 消歧;true:必须 @ 本 bot 才响应
4. 关键词(首次启动播种进 Redis,之后在群里维护)
变量
默认值
说明
DEFAULT_WHITELIST_KEYWORDS
课程表,作业通知,校园网故障,校园网报修
白名单关键词:命中只抑制图片/转发复核噪声
DEFAULT_BLACKLIST_KEYWORDS
钓鱼,木马,远控,外挂,刷单,兼职日结,扫码登录,账号密码,验证码,中奖,领奖,贷款,裸聊,解封,发卡,高价收校园网,带vpn校园网
黑名单关键词:命中即告警管理员群
支持逗号分隔或 JSON 数组写法。正则规则:
普通文本自动转成"可穿插空白/不可见字符"的模糊正则(高价收校园网 能匹配 高 价 收 校 园 网)。
re: 开头为高级正则,原样编译(忽略大小写)。
变量
默认值
说明
REVIEW_FILE_UPLOADS
true
群文件/文件消息 → 资源群复核
REVIEW_IMAGE_MESSAGES
true
图片消息 → 资源群复核
REVIEW_FORWARD_MESSAGES
true
转发消息集合 → 展开检测 + 资源群复核
这些开关不会下载或执行群文件。
变量
默认值
说明
RESOURCE_FORWARD_IMAGES
true
图片原图重发到资源群
RESOURCE_FORWARD_FILES
true
文件只发文件名/大小/下载链接,不下载不转存
RESOURCE_FORWARD_FORWARDS
true
转发集合有限嵌套展开,内嵌资源转发资源群
RESOURCE_GROUP_IDS 为空时,以上开关全部无效(不转发任何群)。
变量
默认值
说明
AUDIT_TTL_SECONDS
259200(3 天)
审计事件保留时间
AUDIT_LIST_MAX
1000
审计列表最大条数
RECENT_TEXT_TTL_SECONDS
300
拆分拼接窗口时长
RECENT_TEXT_MAX_ITEMS
12
拆分拼接窗口最多保留消息条数
ALERT_DEDUP_TTL_SECONDS
600
同一"群+人+规则+内容"告警去重窗口
MAX_ALERT_TEXT_LENGTH
800
告警内容最大长度
GROUP_INFO_TTL_SECONDS
604800(7 天)
群号→群名缓存有效期
FORWARD_EXPAND_MAX_DEPTH
2
转发集合嵌套展开最大深度
FORWARD_EXPAND_MAX_ITEMS
200
转发集合展开总条数上限
变量
默认值
说明
ENVIRONMENT
prod
NoneBot 运行环境
DRIVER
~fastapi
NoneBot 驱动(提供 OneBot 反向 WS 端点)
所有 key 都会带 REDIS_PREFIX:
cfg:monitor_groups 监控群集合
cfg:admin_groups 管理员群集合
cfg:resource_groups 资源群集合
cfg:whitelist_keywords 白名单关键词
cfg:blacklist_keywords 黑名单关键词
cfg:whitelist_users 白名单用户
cfg:blacklist_users 黑名单用户
state:recent_text:<g>:<u> 拆分拼接窗口(按群+用户)
state:group_info:<g> 群号→群名缓存
event:<uuid> 单条审计事件
audit:events 审计事件列表
Redis 已开启持久化并挂载 volume(redis-data)。.env 里改的 DEFAULT_*_KEYWORDS
只在首次启动 播种进 Redis;之后请在管理员群里用 /guard 命令维护。
10. requirements.txt 是干什么的
Dockerfile 构建镜像时读取 requirements.txt 安装 Python 依赖。
部署只需要 docker compose up -d --build,不需要手动处理依赖。