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 有自己的消息传递机制。
解读流程
- 用户发送
/reading或点击内联按钮 - 机器人展示内联键盘牌阵选择器(13 种牌阵,7 行排列)
- 用户选择一种牌阵
- 机器人提示输入问题
- 机器人调用内部 API 创建解读
- 机器人逐段发送解读结果:
- 牌面图片
- 总结
- 逐牌解读
- 实践建议
- 增运提示
- 完整解读在 ~10-30 秒内送达
账号关联
用户可以将 Telegram 账号关联到 MysticX 网页账号,以启用:
- 后续追问对话
- 解读历史同步
- 基于积分的功能
关联流程:
- 用户在 Telegram 中点击
/connect - 机器人生成深链接:
t.me/MysticXAliceBot?start=link_{code} - 用户访问链接并在网页端进行身份验证
- 创建
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