feat(telegram): 新增 Telegram 机器人通知与快捷审核功能
- 新增 Telegram 通知功能,支持通过机器人接收新评论通知 - 在 Telegram 消息中提供“批准”和“删除”按钮,支持快捷审核 - 新增后台 Telegram 设置页面,支持配置 Bot Token、Chat ID 和开关 - 新增 `/api/telegram/webhook` 端点处理按钮回调 - 更新邮件通知逻辑,统一使用评论设置中的 `adminEmail` 作为收件人 - 更新相关文档,包括功能说明和 API 文档
This commit is contained in:
@@ -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' },
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -43,7 +43,7 @@ GET /admin/settings/comments
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
| ---------------- | --------------- | --------------------------------------------------------- |
|
||||
| `adminEmail` | string | 博主邮箱地址,用于显示"博主"标识以及管理员身份验证 |
|
||||
| `adminEmail` | string | 博主邮箱地址,用于显示"博主"标识、管理员身份验证以及接收新评论邮件通知 |
|
||||
| `adminBadge` | string | 博主标识文字,例如 `"博主"` |
|
||||
| `avatarPrefix` | string | 头像地址前缀,如 Gravatar 或 Cravatar 镜像地址 |
|
||||
| `adminEnabled` | boolean | 是否启用博主标识相关展示 |
|
||||
|
||||
78
docs/api/admin/telegram-notify.md
Normal file
78
docs/api/admin/telegram-notify.md
Normal 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"
|
||||
}
|
||||
```
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
## 邮件通知配置
|
||||
|
||||
在设置页面可以配置邮件通知功能,包括:
|
||||
在后台「设置」页面可以配置邮件通知功能,包括:
|
||||
|
||||
### 全局开关
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
|
||||
### 测试邮件
|
||||
|
||||
配置完成后,可以使用"测试邮件"功能发送一封测试邮件到指定邮箱,验证配置是否正确。
|
||||
配置完成后,可以使用「发送测试邮件」功能验证配置是否正确。
|
||||
|
||||
测试邮件和实际的新评论通知收件人,都会使用「评论显示配置」中的管理员邮箱(`adminEmail`)。无需在「通知邮箱设置」中单独配置收件邮箱。
|
||||
|
||||
33
docs/function/telegram-notify.md
Normal file
33
docs/function/telegram-notify.md
Normal 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**(重要:必须执行此步骤,机器人才能接收按钮点击事件)。
|
||||
|
||||
## 使用说明
|
||||
|
||||
- **审核**:点击消息下方的按钮即可(批准 / 删除)。
|
||||
@@ -41,12 +41,13 @@ CWD 评论组件采用 **Shadow DOM** 技术构建,基于独立根节点渲染
|
||||
|
||||
头像前缀、博主邮箱和标识等信息由后端接口 `/api/config/comments` 提供,无需在前端进行配置。
|
||||
|
||||
当 `/admin/settings/comments` 中配置了“评论博主邮箱”时:
|
||||
当 `/admin/settings/comments` 中配置了“评论博主邮箱”(`adminEmail`)时:
|
||||
|
||||
- 前台组件会将该邮箱视为“管理员邮箱”;
|
||||
- 使用该邮箱发表评论时,会在邮箱输入框失焦后触发“管理员身份验证”弹窗;
|
||||
- 验证通过后,会在浏览器本地保存一次管理员密钥(仅用于本机后续请求携带 `adminToken`);
|
||||
- 后端会在 `/api/comments` 中校验此密钥,确保管理员身份的评论需要额外验证。
|
||||
- 后端会在 `/api/comments` 中校验此密钥,确保管理员身份的评论需要额外验证;
|
||||
- 后端邮件通知会将新评论提醒发送到该邮箱,无需再单独配置通知收件人。
|
||||
|
||||
## 实例方法
|
||||
|
||||
|
||||
Reference in New Issue
Block a user