1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
pub mod get_reactions;

mod create_reaction;
mod delete_all_reaction;
mod delete_all_reactions;
mod delete_reaction;

pub use self::{
    create_reaction::CreateReaction, delete_all_reaction::DeleteAllReaction,
    delete_all_reactions::DeleteAllReactions, delete_reaction::DeleteReaction,
    get_reactions::GetReactions,
};
use std::fmt::Write;
use twilight_model::{channel::ReactionType, id::EmojiId};

#[derive(Eq, PartialEq)]
pub enum RequestReactionType {
    Custom { id: EmojiId, name: Option<String> },
    Unicode { name: String },
}

impl From<ReactionType> for RequestReactionType {
    fn from(other: ReactionType) -> Self {
        match other {
            ReactionType::Custom { id, name, .. } => Self::Custom { id, name },
            ReactionType::Unicode { name } => Self::Unicode { name },
        }
    }
}

fn format_emoji(emoji: RequestReactionType) -> String {
    match emoji {
        RequestReactionType::Custom { id, name } => {
            let mut emoji = String::new();
            match name {
                Some(name) => emoji.push_str(name.as_ref()),
                None => emoji.push('e'),
            }
            let _ = write!(emoji, ":{}", id);
            emoji
        }
        RequestReactionType::Unicode { name } => name,
    }
}