From 6c015137df8603ecff7ffcbe7ca552541a054112 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Mon, 27 Oct 2025 13:14:22 +0200 Subject: [PATCH] refactor: main file --- src/main.rs | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/main.rs b/src/main.rs index 2712f9f..42ddf41 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,9 @@ use dotenv::dotenv; -use teloxide::{Bot, prelude::Requester, repls::CommandReplExt, respond, types::Message}; +use teloxide::{prelude::*, respond}; use tg_relay_rs::{ commands::{Command, answer}, comments::{Comments, init_global_comments}, - handler::create_handlers, + handler::{Handler, create_handlers}, telemetry::setup_logger, }; use tracing::{error, info, warn}; @@ -35,27 +35,7 @@ async fn main() -> color_eyre::Result<()> { // clone the handlers vector into the closure let handlers = handlers.clone(); async move { - if let Some(text) = msg.text() { - for handler in handlers.iter() { - if let Some(id) = handler.try_extract(text) { - let handler = handler.clone(); - let bot_for_task = bot.clone(); - let chat = msg.chat.id; - - tokio::spawn(async move { - if let Err(err) = handler.handle(&bot_for_task, chat, id).await { - error!(%err, "handler failed"); - - let _ = bot_for_task - .send_message(chat, "Failed to fetch media, you foking donkey.") - .await; - } - }); - // if one handler matched, stop checking - break; - } - } - } + process_message(&bot, &msg, &handlers); respond(()) } }) @@ -63,3 +43,27 @@ async fn main() -> color_eyre::Result<()> { Ok(()) } + +fn process_message(bot: &Bot, msg: &Message, handlers: &[Handler]) { + let Some(text) = msg.text() else { + return; + }; + + for handler in handlers { + if let Some(url) = handler.try_extract(text) { + handle_extracted_content(bot.clone(), msg.chat.id, handler.clone(), url); + break; + } + } +} + +fn handle_extracted_content(bot: Bot, chat: ChatId, handler: Handler, url: String) { + tokio::spawn(async move { + if let Err(err) = handler.handle(&bot, chat, url).await { + error!(%err, "handler failed"); + let _ = bot + .send_message(chat, "Failed to fetch media, you foking donkey.") + .await; + } + }); +}