Telegram Bot 告警与通知配置实战指南 (Telegram Alert Setup Guide)
💡 文档背景:本指南结合本项目在实际部署过程中的实战踩坑与配置经验编写,手把手指导如何从零创建 Telegram Bot、获取个人/群组 Chat ID、配置代理与阈值,并将现货-合约 Delta 中性套利监控服务部署至后台常驻运行。
目录 (Table of Contents)
- 一、准备工作:创建 Telegram 机器人与获取 Token
- 二、获取接收通知的 Chat ID(私聊 vs 群组)
- 三、环境变量配置 (
.env) - 四、连通性与推送功能验证
- 五、后台常驻运行(Tmux 与 Systemd)
- 六、实战高频踩坑与常见问题 (FAQ)
一、准备工作:创建 Telegram 机器人与获取 Token
1. 向 @BotFather 申请 Bot
- 在 Telegram 搜索栏搜索官方机器人 @BotFather(带蓝色认证对勾)并打开对话。
- 发送指令:
/newbot。 - 按照提示输入机器人的 显示名称(Name,如
My Arbitrage Alert)。 - 输入机器人的 唯一用户名(Username,必须以
bot结尾,如web3arbitrage_alert_bot)。 - BotFather 会生成一段 API Token(形如
8875314269:AAHR_ZNcI_I3e5ZINV22222222222222222)。
⚠️ 关键避坑点(Token 完整性):
- 完整的 Token 必须包含前面的数字 ID、英文冒号以及后缀密钥(例如
8875314269:AAxxxxxxxxx)。- 切勿漏掉冒号前面的数字 ID,否则请求 Telegram API 时会直接报错
HTTP 404 Not Found。- 配置时无需手动添加
bot前缀(直接填写8875314269:AAxxxx...即可)。
二、获取接收通知的 Chat ID(私聊 vs 群组)
通知推送支持发送给个人私聊或多人协作群组。
场景 A:发送到「个人私聊」
- 打开 Telegram,私聊您的新机器人并点击一次底部的 START(或发送
/start)。 - 在终端运行本项目的内置辅助命令:
python cli.py monitor get-chat-id - 系统将自动输出您的个人 Chat ID(正整数,例如
6927319496):• [👤 私聊 (Private)] 名称: Daveking ➔ Chat ID: 6927319496
场景 B:发送到「Telegram 群组」(多人告警协作,推荐)
Telegram 为了保护群聊隐私,默认对普通机器人开启了「群消息隐私隔离 (Group Privacy)」,因此普通在群里发文字,机器人是无法感知群 ID 的。
推荐获取群组 ID 的三步法:
- 拉机器人进群:将您的 Bot(如
@web3arbitrage_alert_bot)邀请加入目标群组。 - 在群内发送一条激活指令: 在群聊天框中输入并发送(注意包含
@机器人用户名):/start@web3arbitrage_alert_bot💡 或者在群设置中将该 Bot 设为群管理员(Admin),无需给任何敏感权限。
- 在终端一键抓取群组 ID: 回到服务器终端,运行:
系统会立刻扫描 Telegram API 并列出群组的 Chat ID(群组 ID 为负数,例如python cli.py monitor get-chat-id-5572509478或-100xxxxxxxxxx):✅ 共发现 2 个交互 Chat 记录: ------------------------------------------------------------ • [👤 私聊 (Private)] 名称: DavekingInNorth ➔ Chat ID: 6927319496 • [👥 群组 (Group)] 名称: W3 start business ➔ Chat ID: -5572509478 ------------------------------------------------------------
三、环境变量配置 (.env)
复制 .env.example 为 .env(若已有直接编辑):
cp .env.example .env
nano .env
填入以下配置项:
# ==========================================
# Telegram Bot 告警通知配置
# ==========================================
# 完整的 Bot Token (含数字前缀与冒号)
TELEGRAM_BOT_TOKEN=8875314269:AAHR_ZNcI_I3e5ZINVrgKlhz22222222222
# 接收告警的 Chat ID (个人填正数如 6927319496,群组填负数如 -5572509488)
TELEGRAM_CHAT_ID=-5572509428
# 可选代理 (如果服务器位于国内等无法直连 Telegram 的网络环境,必须配置)
# 支持 HTTP 与 SOCKS5 协议,如: http://127.0.0.1:7890 或 socks5://127.0.0.1:1080
TELEGRAM_PROXY=
# ==========================================
# 监控与告警策略阈值配置
# ==========================================
# 监控目标交易所 (默认: binance,支持: binance, bybit, all)
MONITOR_EXCHANGES=binance
# 监控资产/交易对 (默认: ALL 自动扫描所有活跃合约持仓)
MONITOR_SYMBOLS=ALL
# 实时巡检轮询间隔 (秒,默认: 60)
MONITOR_INTERVAL_SECONDS=60
# 费率翻转预警阈值 (基准年化 APY %,低于此值或为负时触发告警,默认: 5.0)
ALERT_MIN_APY_PCT=5.0
# 单腿强平黄色补保警戒线 (% 距离,默认: 15.0)
ALERT_LIQ_WARNING_PCT=15.0
# 单腿强平红色紧急清仓警戒线 (% 距离,默认: 5.0)
ALERT_LIQ_DANGER_PCT=5.0
# 重复告警冷却防刷时间 (秒,默认: 1800 秒 / 30分钟)
ALERT_COOLDOWN_SECONDS=1800
四、连通性与推送功能验证
在正式启动 7x24 小时后台守护之前,请通过 CLI 工具执行以下四步验证:
1. 测试 Bot 连通性
python cli.py monitor test
- 预期输出:
✅ 测试成功!Bot @web3arbitragebot 已成功向 Chat ID -5572509488 发送通知。 - 此时群内会收到一张自检测试卡片。
2. 执行单次实盘监控巡检 (控制台排版输出)
python cli.py monitor check
- 系统会自动连入交易所接口,读取全部活跃持仓、计算当前标记价 vs 强平价距离、抓取实时资金费率与年化,并在控制台输出格式化报表。
3. 测试收益全景战报广播推送
python cli.py monitor broadcast
- 系统会实时聚合当前合约历史资金费流水、扣除的手续费摩擦、累计套利净收益与实现净年化(APR),直接向 Telegram 群组推送一份排版精美的收益战报。
五、后台常驻运行(Tmux 与 Systemd)
监控系统需要 7x24 小时持续轮询,推荐以下两种后台运行方式:
方案 A:使用 tmux 会话运行(最轻量、推荐)
1. 创建并启动监控会话
tmux new-session -d -s cex-monitor "cd ~/src/github/xiluo/cex-arbitrage && .venv/bin/python cli.py monitor run"
2. 进入会话查看实时监控日志
tmux attach -t cex-monitor
3. 离开会话(保持后台继续运行)
按下键盘组合键:Ctrl + B,然后松开按 D(Detach)。
4. 重启或停止监控
# 重启监控
tmux kill-session -t cex-monitor && tmux new-session -d -s cex-monitor "cd ~/src/github/xiluo/cex-arbitrage && .venv/bin/python cli.py monitor run"
# 彻底停止监控
tmux kill-session -t cex-monitor
方案 B:使用 Linux systemd 系统服务(生产高可用,开机自启)
创建系统服务配置文件:
sudo nano /etc/systemd/system/cex-arbitrage-monitor.service
写入以下配置(请将路径和 User 替换为您的实际用户名与目录):
[Unit]
Description=CEX Delta Neutral Arbitrage Monitor & Alert Daemon
After=network.target
[Service]
Type=simple
User=dave
WorkingDirectory=/home/ubuntu/src/github/xiluo/cex-arbitrage
ExecStart=/home/ubunut/src/github/dave/cex-arbitrage/.venv/bin/python cli.py monitor run
Restart=always
RestartSec=10
EnvironmentFile=/home/ubuntu/src/github/dave/cex-arbitrage/.env
[Install]
WantedBy=multi-user.target
启动并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl enable cex-arbitrage-monitor
sudo systemctl start cex-arbitrage-monitor
# 查看运行状态与实时日志
sudo systemctl status cex-arbitrage-monitor
journalctl -u cex-arbitrage-monitor -f
六、实战高频踩坑与常见问题 (FAQ)
Q1: 在 Telegram 里私聊给 Bot 发送 START 或文字,Bot 没有任何回复?
- 原因:本项目使用的 Telegram Bot 是服务端单向推送客户端(Outbound Push Client),专用于发生费率翻转、爆仓风险或定时结算时向您发送通知,未集成自动聊天回复逻辑。
- 正常现象:只要运行
python cli.py monitor test能正常在 Telegram 中收到卡片消息,即代表机器人工作完全正常。
Q2: 报错 Bot Token 鉴权失败 (HTTP 404): Not Found?
- 原因:
TELEGRAM_BOT_TOKEN填写不完整。 - 排查:检查
.env中的 Token 是否缺失了冒号前的数字 ID(如只填了AAHR_xxxx)。正确格式必须为:8875314269:AAHR_xxxx。
Q3: 报错 HTTP 403 Forbidden: the bot can't send messages to the bot?
- 原因:
TELEGRAM_CHAT_ID误填了 Bot 自己的 ID。机器人无法给自己发送消息。 - 解决:运行
python cli.py monitor get-chat-id获取您的个人 ID 或群组 ID,并填入.env。
Q4: 报错 HTTP 400 Bad Request: chat not found?
- 原因:
- 如果是私聊:您尚未在 Telegram 中搜索该 Bot 并点击 START,Telegram 禁止机器人主动骚扰未主动发起会话的用户。
- 如果是群组:未将 Bot 拉入该群组,或群 ID 填错了负号(群组 ID 必须包含前面的
-负号,如-5572509478)。
Q5: 为什么拉入群组后运行 get-chat-id 依然看不到群?
- 原因:Telegram 群组隐私模式限制了机器人接收普通群聊。
- 解决办法:在群里艾特机器人发送一次指令(如
/start@您的bot用户名),或者在群设置里将 Bot 设为管理员 (Admin),然后再运行python cli.py monitor get-chat-id。
Q6: 为什么我的服务器连不上 Telegram API(提示超时或网络不可达)?
- 原因:服务器位于中国大陆等限制访问 Telegram 域名的网络环境。
- 解决办法:在服务器部署代理(如 Clash / V2ray / SOCKS5),并在
.env中配置TELEGRAM_PROXY=http://127.0.0.1:7890。
附录:告警卡片样式预览
1. 资金费率翻转 / 低 APY 预警卡片
🚨 【资金费率翻转预警 · 费率转负】
━━━━━━━━━━━━━━━━━━
• 交易所: Binance
• 标的合约: ETH/USDT
• 实时费率: -0.0150%
• 折合基准年化: -16.42%
• 预警阈值: APY < 5.00%
• 下次结算时间: 2026-08-23 00:00:00 UTC
━━━━━━━━━━━━━━━━━━
💡 建议操作:
资金费率已变为负数,做空套利需向多头支付资金费,持有将持续产生摩擦亏损!建议立即评估平仓对冲离场。
• 执行平仓指令: python cli.py trade close
2. 单腿强平风险警报卡片
⚠️ 【单腿强平预警 · 需立即补保】
━━━━━━━━━━━━━━━━━━
• 交易所: Binance
• 持仓标的: BNB/USDT [做空 (SHORT) 20X]
• 持仓数量: 13.0100
• 当前标记价: $696.25
• 预估强平价: $780.00
• 爆仓安全距离: 距离强平仅剩 12.03% (低于警戒线 15.0%)
━━━━━━━━━━━━━━━━━━
🚨 处置建议:
标的价格持续上涨,空单强平距离收窄!
👉 建议立即向合约账户划转保证金(USDT/ETH/BNB)提升安全边际,避免中性对冲单腿爆仓!
• 划转命令: python cli.py transfer usdt --amount <数量>
3. 定时费率结算与收益战报卡片
💰 【资金费率结算与套利收益播报】
━━━━━━━━━━━━━━━━━━
• 交易所: Binance | 标的: BNB/USDT
• 本次结算收入: +1.8540 USDT (费率: +0.0176%)
• 结算时间: 2026-08-22 16:00:00 UTC
━━━━━━━━━━━━━━━━━━
📊 套利全景绩效:
• 累计已收资金费: +185.6000 USDT
• 累计交易手续费: -14.2000 USDT
• 累计套利净收益: +171.4000 USDT
• 当前总持仓本金: $12,500.00 USDT
• 实际实现净年化: +15.32% (毛年化: +16.78%)
• 运行统计: 已运行 21.5 天 (共结算 64 次 | 正费率胜率 96.9%)
━━━━━━━━━━━━━━━━━━
⏰ 下次预计结算: 2026-08-23 00:00:00 UTC
Comments
Post a Comment