use super::*;
use crate::api::Hmcs;
#[into_request("SendMessageRequest")]
#[derive(new, Debug, SelfBuilder)]
pub struct SendMessage {
guild_id: u64,
channel_id: u64,
content: String,
#[new(default)]
echo_id: u64,
#[new(default)]
in_reply_to: u64,
#[new(default)]
embeds: Vec<Embed>,
#[new(default)]
actions: Vec<Action>,
#[new(default)]
attachments: Hmcs,
#[new(default)]
#[builder(setter(strip_option))]
overrides: Option<Override>,
#[new(default)]
#[builder(setter(strip_option))]
metadata: Option<Metadata>,
}
#[into_request("UpdateMessageRequest")]
#[derive(new, Debug)]
pub struct UpdateMessage {
guild_id: u64,
channel_id: u64,
message_id: u64,
#[new(default)]
content: String,
#[new(default)]
embeds: Vec<Embed>,
#[new(default)]
actions: Vec<Action>,
#[new(default)]
attachments: Hmcs,
#[new(default)]
overrides: Option<Override>,
#[new(default)]
metadata: Option<Metadata>,
#[new(default)]
update_content: bool,
#[new(default)]
update_embeds: bool,
#[new(default)]
update_actions: bool,
#[new(default)]
update_attachments: bool,
#[new(default)]
update_overrides: bool,
#[new(default)]
update_metadata: bool,
}
impl UpdateMessage {
pub fn new_content(mut self, content: String) -> Self {
self.content = content;
self.update_content = true;
self
}
pub fn new_embeds(mut self, embeds: Vec<Embed>) -> Self {
self.embeds = embeds;
self.update_embeds = true;
self
}
pub fn new_actions(mut self, actions: Vec<Action>) -> Self {
self.actions = actions;
self.update_actions = true;
self
}
pub fn new_attachments(mut self, attachments: Hmcs) -> Self {
self.attachments = attachments;
self.update_attachments = true;
self
}
pub fn new_overrides(mut self, overrides: Option<Override>) -> Self {
self.overrides = overrides;
self.update_overrides = true;
self
}
pub fn new_metadata(mut self, metadata: Option<Metadata>) -> Self {
self.metadata = metadata;
self.update_metadata = true;
self
}
}
client_api! {
action: GetMessage,
api_fn: get_message,
service: chat,
}
client_api! {
request: DeleteMessageRequest,
api_fn: delete_message,
service: chat,
}
client_api! {
action: SendMessage,
api_fn: send_message,
service: chat,
}
client_api! {
request: UpdateMessageRequest,
api_fn: update_message,
service: chat,
}