stoat/builders/
create_channel.rs1use 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}