mostro_client/cli/
send_dm.rs

1use crate::{db::Order, util::send_message_sync};
2use anyhow::Result;
3use mostro_core::prelude::*;
4use nostr_sdk::prelude::*;
5use uuid::Uuid;
6
7pub async fn execute_send_dm(
8    receiver: PublicKey,
9    client: &Client,
10    order_id: &Uuid,
11    message: &str,
12) -> Result<()> {
13    let message = Message::new_dm(
14        None,
15        None,
16        Action::SendDm,
17        Some(Payload::TextMessage(message.to_string())),
18    );
19
20    let pool = crate::db::connect().await?;
21
22    let trade_keys = if let Ok(order_to_vote) = Order::get_by_id(&pool, &order_id.to_string()).await
23    {
24        match order_to_vote.trade_keys.as_ref() {
25            Some(trade_keys) => Keys::parse(trade_keys)?,
26            None => {
27                anyhow::bail!("No trade_keys found for this order");
28            }
29        }
30    } else {
31        println!("order {} not found", order_id);
32        std::process::exit(0)
33    };
34
35    send_message_sync(client, None, &trade_keys, receiver, message, true, true).await?;
36
37    Ok(())
38}