diff --git a/telegram_bot.py b/telegram_bot.py
index 371de01..7420214 100644
--- a/telegram_bot.py
+++ b/telegram_bot.py
@@ -3692,14 +3692,18 @@ class ProvisionerBot:
new_display = f"{new_token[:8]}...{new_token[-4:]}" if len(new_token) > 12 else new_token
- await update.message.reply_text(
+ # 发送更新成功消息
+ progress_msg = await update.message.reply_text(
f"✅ Token 更新成功\n\n"
f"旧 Token: {old_display}\n"
f"新 Token: {new_display}\n\n"
- f"配置已自动重载生效",
+ f"⏳ 正在检测邮件 API 连接...",
parse_mode="HTML"
)
+ # 测试 API 连接
+ await self._test_mail_api_connection(update.effective_chat.id, progress_msg.message_id, new_token, config)
+
except ImportError:
await update.message.reply_text(
"❌ 缺少 tomli_w 依赖\n"
@@ -3708,6 +3712,110 @@ class ProvisionerBot:
except Exception as e:
await update.message.reply_text(f"❌ 更新 Token 失败: {e}")
+ async def _test_mail_api_connection(self, chat_id: int, message_id: int, token: str, config: dict):
+ """测试邮件 API 连接"""
+ import requests
+
+ mail_api_base = config.get("autogptplus", {}).get("mail_api_base", "")
+
+ if not mail_api_base:
+ await self.app.bot.edit_message_text(
+ chat_id=chat_id,
+ message_id=message_id,
+ text="❌ 邮件 API 连接失败\n\n"
+ "错误: mail_api_base 未配置\n\n"
+ "请检查配置后重试:\n"
+ "• mail_api_base: 未配置\n"
+ "• mail_api_token: 已配置",
+ parse_mode="HTML"
+ )
+ return
+
+ try:
+ # 测试 API 连接
+ url = f"{mail_api_base}/api/public/emailList"
+ headers = {
+ "Authorization": token,
+ "Content-Type": "application/json"
+ }
+ payload = {
+ "toEmail": "test@test.com",
+ "timeSort": "desc",
+ "size": 1
+ }
+
+ start_time = time.time()
+ response = requests.post(url, headers=headers, json=payload, timeout=10)
+ elapsed = time.time() - start_time
+
+ data = response.json()
+
+ token_display = f"{token[:8]}...{token[-4:]}" if len(token) > 12 else token
+
+ if response.status_code == 200 and data.get("code") == 200:
+ await self.app.bot.edit_message_text(
+ chat_id=chat_id,
+ message_id=message_id,
+ text=f"✅ Token 更新成功\n\n"
+ f"新 Token: {token_display}\n\n"
+ f"✅ 邮件 API 连接成功\n"
+ f"• 服务器: {mail_api_base}\n"
+ f"• 响应时间: {elapsed*1000:.0f}ms\n"
+ f"• 状态: 正常",
+ parse_mode="HTML"
+ )
+ else:
+ error_msg = data.get("message", "未知错误")
+ await self.app.bot.edit_message_text(
+ chat_id=chat_id,
+ message_id=message_id,
+ text=f"✅ Token 更新成功\n\n"
+ f"新 Token: {token_display}\n\n"
+ f"❌ 邮件 API 连接失败\n"
+ f"错误: API 响应异常: {error_msg}\n\n"
+ f"请检查配置后重试:\n"
+ f"• mail_api_base: {mail_api_base}\n"
+ f"• mail_api_token: 已配置",
+ parse_mode="HTML"
+ )
+
+ except requests.exceptions.ConnectionError:
+ await self.app.bot.edit_message_text(
+ chat_id=chat_id,
+ message_id=message_id,
+ text=f"✅ Token 更新成功\n\n"
+ f"❌ 邮件 API 连接失败\n"
+ f"错误: 无法连接到服务器\n\n"
+ f"请检查配置后重试:\n"
+ f"• mail_api_base: {mail_api_base}\n"
+ f"• mail_api_token: 已配置",
+ parse_mode="HTML"
+ )
+ except requests.exceptions.Timeout:
+ await self.app.bot.edit_message_text(
+ chat_id=chat_id,
+ message_id=message_id,
+ text=f"✅ Token 更新成功\n\n"
+ f"❌ 邮件 API 连接失败\n"
+ f"错误: 连接超时\n\n"
+ f"请检查配置后重试:\n"
+ f"• mail_api_base: {mail_api_base}\n"
+ f"• mail_api_token: 已配置",
+ parse_mode="HTML"
+ )
+ except Exception as e:
+ await self.app.bot.edit_message_text(
+ chat_id=chat_id,
+ message_id=message_id,
+ text=f"✅ Token 更新成功\n\n"
+ f"❌ 邮件 API 连接失败\n"
+ f"错误: {str(e)}\n\n"
+ f"请检查配置后重试:\n"
+ f"• mail_api_base: {mail_api_base}\n"
+ f"• mail_api_token: 已配置",
+ parse_mode="HTML"
+ )
+
@admin_only
async def cmd_autogptplus(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
"""AutoGPTPlus 配置管理 - 交互式菜单"""