1use serenity::builder::{
2 CreateInteractionResponse,
3 CreateInteractionResponseData, CreateEmbed
4};
5
6use serenity::model::prelude::{
7 InteractionApplicationCommandCallbackDataFlags,
8 InteractionResponseType
9};
10
11
12pub struct ResponseStruct {
13 response: CreateInteractionResponse,
14 responsecontent: CreateInteractionResponseData,
15 embed: Option<CreateEmbed>
16}
17
18pub trait ResponseTrait {
19 fn set_content(&self, content: String) -> ResponseStruct;
20 fn add_flag(&self, flag: InteractionApplicationCommandCallbackDataFlags) -> ResponseStruct;
21 fn change_kind(&self, kind: InteractionResponseType) -> ResponseStruct;
22 fn set_embed(&self, embed: CreateEmbed) -> ResponseStruct;
23}
24
25impl ResponseTrait for ResponseStruct {
26 fn set_content(&self, content: String) -> ResponseStruct {
27 let mut resp = self.responsecontent.clone();
28 resp.content(content);
29 return ResponseStruct {
30 response: self.response.clone(),
31 responsecontent: resp,
32 embed: self.embed.clone()
33 }
34 }
35
36 fn add_flag(&self, flag: InteractionApplicationCommandCallbackDataFlags) -> ResponseStruct {
37 let mut resp = self.responsecontent.clone();
38 resp.flags(flag);
39 return ResponseStruct {
40 response: self.response.clone(),
41 responsecontent: resp,
42 embed: self.embed.clone()
43 }
44 }
45
46 fn change_kind(&self, kind: InteractionResponseType) -> ResponseStruct {
47 let mut resp = self.response.clone();
48 resp.kind(kind);
49 return ResponseStruct {
50 response: resp,
51 responsecontent: self.responsecontent.clone(),
52 embed: self.embed.clone()
53 }
54 }
55
56 fn set_embed(&self, embed: CreateEmbed) -> ResponseStruct {
57 return ResponseStruct {
58 response: self.response.clone(),
59 responsecontent: self.responsecontent.clone(),
60 embed: Some(embed)
61 }
62 }
63}