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 配置管理 - 交互式菜单"""