Skip to main content

send_message/
send_message.rs

1use beeper_desktop_api::{BeeperClient, SendMessageInput};
2use std::env;
3
4#[tokio::main]
5async fn main() -> Result<(), Box<dyn std::error::Error>> {
6    // Get authentication token from environment variable
7    let token = env::var("BEEPER_TOKEN")
8        .unwrap_or_else(|_| {
9            eprintln!("Error: BEEPER_TOKEN environment variable not set");
10            eprintln!("Usage: BEEPER_TOKEN=your_token cargo run --example send_message");
11            std::process::exit(1);
12        });
13
14    // Get API base URL from environment variable or use default
15    let base_url = env::var("BEEPER_API_URL")
16        .unwrap_or_else(|_| "http://localhost:23373".to_string());
17
18    println!("Connecting to Beeper Desktop API at: {}", base_url);
19    println!();
20
21    // Create a client with the provided token
22    let client = BeeperClient::new(&token, &base_url);
23
24    // Fetch all chats to find the first non-group chat
25    println!("📋 Fetching chats...");
26    let chats_response = client.list_chats(None, None).await?;
27
28    if chats_response.items.is_empty() {
29        println!("❌ No chats found!");
30        return Ok(());
31    }
32
33    // Find the first single (non-group) chat
34    let single_chat = chats_response
35        .items
36        .iter()
37        .find(|chat| chat.chat_type == "single");
38
39    if let Some(chat) = single_chat {
40        let chat_id = &chat.id;
41        let chat_title = &chat.title;
42
43        println!("✅ Found {} chats", chats_response.items.len());
44        println!();
45        println!("💬 Sending message to first single chat: '{}'", chat_title);
46        println!("   Chat ID: {}", chat_id);
47        println!();
48
49        // Create the message input
50        let message_input = SendMessageInput {
51            text: "Hello".to_string(),
52            reply_to_id: None,
53        };
54
55        // Send the message
56        let response = client.send_message(chat_id, message_input).await?;
57
58        println!("✅ Message sent successfully!");
59        println!();
60        println!("Message Details:");
61        println!("  Chat ID: {}", response.chat_id);
62        println!("  Pending Message ID: {}", response.pending_message_id);
63        println!();
64        println!("Full response (JSON):");
65        println!("{:#?}", response);
66    } else {
67        println!("❌ No single (non-group) chats found!");
68        println!();
69        println!("Available chats:");
70        for (index, chat) in chats_response.items.iter().enumerate() {
71            println!("  {}. {} ({})", index + 1, chat.title, chat.chat_type);
72        }
73    }
74
75    Ok(())
76}