From 38dfb3af074655046e0ae208341d4828d2bc8dc3 Mon Sep 17 00:00:00 2001 From: EkkoG Date: Sat, 7 Mar 2026 23:21:09 +0800 Subject: [PATCH] feat: add QQ notification channel support with validation and localization --- .../cards/NotificationChannelCard.vue | 53 +++++++++++++++ src/composables/useSetupWizard.ts | 10 +++ src/locales/en-US.ts | 16 +++++ src/locales/zh-CN.ts | 16 +++++ src/locales/zh-TW.ts | 16 +++++ .../setting/AccountSettingNotification.vue | 3 + src/views/setup/NotificationSettingsStep.vue | 66 +++++++++++++++++++ 7 files changed, 180 insertions(+) diff --git a/src/components/cards/NotificationChannelCard.vue b/src/components/cards/NotificationChannelCard.vue index f539260e..0402b1a1 100644 --- a/src/components/cards/NotificationChannelCard.vue +++ b/src/components/cards/NotificationChannelCard.vue @@ -46,6 +46,7 @@ const notificationInfo = ref({ const notificationTypeNames: { [key: string]: string } = { wechat: t('notification.wechat.name'), telegram: t('notification.telegram.name'), + qqbot: t('notification.qqbot.name'), vocechat: t('notification.vocechat.name'), synologychat: t('notification.synologychat.name'), slack: t('notification.slack.name'), @@ -97,6 +98,8 @@ const getIcon = computed(() => { return getLogoUrl('wechat') case 'telegram': return getLogoUrl('telegram') + case 'qqbot': + return getLogoUrl('notification') case 'vocechat': return getLogoUrl('vocechat') case 'synologychat': @@ -464,6 +467,56 @@ function onClose() { /> + + + + + + + + + + + + + + + + + { {{ t('setting.notification.synologyChat') }} + + {{ t('setting.notification.qq') }} + {{ t('setting.notification.voceChat') }} diff --git a/src/views/setup/NotificationSettingsStep.vue b/src/views/setup/NotificationSettingsStep.vue index 1909d62f..19034ea5 100644 --- a/src/views/setup/NotificationSettingsStep.vue +++ b/src/views/setup/NotificationSettingsStep.vue @@ -91,6 +91,19 @@ const notificationTypes = [ + + + + +
QQ
+
+
+
+ + + + + + + + + + + + + + + + +