mostro_client/cli/
send_dm.rs1use crate::cli::Context;
2use crate::{db::Order, util::send_dm};
3use anyhow::Result;
4use mostro_core::prelude::*;
5use nostr_sdk::prelude::*;
6use uuid::Uuid;
7
8pub async fn execute_send_dm(
9 receiver: PublicKey,
10 ctx: &Context,
11 order_id: &Uuid,
12 message: &str,
13) -> Result<()> {
14 let message = Message::new_dm(
15 None,
16 None,
17 Action::SendDm,
18 Some(Payload::TextMessage(message.to_string())),
19 )
20 .as_json()
21 .map_err(|_| anyhow::anyhow!("Failed to serialize message"))?;
22
23 let trade_keys =
24 if let Ok(order_to_vote) = Order::get_by_id(&ctx.pool, &order_id.to_string()).await {
25 match order_to_vote.trade_keys.as_ref() {
26 Some(trade_keys) => Keys::parse(trade_keys)?,
27 None => {
28 anyhow::bail!("No trade_keys found for this order");
29 }
30 }
31 } else {
32 return Err(anyhow::anyhow!("order {} not found", order_id));
33 };
34
35 send_dm(
36 &ctx.client,
37 None,
38 &trade_keys,
39 &receiver,
40 message,
41 None,
42 false,
43 )
44 .await?;
45
46 Ok(())
47}