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 bot_name_cloned = bot_name.clone();
|
||||
async move {
|
||||
relay_message(&bot, &msg).await;
|
||||
process_cmd(&bot, &msg, &bot_name_cloned).await;
|
||||
process_message(&bot, &msg, &handlers).await;
|
||||
respond(())
|
||||
@@ -76,3 +77,33 @@ async fn process_cmd(bot: &Bot, msg: &Message, bot_name: &str) {
|
||||
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