feat(telegram): 新增 Telegram 机器人通知与快捷审核功能

- 新增 Telegram 通知功能,支持通过机器人接收新评论通知
- 在 Telegram 消息中提供“批准”和“删除”按钮,支持快捷审核
- 新增后台 Telegram 设置页面,支持配置 Bot Token、Chat ID 和开关
- 新增 `/api/telegram/webhook` 端点处理按钮回调
- 更新邮件通知逻辑,统一使用评论设置中的 `adminEmail` 作为收件人
- 更新相关文档,包括功能说明和 API 文档
This commit is contained in:
anghunk
2026-01-30 17:49:47 +08:00
parent c4954fca89
commit e1568f60ff
16 changed files with 678 additions and 85 deletions

View File

@@ -13,6 +13,7 @@ export const rootSidebar = [
items: [
{ text: '后台设置', link: '/function/admin-panel' },
{ text: '通知邮箱', link: '/function/email-reminder' },
{ text: 'Telegram 通知', link: '/function/telegram-notify' },
{ text: '安全设置', link: '/function/security-settings' },
{ text: '数据管理', link: '/function/data-migration' },
{ text: '点赞开关', link: '/function/feature-settings' },
@@ -37,6 +38,7 @@ export const apiSidebar = [
{ text: '数据管理', link: '/api/admin/data-migration' },
{ text: '评论设置', link: '/api/admin/settings' },
{ text: '邮件通知', link: '/api/admin/email-notify' },
{ text: 'Telegram 通知', link: '/api/admin/telegram-notify' },
{ text: '统计数据', link: '/api/admin/stats' },
{ text: '访问统计', link: '/api/admin/analytics' },
{ text: '点赞开关', link: '/api/admin/feature-settings' },

View File

@@ -2,6 +2,8 @@
邮件通知配置接口用于获取和更新 SMTP 配置、邮件模板以及测试邮件发送功能。
新评论的邮件通知会发送到「评论设置」(`/admin/settings/comments`) 中配置的管理员邮箱(`adminEmail`),无需在本接口中单独设置收件邮箱。
所有接口都需要在请求头中携带 Bearer Token。
```http
@@ -194,10 +196,10 @@ POST /admin/settings/email-test
字段说明:
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | ---- | ------------------------------------ |
| `toEmail` | string | 是 | 接收测试邮件的邮箱地址 |
| `smtp` | object | 是 | SMTP 配置对象(与更新配置接口相同) |
| 字段名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ------------------------------------ |
| `toEmail` | string | 是 | 接收测试邮件的邮箱地址 |
| `smtp` | object | 是 | SMTP 配置对象(与更新配置接口相同) |
**成功响应**
@@ -247,7 +249,7 @@ GET /admin/settings/email
获取当前通知邮箱配置。
> [!NOTE]
> 此接口已被 `/admin/settings/email-notify` 替代,建议使用接口获取完整的邮件通知配置
> 此接口已被 `/admin/settings/email-notify` 替代,且管理员通知邮箱已统一由 `/admin/settings/comments` 中的 `adminEmail` 提供,不再推荐使用接口。
- 方法:`GET`
- 路径:`/admin/settings/email`
@@ -282,7 +284,7 @@ PUT /admin/settings/email
设置通知邮箱,用于接收新评论提醒。
> [!NOTE]
> 此接口已被 `/admin/settings/email-notify` 替代,建议使用新接口获取完整的邮件通知配置
> 此接口已被 `/admin/settings/email-notify` 替代,且通知收件邮箱已统一使用评论配置中的 `adminEmail`,不再推荐调用本接口
- 方法:`PUT`
- 路径:`/admin/settings/email`

View File

@@ -43,7 +43,7 @@ GET /admin/settings/comments
| 字段名 | 类型 | 说明 |
| ---------------- | --------------- | --------------------------------------------------------- |
| `adminEmail` | string | 博主邮箱地址,用于显示"博主"标识以及管理员身份验证 |
| `adminEmail` | string | 博主邮箱地址,用于显示"博主"标识管理员身份验证以及接收新评论邮件通知 |
| `adminBadge` | string | 博主标识文字,例如 `"博主"` |
| `avatarPrefix` | string | 头像地址前缀,如 Gravatar 或 Cravatar 镜像地址 |
| `adminEnabled` | boolean | 是否启用博主标识相关展示 |

View File

@@ -0,0 +1,78 @@
# Telegram 通知设置
Telegram 通知设置接口用于获取和更新 Telegram 机器人的配置,包括 Bot Token、Chat ID 以及 Webhook 设置。
所有接口都需要在请求头中携带 Bearer Token。
```http
Authorization: Bearer <token>
```
## 1.1 获取 Telegram 配置
```
GET /admin/settings/telegram
```
获取当前的 Telegram 通知配置。
- 方法:`GET`
- 路径:`/admin/settings/telegram`
- 鉴权需要Bearer Token
**成功响应**
- 状态码:`200`
```json
{
"botToken": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
"chatId": "123456789",
"notifyEnabled": true
}
```
## 1.2 更新 Telegram 配置
```
PUT /admin/settings/telegram
```
更新 Telegram 通知配置。
- 方法:`PUT`
- 路径:`/admin/settings/telegram`
- 鉴权需要Bearer Token
**请求体**
```json
{
"botToken": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
"chatId": "123456789",
"notifyEnabled": true
}
```
## 1.3 一键设置 Webhook
```
POST /admin/settings/telegram/setup
```
自动设置 Telegram Webhook URL。此接口会使用当前 Worker 的域名构建 Webhook URL 并调用 Telegram API。
- 方法:`POST`
- 路径:`/admin/settings/telegram/setup`
- 鉴权需要Bearer Token
**成功响应**
- 状态码:`200`
```json
{
"message": "Webhook 设置成功",
"webhookUrl": "https://your-domain.com/api/telegram/webhook"
}
```

View File

@@ -15,7 +15,7 @@
## 邮件通知配置
在设置页面可以配置邮件通知功能,包括:
后台「设置页面可以配置邮件通知功能,包括:
### 全局开关
@@ -58,4 +58,6 @@
### 测试邮件
配置完成后,可以使用"测试邮件"功能发送一封测试邮件到指定邮箱,验证配置是否正确。
配置完成后,可以使用「发送测试邮件功能验证配置是否正确。
测试邮件和实际的新评论通知收件人,都会使用「评论显示配置」中的管理员邮箱(`adminEmail`)。无需在「通知邮箱设置」中单独配置收件邮箱。

View File

@@ -0,0 +1,33 @@
# Telegram 通知与交互
系统支持通过 Telegram 机器人接收新评论通知,并在 Telegram 中对评论进行批准或删除操作。
## 功能特性
1. **实时通知**:新评论会立即推送到指定的 Telegram 账号或群组。
2. **快捷审核**:通知消息包含“批准”和“删除”按钮,无需登录后台即可审核。
## 配置步骤
1. **创建机器人**
- 在 Telegram 中搜索 `@BotFather`
- 发送 `/newbot` 命令,按照提示创建新机器人。
- 获取 **API Token**
2. **获取 Chat ID**
- 如果是个人接收,给你的机器人发送一条消息。
- 访问 `https://api.telegram.org/bot<YourBOTToken>/getUpdates` 查看 `chat.id`
- 或者使用 `@userinfobot` 获取你的 ID。
- 如果是群组,将机器人拉入群组,并获取群组 ID通常以 `-` 开头)。
3. **后台设置**
- 登录评论系统后台。
- 进入“设置” -> “Telegram 通知设置”。
- 填入 **Bot Token****Chat ID**
- 开启 **Telegram 通知** 开关。
- 点击 **保存**
- 点击 **一键设置 Webhook**(重要:必须执行此步骤,机器人才能接收按钮点击事件)。
## 使用说明
- **审核**:点击消息下方的按钮即可(批准 / 删除)。

View File

@@ -41,12 +41,13 @@ CWD 评论组件采用 **Shadow DOM** 技术构建,基于独立根节点渲染
头像前缀、博主邮箱和标识等信息由后端接口 `/api/config/comments` 提供,无需在前端进行配置。
`/admin/settings/comments` 中配置了“评论博主邮箱”时:
`/admin/settings/comments` 中配置了“评论博主邮箱”`adminEmail`时:
- 前台组件会将该邮箱视为“管理员邮箱”;
- 使用该邮箱发表评论时,会在邮箱输入框失焦后触发“管理员身份验证”弹窗;
- 验证通过后,会在浏览器本地保存一次管理员密钥(仅用于本机后续请求携带 `adminToken`
- 后端会在 `/api/comments` 中校验此密钥,确保管理员身份的评论需要额外验证
- 后端会在 `/api/comments` 中校验此密钥,确保管理员身份的评论需要额外验证
- 后端邮件通知会将新评论提醒发送到该邮箱,无需再单独配置通知收件人。
## 实例方法