1use crate::channels::telegram::TelegramChannel;
14use crate::channels::{Channel, OutgoingMessage};
15
16pub async fn send(message: &str, target: Option<&str>) -> anyhow::Result<()> {
23 let token = crate::config::get("channels.telegram.bot_token").map_err(|_| {
25 anyhow::anyhow!(
26 "Telegram bot token not configured.\n\
27 Set `channels.telegram.bot_token` in ~/.orch/config.yml"
28 )
29 })?;
30
31 let chat_id: Option<String> = target
33 .map(|s| s.to_string())
34 .or_else(|| crate::config::get("channels.telegram.chat_id").ok());
35
36 if chat_id.is_none() {
37 anyhow::bail!(
38 "No Telegram chat_id configured.\n\
39 Use --target <chat_id> or set `channels.telegram.chat_id` in ~/.orch/config.yml"
40 );
41 }
42
43 let channel = TelegramChannel::new(token, chat_id.clone())?;
45
46 let msg = OutgoingMessage {
48 thread_id: chat_id.unwrap_or_default(),
49 body: message.to_string(),
50 reply_to: None,
51 metadata: serde_json::Value::Null,
52 topic_id: None,
53 };
54
55 channel.send(&msg).await?;
56
57 println!("Telegram message sent.");
58 Ok(())
59}