From 90d451cfa0a4c29a255efdfd95f5c0632bea7012 Mon Sep 17 00:00:00 2001 From: amtoaer Date: Wed, 8 Apr 2026 00:17:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20telegram=20=E9=80=9A=E7=9F=A5=E6=B8=A0?= =?UTF-8?q?=E9=81=93=E6=94=AF=E6=8C=81=E4=BB=85=E5=8F=91=E9=80=81=E6=96=87?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/bili_sync/src/api/routes/config/mod.rs | 7 +++++-- crates/bili_sync/src/notifier/mod.rs | 12 ++++++++++-- web/src/lib/types.ts | 1 + web/src/routes/settings/NotifierDialog.svelte | 11 ++++++++++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/crates/bili_sync/src/api/routes/config/mod.rs b/crates/bili_sync/src/api/routes/config/mod.rs index 154d594..41c9d6c 100644 --- a/crates/bili_sync/src/api/routes/config/mod.rs +++ b/crates/bili_sync/src/api/routes/config/mod.rs @@ -9,7 +9,7 @@ use sea_orm::DatabaseConnection; use crate::api::wrapper::{ApiError, ApiResponse, ValidatedJson}; use crate::bilibili::BiliClient; use crate::config::{Config, VersionedConfig}; -use crate::notifier::Notifier; +use crate::notifier::{Message, Notifier}; pub(super) fn router() -> Router { Router::new() @@ -41,7 +41,10 @@ pub async fn ping_notifiers( *ignore_cache = Some(()); } notifier - .notify(bili_client.inner_client(), "This is a test notification from BiliSync.") + .notify(bili_client.inner_client(), Message{ + message: "This is a test notification from BiliSync.".into(), + image_url: Some("https://socialify.git.ci/amtoaer/bili-sync/image?description=1&font=KoHo&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2023%2F12%2F02%2F9EwT2yInOu1d3zm.png&name=1&owner=1&pattern=Signal&pulls=1&stargazers=1&theme=Light".to_owned()), + }) .await?; Ok(ApiResponse::ok(())) } diff --git a/crates/bili_sync/src/notifier/mod.rs b/crates/bili_sync/src/notifier/mod.rs index 45b15ee..5f2eae3 100644 --- a/crates/bili_sync/src/notifier/mod.rs +++ b/crates/bili_sync/src/notifier/mod.rs @@ -18,6 +18,8 @@ pub enum Notifier { Telegram { bot_token: String, chat_id: String, + #[serde(default)] + skip_image: bool, }, Webhook { url: String, @@ -60,8 +62,14 @@ impl Notifier { async fn notify_internal<'a>(&self, client: &reqwest::Client, message: &Message<'a>) -> Result<()> { match self { - Notifier::Telegram { bot_token, chat_id } => { - if let Some(img_url) = &message.image_url { + Notifier::Telegram { + bot_token, + chat_id, + skip_image, + } => { + if let Some(img_url) = &message.image_url + && !*skip_image + { let url = format!("https://api.telegram.org/bot{}/sendPhoto", bot_token); let params = [ ("chat_id", chat_id.as_str()), diff --git a/web/src/lib/types.ts b/web/src/lib/types.ts index ccff298..ef86087 100644 --- a/web/src/lib/types.ts +++ b/web/src/lib/types.ts @@ -306,6 +306,7 @@ export interface TelegramNotifier { type: 'telegram'; bot_token: string; chat_id: string; + skip_image: boolean; } export interface WebhookNotifier { diff --git a/web/src/routes/settings/NotifierDialog.svelte b/web/src/routes/settings/NotifierDialog.svelte index a0cfb66..9ccb0ae 100644 --- a/web/src/routes/settings/NotifierDialog.svelte +++ b/web/src/routes/settings/NotifierDialog.svelte @@ -1,5 +1,6 @@