titanium_http/
automod.rs

1use crate::error::HttpError;
2use crate::HttpClient;
3use serde::Serialize;
4use titanium_model::{AutoModRule, Snowflake};
5
6impl HttpClient {
7    /// List Auto Moderation rules.
8    pub async fn list_auto_moderation_rules(
9        &self,
10        guild_id: Snowflake,
11    ) -> Result<Vec<AutoModRule>, HttpError> {
12        let route = format!("/guilds/{}/auto-moderation/rules", guild_id);
13        self.get(&route).await
14    }
15
16    /// Get an Auto Moderation rule.
17    pub async fn get_auto_moderation_rule(
18        &self,
19        guild_id: Snowflake,
20        rule_id: Snowflake,
21    ) -> Result<AutoModRule, HttpError> {
22        let route = format!("/guilds/{}/auto-moderation/rules/{}", guild_id, rule_id);
23        self.get(&route).await
24    }
25
26    /// Create an Auto Moderation rule.
27    pub async fn create_auto_moderation_rule(
28        &self,
29        guild_id: Snowflake,
30        params: &CreateAutoModRuleParams,
31    ) -> Result<AutoModRule, HttpError> {
32        let route = format!("/guilds/{}/auto-moderation/rules", guild_id);
33        self.post(&route, params).await
34    }
35
36    /// Modify an Auto Moderation rule.
37    pub async fn modify_auto_moderation_rule(
38        &self,
39        guild_id: Snowflake,
40        rule_id: Snowflake,
41        params: &ModifyAutoModRuleParams,
42    ) -> Result<AutoModRule, HttpError> {
43        let route = format!("/guilds/{}/auto-moderation/rules/{}", guild_id, rule_id);
44        self.patch(&route, params).await
45    }
46
47    /// Delete an Auto Moderation rule.
48    pub async fn delete_auto_moderation_rule(
49        &self,
50        guild_id: Snowflake,
51        rule_id: Snowflake,
52    ) -> Result<(), HttpError> {
53        let route = format!("/guilds/{}/auto-moderation/rules/{}", guild_id, rule_id);
54        self.delete(&route).await
55    }
56}
57
58#[derive(Debug, Serialize)]
59pub struct CreateAutoModRuleParams {
60    pub name: String,
61    pub event_type: u8,
62    pub trigger_type: u8,
63    pub trigger_metadata: Option<titanium_model::AutoModTriggerMetadata>,
64    pub actions: Vec<titanium_model::AutoModAction>,
65    pub enabled: Option<bool>,
66    pub exempt_roles: Option<Vec<Snowflake>>,
67    pub exempt_channels: Option<Vec<Snowflake>>,
68}
69
70#[derive(Debug, Serialize)]
71pub struct ModifyAutoModRuleParams {
72    pub name: Option<String>,
73    pub event_type: Option<u8>,
74    pub trigger_metadata: Option<titanium_model::AutoModTriggerMetadata>,
75    pub actions: Option<Vec<titanium_model::AutoModAction>>,
76    pub enabled: Option<bool>,
77    pub exempt_roles: Option<Vec<Snowflake>>,
78    pub exempt_channels: Option<Vec<Snowflake>>,
79}