1use crate::error::HttpError;
2use crate::HttpClient;
3use serde::Serialize;
4use titanium_model::{AutoModRule, Snowflake};
5
6impl HttpClient {
7 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 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 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 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 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}