mirror of
https://github.com/kristoferssolo/tg-relay-rs.git
synced 2026-02-04 06:42:09 +00:00
Compare commits
1 Commits
465f9c49e9
...
feature/re
| Author | SHA1 | Date | |
|---|---|---|---|
|
a520b9f077
|
31
src/main.rs
31
src/main.rs
@@ -37,6 +37,7 @@ async fn main() -> color_eyre::Result<()> {
|
|||||||
let handlers = handlers.clone();
|
let handlers = handlers.clone();
|
||||||
let bot_name_cloned = bot_name.clone();
|
let bot_name_cloned = bot_name.clone();
|
||||||
async move {
|
async move {
|
||||||
|
relay_message(&bot, &msg).await;
|
||||||
process_cmd(&bot, &msg, &bot_name_cloned).await;
|
process_cmd(&bot, &msg, &bot_name_cloned).await;
|
||||||
process_message(&bot, &msg, &handlers).await;
|
process_message(&bot, &msg, &handlers).await;
|
||||||
respond(())
|
respond(())
|
||||||
@@ -76,3 +77,33 @@ async fn process_cmd(bot: &Bot, msg: &Message, bot_name: &str) {
|
|||||||
error!(%e, "failed to answer command");
|
error!(%e, "failed to answer command");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn relay_message(bot: &Bot, msg: &Message) {
|
||||||
|
let Some(chat_id) = global_config().chat_id else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Don't relay messages from the relay target itself
|
||||||
|
if msg.chat.id == chat_id {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let author = msg.from.as_ref().map_or_else(
|
||||||
|
|| "Unknown".to_string(),
|
||||||
|
|u| {
|
||||||
|
u.username
|
||||||
|
.as_ref()
|
||||||
|
.map_or_else(|| u.full_name(), |un| format!("@{un}"))
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
let chat_name = msg.chat.title().unwrap_or("Private chat");
|
||||||
|
|
||||||
|
let text = msg.text().or_else(|| msg.caption()).unwrap_or("");
|
||||||
|
|
||||||
|
let relay_text = format!("[{chat_name}] {author}:\n{text}");
|
||||||
|
|
||||||
|
if let Err(e) = bot.send_message(chat_id, relay_text).await {
|
||||||
|
error!(%e, "failed to relay message");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user