use serde::Deserialize;
use crate::{
builders::CreateMessage,
models::{Channel, Id, Message},
Context, Result,
};
#[derive(Debug, Deserialize, Clone, PartialEq)]
pub struct DirectMessageChannel {
#[serde(rename = "_id")]
pub id: Id,
pub active: bool,
pub recipients: [Id; 2],
pub last_message_id: Option<Id>,
}
impl DirectMessageChannel {
pub async fn open(cx: &Context, user_id: &Id) -> Result<Self> {
cx.http_client.get(format!("users/{}/dm", user_id)).await
}
pub async fn send(&self, cx: &Context, builder: impl Into<CreateMessage>) -> Result<Message> {
Message::create(cx, &self.id, builder.into()).await
}
pub async fn close(&self, cx: &Context) -> Result {
Channel::delete(cx, &self.id).await
}
}