telegram-bot.mdx 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. ---
  2. title: Telegram 机器人
  3. description: 将 Telegram 机器人接入 3x-ui,实现命令交互、周期性报告、事件告警(登录、CPU、节点上线/下线)、备份以及客户端自助服务。
  4. icon: Send
  5. ---
  6. 3x-ui 可以驱动一个 Telegram 机器人,用于监控、告警、备份和远程管理。
  7. 管理员拥有完全的控制权;普通用户(通过 Telegram ID 关联)则可以
  8. 查询自己的用量和链接。
  9. <Callout type="info">
  10. 想获取最新动态和社区支持?欢迎加入官方 Telegram 频道
  11. [@XrayUI](https://t.me/XrayUI)。它与下文中那个由你自行运行、用于管理自己面板的
  12. 机器人是两回事。
  13. </Callout>
  14. ## 完成配置
  15. <Steps>
  16. <Step>
  17. ### 创建机器人
  18. 向 [@BotFather](https://t.me/BotFather) 发送消息,发送 `/newbot`,然后复制**机器人令牌**(bot token)。
  19. </Step>
  20. <Step>
  21. ### 查找你的 Telegram ID
  22. 获取你的数字 Telegram 用户 ID(机器人连接成功后,其自带的 `/id` 命令会显示该 ID)。
  23. 这就是你的**管理员** ID。
  24. </Step>
  25. <Step>
  26. ### 配置面板
  27. 在面板设置中启用 Telegram 机器人,并填写**令牌**和**管理员聊天 ID**
  28. (多个时以逗号分隔)。保存后,再向你的机器人发送消息。
  29. </Step>
  30. </Steps>
  31. 在将令牌、管理员 ID 和报告计划粘贴到面板之前,先对它们进行校验:
  32. <TelegramSetupHelper />
  33. ## 命令
  34. 以下命令会出现在 Telegram 命令菜单中:`/start`、`/help`、`/status`、`/id`。
  35. 其他命令:
  36. | 命令 | 适用对象 | 作用 |
  37. | ------------------ | ------ | ------------------------------------------------------------ |
  38. | `/start` | 任何人 | 问候语以及内联按钮菜单;未绑定的账号只会收到自己的 Telegram ID |
  39. | `/help` | 两者 | 内联按钮菜单 |
  40. | `/status` | 两者 | 确认机器人在线 |
  41. | `/id` | 任何人 | 显示你的 Telegram 数字 ID |
  42. | `/usage <arg>` | 两者 | 管理员可搜索客户端;用户则查询自己的用量 |
  43. | `/inbound <remark>`| 管理员 | 显示某个入站的详情 |
  44. | `/restart` | 管理员 | 重启 Xray |
  45. 用户是指至少绑定了一个客户端的 Telegram 账号。其他账号只能使用 `/start` 和
  46. `/id`,机器人会忽略它们的其他命令和按钮点击。要绑定客户,请在机器人的客户端卡片上点击
  47. **邀请链接**,并把 `t.me` 链接发给对方:第一个打开该链接的账号会绑定到共用该订阅
  48. ID 的所有客户端。订阅 ID 就是邀请码,因此请保持其足够长且随机。每个账号每小时
  49. 可尝试五次,用完后会通知管理员。
  50. 管理员还可通过内联按钮使用一系列功能:服务器用量、按流量排序的报告、
  51. 重置流量、数据库备份、封禁日志、列出入站/客户端、在线客户端、
  52. “即将耗尽”,以及完整的**添加客户端**向导。普通用户则可以使用按钮查看
  53. 自己的用量、订阅链接、单条链接和 QR 码。
  54. ## 报告与告警
  55. - **周期性报告** —— 按 `tgRunTime` 计划(默认 `@daily`),机器人会向管理员
  56. 发送服务器用量(主机、版本、运行时长、负载、内存、在线客户端、流量)、
  57. 一份已耗尽/即将到期的客户端列表,以及——如果启用了 `tgBotBackup`——
  58. 一份数据库 + Xray 配置的备份。通过 Telegram ID 关联的客户端则会收到
  59. 各自的到期/配额提醒。
  60. - **事件告警** —— 由 `tgEnabledEvents` 选定(默认 `login.attempt,cpu.high`):
  61. | 事件 | 触发时机 |
  62. | --------------- | ------------------------------------------------------- |
  63. | `login.attempt` | 面板登录成功或失败时(附带 IP 和用户名) |
  64. | `cpu.high` | CPU 超过 `tgCpu` 百分比(默认 80) |
  65. | `memory.high` | 内存超过 `tgMemory` 百分比(默认 80) |
  66. | `xray.crash` | Xray-core 崩溃 |
  67. | `outbound.down` / `outbound.up` | 某个出站断开 / 恢复 |
  68. | `node.down` / `node.up` | 某个节点下线 / 重新上线 |
  69. 提醒的提前时间由 `expireDiff`(到期前的天数)和 `trafficDiff`
  70. (剩余配额的 GB 数)决定;两者默认均为 `0`(关闭)。
  71. ## 设置
  72. | 设置项 | 默认值 | 含义 |
  73. | -------------- | -------------------------- | ---------------------------------------------- |
  74. | `tgBotEnable` | `false` | 总开关。 |
  75. | `tgBotToken` | _(机密)_ | 机器人 API 令牌。 |
  76. | `tgBotChatId` | _(无)_ | 以逗号分隔的**管理员** Telegram ID。 |
  77. | `tgBotProxy` | _(无)_ | `socks5://`、`http://` 或 `https://` 代理。 |
  78. | `tgBotAPIServer` | _(默认)_ | 自定义 Telegram Bot API 服务器。 |
  79. | `tgRunTime` | `@daily` | 报告计划(cron / `@daily` / `@every …`)。 |
  80. | `tgBotBackup` | `false` | 在周期性报告中附带一份数据库备份。 |
  81. | `tgCpu` / `tgMemory` | `80` / `80` | CPU / 内存告警阈值(百分比)。 |
  82. | `tgLang` | `en-US` | 机器人语言。 |
  83. | `tgEnabledEvents` | `login.attempt,cpu.high`| 投递哪些事件。 |
  84. <Callout type="warn">
  85. 机器人令牌掌控着你的机器人——务必妥善保密,且只添加**可信的**管理员聊天 ID。
  86. 登录告警绝不会包含密码。
  87. </Callout>
  88. <Callout type="info">
  89. 如果你更倾向于通过邮件接收告警,邮件(SMTP)通知会镜像同样的这些事件
  90. (`smtpEnabledEvents`)——请在面板设置中配置 SMTP。
  91. </Callout>