Skip to main content

stoat/builders/
edit_message.rs

1use 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}