refactor: main file

This commit is contained in:
Kristofers Solo 2025-10-27 13:14:22 +02:00
parent 164b99888e
commit 6c015137df
Signed by: kristoferssolo
GPG Key ID: 74FF8144483D82C8

View File

@ -1,9 +1,9 @@
use dotenv::dotenv; use dotenv::dotenv;
use teloxide::{Bot, prelude::Requester, repls::CommandReplExt, respond, types::Message}; use teloxide::{prelude::*, respond};
use tg_relay_rs::{ use tg_relay_rs::{
commands::{Command, answer}, commands::{Command, answer},
comments::{Comments, init_global_comments}, comments::{Comments, init_global_comments},
handler::create_handlers, handler::{Handler, create_handlers},
telemetry::setup_logger, telemetry::setup_logger,
}; };
use tracing::{error, info, warn}; use tracing::{error, info, warn};
@ -35,27 +35,7 @@ async fn main() -> color_eyre::Result<()> {
// clone the handlers vector into the closure // clone the handlers vector into the closure
let handlers = handlers.clone(); let handlers = handlers.clone();
async move { async move {
if let Some(text) = msg.text() { process_message(&bot, &msg, &handlers);
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;
}
}
}
respond(()) respond(())
} }
}) })
@ -63,3 +43,27 @@ async fn main() -> color_eyre::Result<()> {
Ok(()) 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;
}
});
}