use serde::Deserialize;
use crate::{
builders::{CreateMessage, EditChannel},
models::{Attachment, Channel, Id, Message},
Context, Result,
};
#[derive(Debug, Deserialize, Clone, PartialEq)]
pub struct TextChannel {
#[serde(rename = "_id")]
pub id: Id,
#[serde(rename = "server")]
pub server_id: Id,
pub name: String,
pub description: Option<String>,
pub icon: Option<Attachment>,
pub last_message_id: Option<Id>,
#[serde(default)]
pub nsfw: bool,
}
impl TextChannel {
pub async fn send(&self, cx: &Context, builder: impl Into<CreateMessage>) -> Result<Message> {
Message::create(cx, &self.id, builder.into()).await
}
pub async fn edit(&self, cx: &Context, builder: EditChannel) -> Result {
Channel::edit(cx, &self.id, builder).await
}
pub async fn delete(&self, cx: &Context) -> Result {
Channel::delete(cx, &self.id).await
}
}