diff --git a/telegram_bot.py b/telegram_bot.py
index b6ae917..bd521cb 100644
--- a/telegram_bot.py
+++ b/telegram_bot.py
@@ -3141,9 +3141,9 @@ class ProvisionerBot:
elif action == "test_api":
await self._test_autogptplus_api(query)
elif action == "domains":
- await self._show_autogptplus_domains(query, sub_action)
+ await self._show_autogptplus_domains(query, sub_action, context)
elif action == "ibans":
- await self._show_autogptplus_ibans(query, sub_action)
+ await self._show_autogptplus_ibans(query, sub_action, context)
elif action == "fingerprint":
await self._toggle_autogptplus_fingerprint(query)
elif action == "stats":
@@ -3503,7 +3503,7 @@ class ProvisionerBot:
reply_markup=reply_markup
)
- async def _show_autogptplus_domains(self, query, sub_action: str = ""):
+ async def _show_autogptplus_domains(self, query, sub_action: str = "", context=None):
"""显示/管理域名"""
try:
from auto_gpt_team import (
@@ -3526,6 +3526,25 @@ class ProvisionerBot:
)
return
+ if sub_action == "add":
+ # 提示添加域名
+ keyboard = [[InlineKeyboardButton("❌ 取消", callback_data="autogptplus:domains")]]
+ reply_markup = InlineKeyboardMarkup(keyboard)
+ await query.edit_message_text(
+ "➕ 添加邮箱域名\n\n"
+ "请直接发送要添加的域名:\n\n"
+ "支持格式:\n"
+ "• 单个: @example.com\n"
+ "• 多个: @a.com @b.com\n"
+ "• 逗号分隔: @a.com,@b.com\n\n"
+ "@ 符号可省略,会自动添加",
+ parse_mode="HTML",
+ reply_markup=reply_markup
+ )
+ if context:
+ context.user_data["autogptplus_waiting_domain"] = True
+ return
+
# 显示域名列表
domains = get_email_domains()
file_count = get_file_domains_count()
@@ -3545,6 +3564,7 @@ class ProvisionerBot:
keyboard = [
[
+ InlineKeyboardButton("➕ 添加域名", callback_data="autogptplus:domains:add"),
InlineKeyboardButton("🗑️ 清空txt域名", callback_data="autogptplus:domains:clear"),
],
[InlineKeyboardButton("◀️ 返回", callback_data="autogptplus:back")],
@@ -3574,7 +3594,7 @@ class ProvisionerBot:
reply_markup=reply_markup
)
- async def _show_autogptplus_ibans(self, query, sub_action: str = ""):
+ async def _show_autogptplus_ibans(self, query, sub_action: str = "", context=None):
"""显示/管理 IBAN"""
try:
from auto_gpt_team import get_sepa_ibans, load_ibans_from_file, SEPA_IBANS, clear_sepa_ibans
@@ -3591,6 +3611,24 @@ class ProvisionerBot:
)
return
+ if sub_action == "add":
+ # 提示添加 IBAN
+ keyboard = [[InlineKeyboardButton("❌ 取消", callback_data="autogptplus:ibans")]]
+ reply_markup = InlineKeyboardMarkup(keyboard)
+ await query.edit_message_text(
+ "➕ 添加 IBAN\n\n"
+ "请直接发送要添加的 IBAN:\n\n"
+ "支持格式:\n"
+ "• 单个: DE89370400440532013000\n"
+ "• 多个: 每行一个或逗号分隔\n\n"
+ "只支持德国 IBAN (DE开头)",
+ parse_mode="HTML",
+ reply_markup=reply_markup
+ )
+ if context:
+ context.user_data["autogptplus_waiting_iban"] = True
+ return
+
# 显示 IBAN 列表
ibans = get_sepa_ibans()
file_ibans = load_ibans_from_file()
@@ -3612,6 +3650,7 @@ class ProvisionerBot:
keyboard = [
[
+ InlineKeyboardButton("➕ 添加IBAN", callback_data="autogptplus:ibans:add"),
InlineKeyboardButton("🗑️ 清空IBAN", callback_data="autogptplus:ibans:clear"),
],
[InlineKeyboardButton("◀️ 返回", callback_data="autogptplus:back")],
@@ -3838,14 +3877,26 @@ class ProvisionerBot:
@admin_only
async def handle_team_custom_count(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
- """处理文本输入 (GPT Team 自定义数量 / AutoGPTPlus Token)"""
-
+ """处理文本输入 (GPT Team 自定义数量 / AutoGPTPlus Token / 域名 / IBAN)"""
+
# 处理 AutoGPTPlus Token 输入
if context.user_data.get("autogptplus_waiting_token"):
context.user_data["autogptplus_waiting_token"] = False
await self._handle_autogptplus_token_input(update, context)
return
-
+
+ # 处理域名添加输入
+ if context.user_data.get("autogptplus_waiting_domain"):
+ context.user_data["autogptplus_waiting_domain"] = False
+ await self._handle_autogptplus_domain_input(update, context)
+ return
+
+ # 处理 IBAN 添加输入
+ if context.user_data.get("autogptplus_waiting_iban"):
+ context.user_data["autogptplus_waiting_iban"] = False
+ await self._handle_autogptplus_iban_input(update, context)
+ return
+
# 处理 GPT Team 自定义数量输入
if not context.user_data.get("team_waiting_count"):
return # 不在等待状态,忽略消息
@@ -4031,6 +4082,86 @@ class ProvisionerBot:
reply_markup=reply_markup
)
+ async def _handle_autogptplus_domain_input(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
+ """处理域名添加输入"""
+ try:
+ from auto_gpt_team import add_email_domains
+
+ text = update.message.text.strip()
+ if not text:
+ await update.message.reply_text("❌ 域名不能为空")
+ return
+
+ # 解析输入 (支持空格、逗号、换行分隔)
+ domains = [s.strip() for s in text.replace(",", " ").replace("\n", " ").split() if s.strip()]
+
+ if not domains:
+ await update.message.reply_text("❌ 未提供有效的域名")
+ return
+
+ added, skipped, invalid, total = add_email_domains(domains)
+
+ # 构建响应消息
+ lines = ["✅ 域名导入完成\n"]
+ lines.append(f"新增: {added}")
+ lines.append(f"跳过 (重复): {skipped}")
+ if invalid > 0:
+ lines.append(f"无效 (格式错误): {invalid}")
+ lines.append(f"当前总数: {total}")
+
+ keyboard = [[InlineKeyboardButton("📧 域名管理", callback_data="autogptplus:domains")]]
+ reply_markup = InlineKeyboardMarkup(keyboard)
+
+ await update.message.reply_text(
+ "\n".join(lines),
+ parse_mode="HTML",
+ reply_markup=reply_markup
+ )
+
+ except ImportError:
+ await update.message.reply_text("❌ auto_gpt_team 模块未找到")
+ except Exception as e:
+ await update.message.reply_text(f"❌ 添加域名失败: {e}")
+
+ async def _handle_autogptplus_iban_input(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
+ """处理 IBAN 添加输入"""
+ try:
+ from auto_gpt_team import add_sepa_ibans
+
+ text = update.message.text.strip()
+ if not text:
+ await update.message.reply_text("❌ IBAN 不能为空")
+ return
+
+ # 解析输入 (支持空格、逗号、换行分隔)
+ ibans = [s.strip() for s in text.replace(",", " ").replace("\n", " ").split() if s.strip()]
+
+ if not ibans:
+ await update.message.reply_text("❌ 未提供有效的 IBAN")
+ return
+
+ added, skipped, total = add_sepa_ibans(ibans)
+
+ # 构建响应消息
+ lines = ["✅ IBAN 导入完成\n"]
+ lines.append(f"新增: {added}")
+ lines.append(f"跳过 (重复/无效): {skipped}")
+ lines.append(f"当前总数: {total}")
+
+ keyboard = [[InlineKeyboardButton("💳 IBAN 管理", callback_data="autogptplus:ibans")]]
+ reply_markup = InlineKeyboardMarkup(keyboard)
+
+ await update.message.reply_text(
+ "\n".join(lines),
+ parse_mode="HTML",
+ reply_markup=reply_markup
+ )
+
+ except ImportError:
+ await update.message.reply_text("❌ auto_gpt_team 模块未找到")
+ except Exception as e:
+ await update.message.reply_text(f"❌ 添加 IBAN 失败: {e}")
+
async def main():
"""主函数"""