Skip to content

Telegram 机器人

概述

MysticX 有一个 Telegram 机器人(@MysticXAliceBot),可在 Telegram 内提供完整的 AI 塔罗解读体验。机器人作为独立进程运行,使用 grammY 的长轮询模式。

命令

命令说明
/start欢迎消息和快捷操作
/draw快速单牌抽取
/daily每日一牌(静态)
/reading完整 AI 解读(牌阵选择器 + 问题输入)
/spread静态抽牌(无 AI 解读)
/spreads列出所有可用牌阵
/connect将 Telegram 账号关联到 MysticX 网页账号
/disconnect取消 Telegram 账号关联

快捷语法

高级用户可以合并命令和问题:

/reading love-deep Is this the right person for me?

架构

机器人不使用 BullMQ,而是通过内部 HTTP 调用 Next.js API:

Telegram Bot(grammY 长轮询)


POST /api/v1/internal/readings/create
       │(由 INTERNAL_API_KEY 请求头保护)

Next.js 服务端
       │  → 创建解读
       │  → 直接调用 Gemini
       │  → 返回结构化解读

机器人格式化并逐段发送

这简化了异步流程,因为 Telegram 有自己的消息传递机制。

解读流程

  1. 用户发送 /reading 或点击内联按钮
  2. 机器人展示内联键盘牌阵选择器(13 种牌阵,7 行排列)
  3. 用户选择一种牌阵
  4. 机器人提示输入问题
  5. 机器人调用内部 API 创建解读
  6. 机器人逐段发送解读结果:
    • 牌面图片
    • 总结
    • 逐牌解读
    • 实践建议
    • 增运提示
  7. 完整解读在 ~10-30 秒内送达

账号关联

用户可以将 Telegram 账号关联到 MysticX 网页账号,以启用:

  • 后续追问对话
  • 解读历史同步
  • 基于积分的功能

关联流程:

  1. 用户在 Telegram 中点击 /connect
  2. 机器人生成深链接:t.me/MysticXAliceBot?start=link_{code}
  3. 用户访问链接并在网页端进行身份验证
  4. 创建 TelegramLink 记录,关联 Telegram ID 和用户 ID

未关联的用户仍可进行解读,但无法使用追问功能。

配置

变量说明
TELEGRAM_BOT_TOKEN从 @BotFather 获取的 Bot Token
TELEGRAM_BOT_ENABLED设为 false 可禁用(默认:true)
INTERNAL_API_KEY机器人与 API 之间的共享密钥

部署

机器人作为 PM2 进程(mysticx-telegram-bot)运行,配置如下:

  • 单实例(fork 模式)
  • 256 MB 内存限制
  • 崩溃后自动重启
  • 独立日志文件:logs/telegram-bot-*.log

Internal documentation for MysticX team