titanium_model/builder/
command.rs1use crate::TitanString;
2
3#[derive(Debug, Clone, serde::Serialize)]
5pub struct CommandBuilder<'a> {
6 pub name: TitanString<'a>,
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub name_localizations: Option<std::collections::HashMap<String, String>>,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub description: Option<TitanString<'a>>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub description_localizations: Option<std::collections::HashMap<String, String>>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub default_member_permissions: Option<TitanString<'a>>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub dm_permission: Option<bool>,
17 #[serde(default)]
18 #[serde(rename = "type")]
19 pub kind: Option<crate::command::CommandType>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub nsfw: Option<bool>,
22}
23
24impl<'a> CommandBuilder<'a> {
25 pub fn new(name: impl Into<TitanString<'a>>, description: impl Into<TitanString<'a>>) -> Self {
26 Self {
27 name: name.into(),
28 description: Some(description.into()),
29 name_localizations: None,
30 description_localizations: None,
31 default_member_permissions: None,
32 dm_permission: None,
33 kind: Some(crate::command::CommandType::ChatInput),
34 nsfw: None,
35 }
36 }
37
38 #[must_use]
39 pub fn build(self) -> Self {
40 self
41 }
42}