Skip to content

ZCBOT通用化 IM 平台

不绑定聊天协议——接平台、收 Webhook、跑定时任务都行,业务只写 Python 插件

它解决什么问题 ​

聊天消息、定时到点、外部 HTTP 回调——ZCBOT 把这些统一变成事件,交给 Python 插件处理,结果发回去。 事件路由、权限、数据库、热重载都是内置的,业务逻辑只写在 register(ctx) 里。

三个要点:

  • 事件进来,插件处理——路由、权限、数据库、热重载现成,只写业务逻辑本身。
  • 不绑死任何平台——OneBot 11 只是可选接入端之一,不装任何接入端照样能当纯定时服务或 Webhook 接收器。
  • 改了就能重载——功能都在 plugins/ 里,一个文件夹一个插件,后台点「重载」立即生效。
  • 稳得住——单实例锁防重复运行、崩溃守卫 + 安全模式止损、缺依赖中文诊断、默认密码主动提醒,把"能跑"做成"能长期跑"。
聊天平台 / 定时 / Webhook
        │  事件进入
        ▼
   ZCBOT 内核(路由 · 权限 · 数据库)
        │  分发给插件
        ▼
  你的插件 register(ctx) → 回复 / 存库 / 调 API

接入端决定事件从哪来,插件决定收到后干什么,像搭积木一样组合。

快速上手 ​

bash
git clone https://gitee.com/liquanfeng123/zcbot.git
cd zcbot
pip install -r requirements.txt
python main.py

看到 框架启动完成,等待消息... 即启动成功。没装依赖也能跑:启动时会自动检测并补装缺失包。

官方扩展大部分默认关闭(例外:echo / help / scheduler / webui 默认开启)。要哪种能力就启用哪个扩展(core_plugins.yaml 改 enabled: true, 或 python tools/scan_core_plugins.py --enable <名>),重启生效。 进 Web 后台需启用 webui,收发聊天消息需启用某个接入端。


文档导航 ​

文档按主题分目录存放——指南/ 接口/ 进阶/ 速查/ 品牌/,每节都有自己的总览页。

指南 ​

文档内容
安装环境、依赖、目录结构、升级
快速开始启动、确定事件来源、进后台
配置系统两份 yaml、插件开关、安全清单
对接 IM 平台反向 WS、多平台接入、富媒体与群管
编写插件手把手做出签到类完整插件
多轮会话wait_for / create_session
接入大模型(LLM)模型提供商总线、函数(工具)调用、Agent 循环
接入端契约与规范消息消息段跨协议统一、能力自述、通知事件命名
最佳实践不依赖 IM 的用法 + 写插件规范

接口(写插件时查) ​

你要做的事打开这页
注册命令、发消息、查库、定时任务、WebUI、权限插件上下文(ctx)
读消息字段、判断图片/@/回复、拦事件事件对象
改生命周期、拦 HTTP、审动作、自定义扩展点扩展点(Hook 系统)
接 Telegram / Discord / MQTT / 自定义事件源协议适配器
摸底层容器:生命周期、服务注册表、事件循环核心框架
取官方能力、查内置服务名服务注册表(DI)
装饰器风格写插件插件装饰器

进阶 ​

文档内容
内核设计哲学10 条设计信条 + 铁律(改框架前先读)
架构详解分层、启动时序、消息流转
插件加载机制多文件导入、热重载、踩坑
数据库建表、CRUD、SQLite/MySQL
定时任务cron / interval / date
权限系统节点、组、继承、审计
接口令牌(API Key)两类 HTTP 接口、令牌创建与吊销
部署上线systemd / Docker / 反代 / 安全
双核心(core/host)双进程实验特性
项目结构目录、前端构建、建表 SQL
扩展清单官方扩展 / 内置用户扩展 / 官方扩展仓库

速查(给 AI 编码助手) ​

文档内容
LLM 索引按需加载入口,先读它(仓库根目录)
框架结构目录、事件流水线、扩展点、服务名
插件开发最小模板、ctx 常用面、坑
调试排错跑测试、排查报错
IIPC 内核链路Go 内核 / Rust 适配器 / Python SDK 链路
安全加固API / 前端抗探测与蜜罐体系

品牌 ​

文档内容
标志与规范logo、配色、使用约束

典型用途 ​

  • QQ / TG / Discord 机器人:命令菜单、AI 对话、自动回复
  • 定时自动化:日报、健康检查、到点推送(不需要任何聊天平台)
  • 事件驱动服务:GitHub / 支付回调 → 插件处理 → 回调或通知
  • 带权限的内部工具:多用户后台、审计日志、接口令牌

贯穿全局的约定 ​

  • 协议无关:优先 ctx.send_msg / ctx.actions,少依赖平台特有字段
  • 同步 / 异步双份:普通 def 用同步方法;async def 用 a 前缀异步方法(推荐)
  • 代码与数据分离:代码在 plugins/<名>/(更新会覆盖),数据写 ctx.get_data_dir()
  • 能力来自服务:官方能力经服务注册表取用(api_caller、scheduler、session_manager…),平台内核不直接 import 插件

基于 MIT + Apache 2.0 双协议发布