use crate::channels::telegram::TelegramChannel;
use crate::channels::{Channel, OutgoingMessage};
pub async fn send(message: &str, target: Option<&str>) -> anyhow::Result<()> {
let token = crate::config::get("channels.telegram.bot_token").map_err(|_| {
anyhow::anyhow!(
"Telegram bot token not configured.\n\
Set `channels.telegram.bot_token` in ~/.orch/config.yml"
)
})?;
let chat_id: Option<String> = target
.map(|s| s.to_string())
.or_else(|| crate::config::get("channels.telegram.chat_id").ok());
if chat_id.is_none() {
anyhow::bail!(
"No Telegram chat_id configured.\n\
Use --target <chat_id> or set `channels.telegram.chat_id` in ~/.orch/config.yml"
);
}
let channel = TelegramChannel::new(token, chat_id.clone())?;
let msg = OutgoingMessage {
thread_id: chat_id.unwrap_or_default(),
body: message.to_string(),
reply_to: None,
metadata: serde_json::Value::Null,
topic_id: None,
};
channel.send(&msg).await?;
println!("Telegram message sent.");
Ok(())
}