From e1568f60ffda0bd2c112dc57ffae2dedab0488ad Mon Sep 17 00:00:00 2001 From: anghunk Date: Fri, 30 Jan 2026 17:49:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(telegram):=20=E6=96=B0=E5=A2=9E=20Telegram?= =?UTF-8?q?=20=E6=9C=BA=E5=99=A8=E4=BA=BA=E9=80=9A=E7=9F=A5=E4=B8=8E?= =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E5=AE=A1=E6=A0=B8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 Telegram 通知功能,支持通过机器人接收新评论通知 - 在 Telegram 消息中提供“批准”和“删除”按钮,支持快捷审核 - 新增后台 Telegram 设置页面,支持配置 Bot Token、Chat ID 和开关 - 新增 `/api/telegram/webhook` 端点处理按钮回调 - 更新邮件通知逻辑,统一使用评论设置中的 `adminEmail` 作为收件人 - 更新相关文档,包括功能说明和 API 文档 --- cwd-admin/src/api/admin.ts | 26 +++ cwd-admin/src/views/SettingsView.vue | 216 +++++++++++++++++----- cwd-api/src/api/admin/telegramSettings.ts | 73 ++++++++ cwd-api/src/api/public/getComments.ts | 27 ++- cwd-api/src/api/public/postComment.ts | 71 +++++-- cwd-api/src/api/telegram/webhook.ts | 54 ++++++ cwd-api/src/index.ts | 14 ++ cwd-api/src/utils/email.ts | 22 ++- cwd-api/src/utils/telegram.ts | 120 ++++++++++++ docs/.vitepress/configs/sidebar.js | 2 + docs/api/admin/email-notify.md | 14 +- docs/api/admin/settings.md | 2 +- docs/api/admin/telegram-notify.md | 78 ++++++++ docs/function/email-reminder.md | 6 +- docs/function/telegram-notify.md | 33 ++++ docs/guide/frontend-config.md | 5 +- 16 files changed, 678 insertions(+), 85 deletions(-) create mode 100644 cwd-api/src/api/admin/telegramSettings.ts create mode 100644 cwd-api/src/api/telegram/webhook.ts create mode 100644 cwd-api/src/utils/telegram.ts create mode 100644 docs/api/admin/telegram-notify.md create mode 100644 docs/function/telegram-notify.md diff --git a/cwd-admin/src/api/admin.ts b/cwd-admin/src/api/admin.ts index 26d869c..2d9206f 100644 --- a/cwd-admin/src/api/admin.ts +++ b/cwd-admin/src/api/admin.ts @@ -329,3 +329,29 @@ export function saveFeatureSettings(data: { }): Promise<{ message: string }> { return put<{ message: string }>('/admin/settings/features', data); } + +export type TelegramSettingsResponse = { + botToken: string | null; + chatId: string | null; + notifyEnabled: boolean; +}; + +export function fetchTelegramSettings(): Promise { + return get('/admin/settings/telegram'); +} + +export function saveTelegramSettings(data: { + botToken?: string; + chatId?: string; + notifyEnabled?: boolean; +}): Promise<{ message: string }> { + return put<{ message: string }>('/admin/settings/telegram', data); +} + +export function setupTelegramWebhook(): Promise<{ message: string; webhookUrl: string }> { + return post<{ message: string; webhookUrl: string }>('/admin/settings/telegram/setup', {}); +} + +export function sendTelegramTestMessage(): Promise<{ message: string }> { + return post<{ message: string }>('/admin/settings/telegram/test', {}); +} diff --git a/cwd-admin/src/views/SettingsView.vue b/cwd-admin/src/views/SettingsView.vue index 340d350..ada1d24 100644 --- a/cwd-admin/src/views/SettingsView.vue +++ b/cwd-admin/src/views/SettingsView.vue @@ -151,15 +151,6 @@ -
- - -

1. SMTP 发件配置

@@ -216,7 +207,7 @@
@@ -291,6 +282,80 @@
+ +
+
+
Telegram 通知设置
+
+
+ +
+
+ + +
+
+ + +
+ 在 Telegram 中搜索 + @BotFather + 创建机器人获取 Token +
+
+
+ + +
+ 这是接收通知的用户 ID 或群组 ID。可以先给机器人发消息,然后通过 API 获取 + ID,或者使用 + @userinfobot 查询。 +
+
+ +
+ + + +
+
+
+
@@ -298,8 +363,6 @@