Skip to main content

stoat/builders/
create_channel.rs

1use stoat_models::v0::{Channel, DataCreateServerChannel, VoiceInformation};
2
3use crate::{HttpClient, error::Error};
4
5pub struct CreateChannelBuilder {
6    http: HttpClient,
7    server_id: String,
8    data: DataCreateServerChannel,
9}
10
11impl CreateChannelBuilder {
12    pub fn new(http: HttpClient, server_id: String, name: String) -> Self {
13        Self {
14            http,
15            server_id,
16            data: DataCreateServerChannel {
17                name,
18                ..Default::default()
19            },
20        }
21    }
22
23    pub fn description(&mut self, description: String) -> &mut Self {
24        self.data.description = Some(description);
25
26        self
27    }
28
29    pub fn nsfw(&mut self, nsfw: bool) -> &mut Self {
30        self.data.nsfw = Some(nsfw);
31
32        self
33    }
34
35    pub fn voice(&mut self, voice: VoiceInformation) -> &mut Self {
36        self.data.voice = Some(voice);
37
38        self
39    }
40
41    pub async fn build(&self) -> Result<Channel, Error> {
42        self.http.create_channel(&self.server_id, &self.data).await
43    }
44}