use crate::internal::prelude::*;
use super::CreateEmbed;
use crate::utils;
use std::collections::HashMap;
#[derive(Clone, Debug, Default)]
pub struct EditMessage(pub HashMap<&'static str, Value>);
impl EditMessage {
#[inline]
pub fn content<D: ToString>(&mut self, content: D) -> &mut Self {
self.0.insert("content", Value::String(content.to_string()));
self
}
pub fn embed<F>(&mut self, f: F) -> &mut Self
where F: FnOnce(&mut CreateEmbed) -> &mut CreateEmbed {
let mut create_embed = CreateEmbed::default();
f(&mut create_embed);
let map = utils::hashmap_to_json_map(create_embed.0);
let embed = Value::Object(map);
self.0.insert("embed", embed);
self
}
pub fn suppress_embeds(&mut self, suppress: bool) -> &mut Self {
if suppress {
self.0.insert("flags", serde_json::Value::Number(serde_json::Number::from(1 << 2)));
} else {
self.0.remove("flags");
}
self
}
}