stoat/builders/
edit_message.rs1use stoat_models::v0::{DataEditMessage, Message, SendableEmbed};
2
3use crate::{HttpClient, error::Error};
4
5pub struct EditMessageBuilder {
6 http: HttpClient,
7 channel_id: String,
8 message_id: String,
9 data: DataEditMessage,
10}
11
12impl EditMessageBuilder {
13 pub fn new(http: HttpClient, channel_id: String, message_id: String) -> Self {
14 Self {
15 http,
16 channel_id,
17 message_id,
18 data: DataEditMessage {
19 content: None,
20 embeds: None,
21 },
22 }
23 }
24
25 pub fn content(&mut self, content: String) -> &mut Self {
26 self.data.content = Some(content);
27
28 self
29 }
30
31 pub fn embed(&mut self, embed: SendableEmbed) -> &mut Self {
32 self.data.embeds.get_or_insert_default().push(embed);
33
34 self
35 }
36
37 pub async fn build(&self) -> Result<Message, Error> {
38 self.http
39 .edit_message(&self.channel_id, &self.message_id, &self.data)
40 .await
41 }
42}