mostro_client/cli/
send_dm.rs1use 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}