useful_serenity/
lib.rs

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}