# 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.
