use crate::{Snowflake, User};
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct Emoji {
pub id: Option<Snowflake>,
pub name: String,
#[serde(default)]
pub roles: Vec<Snowflake>,
#[serde(default)]
pub user: Option<User>,
#[serde(default)]
pub require_colons: Option<bool>,
#[serde(default)]
pub managed: Option<bool>,
#[serde(default)]
pub animated: Option<bool>
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct MessageReaction {
pub count: i32,
pub me: bool,
pub emoji: Emoji
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct GetReactionsOptions {
#[serde(skip_serializing_if = "Option::is_none")]
before: Option<Snowflake>,
#[serde(skip_serializing_if = "Option::is_none")]
after: Option<Snowflake>,
#[serde(skip_serializing_if = "Option::is_none")]
limit: Option<i32>,
}
impl GetReactionsOptions {
pub fn before(mut self, id: Snowflake) -> Self {
self.before = Some(id);
self
}
pub fn after(mut self, id: Snowflake) -> Self {
self.after = Some(id);
self
}
pub fn limit(mut self, num: i32) -> Self {
self.limit = Some(num);
self
}
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct CreateEmojiOptions {
name: String,
image: String,
roles: Vec<Snowflake>,
}
impl CreateEmojiOptions {
pub fn name(mut self, text: &str) -> Self {
self.name = text.to_string();
self
}
pub fn image(mut self, text: &str) -> Self {
self.image = text.to_string();
self
}
pub fn roles(mut self, rls: Vec<Snowflake>) -> Self {
self.roles = rls;
self
}
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct ModifyEmojiOptions {
#[serde(skip_serializing_if = "Option::is_none")]
name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
roles: Option<Vec<Snowflake>>,
}
impl ModifyEmojiOptions {
pub fn name(mut self, name: &str) -> Self {
self.name = Some(name.to_string());
self
}
pub fn roles(mut self, rls: Vec<Snowflake>) -> Self {
self.roles = Some(rls);
self
}
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct GuildEmojisUpdate {
pub guild_id: Snowflake,
pub emojis: Vec<Emoji>
}