mostro_client/cli/
send_dm.rs1use crate::{db::Order, util::send_dm};
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 .as_json()
20 .map_err(|_| anyhow::anyhow!("Failed to serialize message"))?;
21
22 let pool = crate::db::connect().await?;
23
24 let trade_keys = if let Ok(order_to_vote) = Order::get_by_id(&pool, &order_id.to_string()).await
25 {
26 match order_to_vote.trade_keys.as_ref() {
27 Some(trade_keys) => Keys::parse(trade_keys)?,
28 None => {
29 anyhow::bail!("No trade_keys found for this order");
30 }
31 }
32 } else {
33 println!("order {} not found", order_id);
34 std::process::exit(0)
35 };
36
37 send_dm(client, None, &trade_keys, &receiver, message, None, false).await?;
38
39 Ok(())
40}