ATF Bot Automation v2 的功能
ATF Bot Automation v2 是一个 Node.js 机器人,通过活动的 Telethon SQLite 会话文件与 ATF Telegram Mini App 交互。它不会将 Telegram.WebApp.initData 保存到静态查询文件中,而是在每个周期请求新的 Telegram WebView,并使用 Telegram 返回的新初始化数据。
该机器人支持多个账户,并可管理 ATF 登录、TON 钱包创建与验证、挖矿领取、动态任务、推荐注册、账户统计、钱包替换以及 ATF 提现。它会在每个周期重新扫描会话目录,因此无需修改源代码即可发现新添加的账户。
主要功能
- 每个周期获取全新的 Telegram WebView 和 Mini App 初始化数据。
- 以只读方式访问 Telethon SQLite 会话数据库,并将身份验证密钥临时复制到内存中。
- 自动创建真实的 TON v4r2 主网钱包地址。
- 通过 ATF 的
sync_wallet端点签署 TON Proof 并验证钱包。 - 为收到临时
busy或缓存/去重响应的账户使用排队的钱包工作线程。 - 通过 Acorn 解析 ATF 前端配置来动态发现任务,且不使用
eval。 - 每个会话拥有独立的任务工作线程和引导状态。
- 通过 Telegram
messages.StartBot注册推荐关系,并处理 Turnstile。 - 为 ATF 请求配置每个账户独立的 HTTP 或 HTTPS 代理。
- 提供用于实时自动化的 Textual 控制面板,以及独立的只读统计控制面板。
- 按顺序提现,并支持余额检查、图片 CAPTCHA 求解、代理轮换和提现历史报告。
- 稳定的请求 ID、受控重试、优雅停机以及日志中的敏感值过滤。
要求
安装项目之前,请准备以下内容:
- Node.js 22.5 或更高版本。
- 从 https://my.telegram.org/apps 获取的个人 Telegram API ID 和 API hash。
- 至少一个以
.session结尾的活动 Telethon SQLite 会话文件。 - 如果要使用 Textual 控制面板或本地 Turnstile 求解器,还需要 Python 3。
安全警告:切勿分享 Telegram API hash、Telethon 会话文件、代理凭据、.env或wallets-accounts.json。钱包文件包含明文助记词和私钥,可完全控制其中存储的每个钱包。
安装并配置机器人
1. 安装 Node.js 依赖
在项目根目录中打开 PowerShell 并安装软件包:
npm install
Copy-Item .env.example .env
2. 添加 Telegram API 凭据
编辑 .env,填入为你的 Telegram 应用签发的凭据:
TELEGRAM_API_ID=12345678
TELEGRAM_API_HASH=your_api_hash
这些凭据必须属于你本人。不要将填写完成的环境文件提交到版本控制系统。
3. 添加 Telethon 会话
将所有活动的 SQLite 会话文件放入 session 目录。文件名会成为机器人显示的账户标签。
session/
├── account1.session
├── account2.session
└── account3.session
该目录会在每个周期扫描。会话数据库以只读方式打开,并会将对同一账户会话的访问排队,以防止并发操作相互冲突。
4. 可选:安装 Textual 控制面板
主要自动化选项可以显示深蓝、紫罗兰和珊瑚色的 Textual 控制面板。运行以下命令一次性安装其 Python 依赖:
python -m pip install -r requirements-textual.txt
如果 Python 安装在非标准位置,请将 ATF_PYTHON 设置为 python.exe 的完整路径。
运行机器人
使用以下命令启动交互式菜单:
npm start
菜单提供以下工作流:
[1] Run BOT
[2] Register accounts with referral code
[3] Replace TON wallet
[4] Check account statistics
[5] Withdraw ATF
[0] Exit
运行主要自动化功能
选择选项 1,即可通过 Textual 控制面板启动 Node.js 工作线程。控制面板会显示 Telegram 用户名、等级、已挖掘的 ATF、ATF 持有量、待领取奖励、钱包状态、挖矿状态、任务领取情况、任务倒计时、推荐结果、Team Wallet 详情、连接状态和周期摘要。
常用的控制面板操作包括:
q:优雅停止并退出。p:暂停或恢复工作线程。r:并行刷新所有账户的统计信息。c:清空日志面板。PgUp和PgDn:滚动查看日志。g和Shift+G:跳转到日志开头或结尾。
控制面板会根据 dashboard_refresh_interval_minutes 自动刷新账户状态,其默认值为 10 分钟。要直接启动控制面板,请使用:
npm run dashboard
如需使用不带 Textual 的标准终端日志,请运行:
npm run start:run
该命令也适合作为调度程序和非交互式进程的入口。
TON 钱包设置的工作方式
账户登录后,机器人会检查 ATF 服务器中的 wallet_address 和 wallet_verified 字段。如果不存在已验证的钱包,则会按以下顺序执行:
- 为主网创建一个 TON v4r2 钱包。
- 立即将其地址、24 个单词的助记词和私钥存储到
wallets-accounts.json中。 - 从 ATF 请求官方 TON Proof 载荷。
- 为 ATF WebApp 域名签署证明。
- 将证明提交到
sync_wallet。 - 仅在验证成功后继续执行安全问题和挖矿。
钱包记录会在验证开始前写入。因此,临时的 busy 响应或延迟处理账户不会导致新生成的钱包丢失。
如果 ATF 返回 busy,或在钱包仍未验证时返回缓存/去重后的响应,主进程会在 wallet_busy_retry_seconds 指定的时间后重试一次,该值默认为 15 秒。如果账户仍处于忙碌状态,则会将其移交给钱包工作线程,以便主进程继续运行。
最多可并行运行 wallet_worker_concurrency 个钱包任务,默认值为 10。其他账户会进入 FIFO 队列。每个会话只允许有一个处于活动状态或排队中的钱包工作线程。
生成的钱包是真实的钱包地址,但在用于链上交易之前不会部署到链上。请安全存储并谨慎备份 wallets-accounts.json。拥有此文件的任何人都可以控制其中的钱包。
旧记录中包含的 encrypted_secrets 会在机器人首次打开记录时迁移为明文格式。之前的 WALLET_KEYSTORE_PASSWORD 仅在执行此迁移时需要。
配置推荐注册
如果希望选项 2 注册新账户,请将推荐码添加到 config.json:
{
"referral_code": "610911604"
}
对于之前未使用该代码处理过的每个会话,机器人会调用 Telegram messages.StartBot,使用相同的启动参数打开 WebView,并在 ATF 登录期间发送 ref_code。成功结果会以哈希形式记录在 .state/referrals.json 中,从而避免每个周期重复执行相同的 StartBot 操作。
推荐模式仅处理推荐注册。钱包创建和存储仍属于选项 1 下的主要自动化流程。现有账户通常无法替换服务器已记录的邀请人。
无需交互式菜单即可直接运行推荐注册:
npm run register-referral
使用 MultiBot 处理 Turnstile
如果新账户收到 Cloudflare Turnstile 挑战,机器人可以从 ATF 获取官方 site_key,并向 MultiBot 请求令牌。将其 API 密钥添加到 .env:
MULTIBOT_API_KEY=your_api_key
默认情况下不会将账户代理发送给 MultiBot。如果必须使用相同的代理 IP 进行验证,请启用:
MULTIBOT_USE_ACCOUNT_PROXY=1
启用此设置会将账户代理地址和凭据发送给 MultiBot。使用此选项前,请考虑相关的信息暴露风险。
运行本地 Turnstile 求解器
随附的本地求解器仅绑定到 127.0.0.1:8000。在 Windows 上安装 Python 3,并从项目根目录准备求解器:
py -3 -m venv local-solver\.venv
local-solver\.venv\Scripts\python.exe -m pip install -r local-solver\requirements.txt
local-solver\.venv\Scripts\python.exe -m camoufox fetch
cd local-solver
.venv\Scripts\python.exe api_server.py --yes
保持该终端处于打开状态。在另一个终端中运行机器人,选择选项 2,然后选择本地求解器。若要以非交互方式运行,请配置:
TURNSTILE_SOLVER=local
LOCAL_TURNSTILE_SOLVER_URL=http://127.0.0.1:8000
应用账户级覆盖设置
如果个别会话需要不同的设置,请将 account-overrides.example.json 复制为 account-overrides.json。例如:
{
"account1.session": {
"enabled": true,
"proxy": "http://username:password@127.0.0.1:8080",
"ready_task_ids": ["telegram_join"]
}
}
enabled用于启用或禁用会话。proxy为 ATF 请求设置 HTTP 或 HTTPS 代理。Telegram MTProto 仍使用直接连接。ready_task_ids用于标识确实已由人工完成的一次性任务,这些任务现在可以由机器人领取。
覆盖设置文件、代理、环境文件、缓存、状态文件和会话文件均会被 Git 忽略。
配置动态任务
ATF 不提供任务列表端点。相反,其前端会将 tasksConfig 作为内联 JavaScript 包含在 index.html 中。机器人下载该页面,并使用 Acorn 解析其抽象语法树,而不会执行代码。它只提取任务 ID、标题、奖励、链接、冷却时间、最短时长和人工审核状态。
如果页面无法加载,机器人会使用最新缓存。如果前端和缓存都不可用,则该周期会禁用任务领取,而不是使用硬编码的备用配置。
在 config.json 中将任务模式设置为以下值之一:
off:不读取或处理任务。report:显示可用任务,但不启动或领取任务。claim_ready:使用start_task注册链接点击,启动符合条件的任务,并行等待每个任务的minSeconds时长,然后在任务就绪时领取。
ready_task_ids 中列出的任务会进入领取队列,而不会再次启动。按顺序完成初始登录后,每个账户都会获得一个独立的任务工作线程。工作线程会休眠,直到该账户的冷却时间结束,然后重新加载服务器状态,处理就绪任务,并根据最新响应安排下一次运行。
如果就绪任务无法启动或领取,重试间隔受 task_ready_retry_seconds 限制,默认值为 60 秒。这可以防止形成紧密的重试循环。loop_interval_hours 设置仅适用于挖矿领取周期,不适用于任务调度。
安全更换 TON 钱包
选择选项 3,或在交互式终端中运行 npm run replace-wallets,即可扫描可能需要更换钱包的会话。wallets-accounts.json 中已包含有效助记词和私钥的账户会被跳过。
对于已验证但本地没有密钥的钱包,机器人无法判断该钱包是来自备份已丢失的旧版机器人安装,还是来自外部钱包。因此,它会显示用户名和经过掩码处理的地址,并逐个账户请求确认:
- 输入
y以更换钱包。 - 按 Enter 键或输入
n跳过。 - 输入
q取消剩余扫描。
批准后,新钱包和助记词会先保存,然后通过 sync_wallet 和 TON Proof 以原子方式更新 ATF。旧钱包中的链上资产不会转移。繁忙账户的更换操作会保存为 replacement_pending,并在扫描结束后由最多五个工作线程重试。中断的更换操作可通过再次运行选项 3 继续。
审计账户统计信息
选项 4 或 npm run stats 会打开只读审计面板。该面板会执行全新登录、调用 sync_wallet,并读取 get_withdraw_history。并发数由 stats_worker_concurrency 控制,最多为五个工作线程。
面板会显示用户名、钱包地址、ATF 持仓、挖矿余额、封禁状态、风险评分、符合条件的 DEX 购买状态、待处理提现、最新提现状态,以及来自 masked_auto_fraud 的 FRAUD MASK。提现状态包括 NONE、PENDING、APPROVED、KYC/VERIFY、FAILED 和 UNAVAILABLE。KYC 状态与欺诈掩码是两个独立信号。
按 r 再次运行审计,或按 q 退出。
提现 ATF
选项 5 会按顺序处理账户,并在开始前请求一次确认,因为服务器会为每笔提现请求收取 70 ATF。
对于每个账户,机器人会:
- 使用新会话登录,并读取
mined_balance和pending_reward。 - 领取所有待处理奖励。
- 再次登录以刷新挖矿余额。
- 如果余额低于 500 ATF 或钱包未通过验证,则跳过该账户。
- 将符合条件的全部挖矿余额向下取整至四位小数。
- 解答图片验证码并提交提现。
- 读取提现历史并报告最终可用状态。
将 2Captcha 密钥添加到 .env,用于 ImageToTextTask 求解器:
TWOCAPTCHA_API_KEY=your_api_key
机器人会在提交前应用前端官方的 1.2 至 2 秒随机延迟。验证码答案失败或被拒绝时,机器人会请求新的验证码,重试次数最多为 withdraw_captcha_max_attempts(上限为三次)与服务器 attempts_left 中的较小值。
收到 retry_after_seconds 响应、提现锁定,或服务器尝试次数耗尽后,该账户将停止重试。直接运行提现:
npm run withdraw
为提现使用代理
如果 proxy.txt 或 proxies.txt 中包含代理,提现模式会为整个批次创建一个唯一代理池。每个代理只能被选择一次,即使使用失败也不会再次选择,并且在该批次中不会重新分配给其他账户。
如果登录、领取奖励、刷新余额、获取验证码、提交提现或获取历史记录时发生网络错误,账户会切换到下一个未使用且健康的代理。代理池存在时,提现不会静默回退到直连 IP。轮换期间,领取请求 ID 和提现请求 ID 保持不变,以降低重复操作的风险。
请为每个账户至少提供一个唯一代理,并为重试额外提供代理。如果代理池耗尽,当前账户将失败,处理会继续下一个账户。
高级可靠性与安全提示
- 除非存储位置受到适当保护,否则请勿将
wallets-accounts.json放在共享或同步位置。 - 更换钱包或迁移安装前,请安全备份钱包密钥。
- 仅对实际手动完成的任务使用
ready_task_ids。 - 请注意,账户代理会影响 ATF HTTP 请求,但不会影响直接的 Telegram MTProto 连接。
- 请配置足够数量的不同提现代理,因为已使用和失败的代理不会在同一批次内回收。
- 使用
Ctrl+C进行优雅关闭。机器人会清理连接,并在收到关闭信号后不再启动其他账户。 - 查看每个账户的摘要,其中会区分
success、partial和failed结果。
该项目通过 allowed_hosts 限制 API 和 WebApp 目标,并要求使用 HTTPS。它不会自动跟随 HTTP 重定向。HTTP 401 和 403 响应不会重试,而 HTTP 429 和 5xx 响应会使用带抖动的指数退避策略。
请求 ID 在重试期间保持稳定,因此服务器可以将重复操作视为幂等操作。冷却时间和 already claimed 等业务响应不会被视为网络故障。在 ATF 登录期间反复失败的代理会被暂时隔离,机器人不会静默切换到直接 IP。
日志中的会话令牌、初始化数据、哈希值和代理密码都会被脱敏。稳定的设备 ID 会按 Telegram ID 存储在 .state/device-ids.json 中。机器人还会在每个周期重新加载 config.json、会话、代理和账户覆盖配置。
当挖矿需要安全问题时,系统会自动解答已识别的基础算术题。对于未知格式,则回退到手动终端输入。
验证安装
完成设置或更改配置后,运行项目的检查和测试:
npm run check
npm test
结论
ATF Bot Automation v2 将全新的 Telegram WebView 身份验证与多账户 ATF 自动化、TON 钱包验证、动态任务、推荐、账户审计和受控提现相结合。请从有效的 Telethon 会话和受保护的 Telegram 凭据开始,使用少量账户验证主要工作流,并将 wallets-accounts.json 视为高价值机密,因为其中包含对每个生成钱包的直接访问权限。
