Skip to content

Latest commit

 

History

History
121 lines (91 loc) · 5.56 KB

File metadata and controls

121 lines (91 loc) · 5.56 KB

配置详解

所有配置都在项目根目录的 .env(从 .env.example 复制而来,.env 不进仓库、不进镜像)。 Redis 里的运行时数据(群集合、审计等)见本文最后一节。


1. 部署与端口

变量 默认值 说明
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

2. 凭据

变量 默认值 说明
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 键前缀,多实例必须不同(隔离配置/状态/事件)

3. QQ 群配置

变量 默认值 说明
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: 开头为高级正则,原样编译(忽略大小写)。

5. 人工复核开关

变量 默认值 说明
REVIEW_FILE_UPLOADS true 群文件/文件消息 → 资源群复核
REVIEW_IMAGE_MESSAGES true 图片消息 → 资源群复核
REVIEW_FORWARD_MESSAGES true 转发消息集合 → 展开检测 + 资源群复核

这些开关不会下载或执行群文件。

6. 资源群转发

变量 默认值 说明
RESOURCE_FORWARD_IMAGES true 图片原图重发到资源群
RESOURCE_FORWARD_FILES true 文件只发文件名/大小/下载链接,不下载不转存
RESOURCE_FORWARD_FORWARDS true 转发集合有限嵌套展开,内嵌资源转发资源群

RESOURCE_GROUP_IDS 为空时,以上开关全部无效(不转发任何群)。

7. 运行时限制

变量 默认值 说明
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 转发集合展开总条数上限

8. NoneBot 运行环境

变量 默认值 说明
ENVIRONMENT prod NoneBot 运行环境
DRIVER ~fastapi NoneBot 驱动(提供 OneBot 反向 WS 端点)

9. Redis 保存内容

所有 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,不需要手动处理依赖。