fix(core): 🐛 优化数据库结构并添加用户状态标记

在 Telegram Bot 核心逻辑中,为消息表增加了 topic_message_id 字段以支持
话题模式。重构了 Telegram API 请求封装逻辑,增强了错误处理能力。

同时在文档中增加了关于“用户屏蔽 Bot”的常见问题说明。系统现在可以自动
检测用户屏蔽状态,并在管理界面展示屏蔽标记,当用户重新互动时会自动清
除该标记。
This commit is contained in:
2026-05-08 23:48:14 +08:00
parent 02b6cb1735
commit c4b6d5ec0f
2 changed files with 180 additions and 25 deletions

View File

@@ -1,4 +1,4 @@
# Telegram Bot Worker
yi'xia# Telegram Bot Worker
`tg-bot.js` 是一个部署在 Cloudflare Workers 上的 Telegram 双向私聊中继 Bot版本 v3.68)。它会把用户私聊消息转发到管理员论坛群的独立 topic 中,管理员在对应 topic 内回复即可把消息发回用户,同时提供验证、过滤、封禁、备注、自动回复、备份和 Telegram 内联管理面板。
@@ -240,6 +240,36 @@ curl -X POST "https://api.telegram.org/bot<BOT_TOKEN>/setWebhook" \
- **引用块**:以 `>``》``&gt;` 开头的文本会被渲染为 HTML 引用块
- **媒体欢迎语**:管理员可以在面板中上传图片/视频/GIF 作为欢迎语
### ⚠️ 常见问题:用户屏蔽 Bot
如果管理员回复时收到错误提示:**"⚠️ 用户已屏蔽 Bot"**,说明该用户已在 Telegram 中屏蔽了机器人。
**症状:**
- 管理员可以正常接收用户消息
- 管理员回复时显示 "用户已屏蔽 Bot" 错误
- 用户收不到管理员的回复
**原因:**
用户在 Telegram 中点击了"屏蔽机器人"Block Bot导致 Bot 无法再主动发消息给用户。即使用户之前发送过消息,屏蔽后 Bot 也无法回复。
**自动标记功能:**
系统会自动检测并标记被屏蔽的用户:
- 当检测到用户屏蔽 Bot 时,会自动在用户卡片上显示屏蔽状态和时间
- 用户卡片会显示 `⛔ 用户屏蔽Bot: 是 (时间)`
- 当用户重新发送消息或管理员解封时,自动清除屏蔽标记
**解决方案:**
需要通过其他方式联系该用户,让其按以下步骤解除屏蔽:
1. 打开与机器人的聊天窗口
2. 点击右上角菜单(三个点或机器人名称)
3. 选择"解除屏蔽"或"Unblock bot"
4. 重新发送 `/start` 命令激活机器人
**预防措施:**
- 在欢迎语中提醒用户不要屏蔽机器人
- 定期检查被屏蔽的用户列表(查看用户卡片上的屏蔽状态)
- 对于重要用户,建议通过其他渠道保持联系
## 安全建议
### 🔐 认证与授权