refactor(config, telegram_bot): Simplify GPTMail API key configuration and remove redundant Telegram enabled flag

- Simplify GPTMail API key initialization logic by removing separate api_key and api_keys variables and consolidating into single line with fallback to ["gpt-test"]
- Update config.toml.example to use api_keys list format instead of deprecated api_key single value
- Remove TELEGRAM_ENABLED configuration variable and related check from telegram_bot.py
- Simplify Telegram Bot startup validation to only check for bot_token and admin_chat_ids
- Update default auth_provider from "cpa" to "s2a" in config.toml.example
- Improve documentation comments in config.toml.example for GPTMail domains and CRS service
- Localize error messages in telegram_bot.py to Chinese for consistency
- Streamline configuration by removing unnecessary intermediate variables and checks
This commit is contained in:
2026-01-18 02:14:08 +08:00
parent c39a01c4c0
commit 0d19a9a96d
3 changed files with 12 additions and 30 deletions

View File

@@ -265,9 +265,7 @@ def reload_config() -> dict:
_gptmail = _cfg.get("gptmail", {})
GPTMAIL_PREFIX = _gptmail.get("prefix", "")
GPTMAIL_DOMAINS = _gptmail.get("domains", [])
_gptmail_api_key = _gptmail.get("api_key", "")
_gptmail_api_keys = _gptmail.get("api_keys", [])
GPTMAIL_API_KEYS = _gptmail_api_keys if _gptmail_api_keys else ([_gptmail_api_key] if _gptmail_api_key else ["gpt-test"])
GPTMAIL_API_KEYS = _gptmail.get("api_keys", []) or ["gpt-test"]
# 代理配置
_proxy_enabled_top = _cfg.get("proxy_enabled")
@@ -333,11 +331,8 @@ GPTMAIL_API_BASE = _gptmail.get("api_base", "https://mail.chatgpt.org.uk")
GPTMAIL_PREFIX = _gptmail.get("prefix", "")
GPTMAIL_DOMAINS = _gptmail.get("domains", [])
# GPTMail API Keys 支持多个 Key 轮询
# 兼容旧配置: api_key (单个) 和新配置: api_keys (列表)
_gptmail_api_key = _gptmail.get("api_key", "")
_gptmail_api_keys = _gptmail.get("api_keys", [])
GPTMAIL_API_KEYS = _gptmail_api_keys if _gptmail_api_keys else ([_gptmail_api_key] if _gptmail_api_key else ["gpt-test"])
# GPTMail API Keys (支持多个 Key 轮询)
GPTMAIL_API_KEYS = _gptmail.get("api_keys", []) or ["gpt-test"]
# GPTMail Keys 文件 (用于动态管理)
GPTMAIL_KEYS_FILE = BASE_DIR / "gptmail_keys.json"
@@ -554,7 +549,6 @@ TEAM_TRACKER_FILE = _files.get("tracker_file", str(BASE_DIR / "team_tracker.json
# Telegram Bot 配置
_telegram = _cfg.get("telegram", {})
TELEGRAM_ENABLED = _telegram.get("enabled", False)
TELEGRAM_BOT_TOKEN = _telegram.get("bot_token", "")
TELEGRAM_ADMIN_CHAT_IDS = _telegram.get("admin_chat_ids", [])
TELEGRAM_NOTIFY_ON_COMPLETE = _telegram.get("notify_on_complete", True)

View File

@@ -12,8 +12,8 @@ email_provider = "gptmail"
# 选择使用的授权服务: "crs" / "cpa" / "s2a"
# - crs: 原有 CRS 系统,需手动添加账号到 CRS
# - cpa: CPA (Codex/Copilot Authorization) 系统,后台自动处理账号
# - s2a: Sub2API 系统,支持 OAuth 授权和账号入库
auth_provider = "cpa"
# - s2a: Sub2API 系统,支持 OAuth 授权和账号入库 (推荐)
auth_provider = "s2a"
# 是否将 team.json 中的 Team Owner 也添加到授权服务
# 开启后,运行时会自动将 team.json 中的 Owner 账号也进行授权入库
@@ -67,20 +67,14 @@ web_url = "https://your-email-service.com"
# API 接口地址
api_base = "https://mail.chatgpt.org.uk"
# API 密钥配置 (支持两种方式)
# 方式1: 单个 Key (兼容旧配置)
api_key = "gpt-test"
# 方式2: 多个 Key 轮询 (推荐,可分散请求限制)
# api_keys = ["key1", "key2", "key3"]
# 注意: 也可以通过 Telegram Bot 的 /gptmail_add 命令动态添加 Key
# API 密钥列表 (支持多个 Key 轮询,可分散请求限制)
# 也可以通过 Telegram Bot 的 /gptmail_add 命令动态添加 Key
api_keys = ["gpt-test"]
# 邮箱前缀 (留空则自动生成 {8位随机字符}-oaiteam 格式)
prefix = ""
# 可用域名列表,生成邮箱时随机选择
# 这些域名已配置 MX 记录指向 GPTMail 服务器
# 下面域名是可用的
domains = [
"29thnewport.org.uk", "2ndwhartonscoutgroup.org.uk",
"abrahampath.org.uk", "aiccministry.com",
@@ -120,6 +114,7 @@ domains = [
# ==================== CRS 服务配置 ====================
# CRS (Central Registration Service) 用于管理注册账号的中心服务
# 仅当 auth_provider = "crs" 时生效
[crs]
# CRS API 接口地址
api_base = "https://your-crs-service.com"
@@ -213,8 +208,6 @@ tracker_file = "team_tracker.json"
# ==================== Telegram Bot 配置 ====================
# 通过 Telegram Bot 远程控制和监控任务
[telegram]
# 是否启用 Telegram Bot
enabled = false
# Bot Token (通过 @BotFather 创建获取)
bot_token = "your-bot-token"
# 授权管理员的 Chat ID 列表 (通过 @userinfobot 获取)

View File

@@ -19,7 +19,6 @@ from telegram.ext import (
from config import (
TELEGRAM_BOT_TOKEN,
TELEGRAM_ADMIN_CHAT_IDS,
TELEGRAM_ENABLED,
TEAMS,
AUTH_PROVIDER,
TEAM_JSON_FILE,
@@ -1332,16 +1331,12 @@ class ProvisionerBot:
async def main():
"""主函数"""
if not TELEGRAM_ENABLED:
print("Telegram Bot is disabled. Set telegram.enabled = true in config.toml")
sys.exit(1)
if not TELEGRAM_BOT_TOKEN:
print("Telegram Bot Token not configured. Set telegram.bot_token in config.toml")
print("Telegram Bot Token 未配置,请在 config.toml 中设置 telegram.bot_token")
sys.exit(1)
if not TELEGRAM_ADMIN_CHAT_IDS:
print("No admin chat IDs configured. Set telegram.admin_chat_ids in config.toml")
print("管理员 Chat ID 未配置,请在 config.toml 中设置 telegram.admin_chat_ids")
sys.exit(1)
bot = ProvisionerBot()
@@ -1349,7 +1344,7 @@ async def main():
# 处理 Ctrl+C
import signal
def signal_handler(sig, frame):
log.info("Shutting down...")
log.info("正在关闭...")
bot.request_shutdown()
signal.signal(signal.SIGINT, signal_handler)