diff --git a/README.md b/README.md new file mode 100644 index 0000000..38146f0 --- /dev/null +++ b/README.md @@ -0,0 +1,103 @@ +# ChatGPT Team Management Bot + +这是一个基于 Go 和 Telegram Inline Keyboard 交互实现的 ChatGPT Team 会费/发车账号自动管理机器人。 +它可以帮助车队车长或团队管理员,全自动地实现 ChatGPT Team 成员的邀请分发、账号容量检测、过期踢人管理等一系列繁琐操作。 + +## 🌟 核心功能 + +* **💳 账密 / RT 登录支持**:支持直接使用账号密码登录,或通过提供 Refresh Token 导入 ChatGPT Team 账号。 +* **👥 容量自动检测与制约**:根据预设的 `TeamCapacity`(每车容量限制,默认 6 人),机器人会自动检测当前使用人数和待处理的邀请数,确保不超卖。 +* **🎫 兑换码自动派发**:能够一键生成防伪兑换码,配合发卡平台使用。在额度允许范围内计算并生成指定数量的可用邀请码。 +* **🎲 随机发车**:针对没有明确邀请目标的用户,支持随机邀请功能,拉人成功后自动核销兑换码。 +* **📩 待处理邀请管理**:方便地查看和取消那些长期未接受的“占位邀请”,释放车位。 +* **🛡️ Token 自动检测与踢人拦截**:内置定时器(Cron)自动检查失效或封号状态(HTTP 401/402)。遇到封禁会自动将其拦截保护。 +* **👑 多管理员管理**:支持从配置文件设定超级管理员,同时超级管理可以在机器人端内直接添加、移除下级的动态管理员。 +* **🕹️ 纯 Inline 按钮交互**:彻底告别手敲命令,99% 的操作(翻页、选择、删除、确认)全部通过直观的 Telegram 底部内联按钮菜单完成。 + +--- + +## 🚀 部署配置 + +项目支持通过 `go build` 本地运行,也可通过 `Docker` 和 `docker-compose` 快速部署。 + +### 1. 环境准备 + +需要准备好以下环境: +* **PostgreSQL 数据库** 实例。 +* **Telegram Bot Token** (通过 [@BotFather](https://t.me/BotFather) 申请)。 +* 运行环境:Golang 1.21+ (若使用 Docker 则无需关心此项)。 + +### 2. 配置文件设定 + +复制示例环境变量文件: +```bash +cp .env.example .env +``` + +编辑 `.env` 文件: +```env +# 你的 PostgreSQL 数据库连接地址 +DATABASE_URL=postgres://user:password@localhost:5432/dbname?sslmode=disable + +# 管理员的 Telegram User ID (逗号分隔多个,拥有添加新管理员权限的超管) +ADMIN_IDS=12345678,87654321 + +# 机器人的 Token +TELEGRAM_BOT_TOKEN=123456789:ABCDefghIJKLxxxx_xxxx + +# 代理 URL,防止被 ChatGPT 屏蔽(若不需要可留空) +PROXY_URL=http://127.0.0.1:7890 + +# 自动检查 Token 以及账号健康度的周期 (分钟) +TOKEN_CHECK_INTERVAL=30 + +# 每个 Team 账号允许的最大人数容量 (包含车长自己) +TEAM_CAPACITY=6 +``` + +### 3. 使用 Docker 部署 (推荐) + +如果你熟悉 docker: + +```bash +# 假如你已经配置好 docker 和 docker-compose +docker build -t gpt-team-bot . +docker run -d --name gpt-team-bot --env-file .env --restart always gpt-team-bot +``` + +### 4. 本地编译运行 + +```bash +go mod tidy +go build -o bot ./cmd/ +./bot +``` + +--- + +## 🛠️ 后台菜单介绍 + +打开机器人发送 `/start` 或者任意内容,管理员会自动看见操作主菜单。 + +* **📋 账号列表后台** + * **🔑 RT添加账号 / 🔑 账密登录**:导入 ChatGPT Team 账号的通道。 + * **🗑️ 删除账号 / 🔄 刷新账号**:支持分页查询管理现有账号。 + * **📩 待处理邀请**:列出发送过但未被接受的邀请,可一键取消。 +* **🎫 兑换码管理** + * **➕ 生成兑换码**:基于当前没满的车位自动生成。 + * **📋 查看兑换码**:分页查看当前所有没使用的兑换码。 + * **🗑️ 一键清空未使用**:作废没用完的邀请码。 + * (可以直接在菜单里点击单条代码的垃圾桶对应删除)。 +* **🤖 系统与权限** + * **👑 管理员设置**:增删可以操作面板的下级子管理。 + * **✅ 强制检测 / 🔄 强制刷新全部**:忽略定时器立刻轮询所有管理的账号。 + +## 📝 开发与维护 + +* 主要基于 `go-telegram-bot-api/telegram-bot-api/v5` 进行开发。 +* API 获取利用了 ChatGPT `/backend-api/accounts/check/` 与 `/backend-api/team/` 接口通信,遇到风控需及时更新代理或验证机制 (`internal/chatgpt`)。 +* 项目数据迁移完全通过内部启动时的原始 SQL 构建 (`internal/database`),首次启动自动建表。 + +## 📄 License + +MIT License.