titanium_http/
soundboard.rs

1use crate::error::HttpError;
2use crate::HttpClient;
3use titanium_model::{Snowflake, SoundboardSound};
4
5impl HttpClient {
6    /// List soundboard sounds for a guild.
7    pub async fn list_guild_soundboard_sounds(
8        &self,
9        guild_id: Snowflake,
10    ) -> Result<Vec<SoundboardSound<'static>>, HttpError> {
11        self.get(&format!("/guilds/{}/soundboard-sounds", guild_id))
12            .await
13    }
14
15    /// Get a specific soundboard sound.
16    pub async fn get_guild_soundboard_sound(
17        &self,
18        guild_id: Snowflake,
19        sound_id: Snowflake,
20    ) -> Result<SoundboardSound<'static>, HttpError> {
21        self.get(&format!(
22            "/guilds/{}/soundboard-sounds/{}",
23            guild_id, sound_id
24        ))
25        .await
26    }
27
28    /// Create a soundboard sound.
29    ///
30    /// Payload should contain `name`, `sound` (base64), and optional `volume`, `emoji_id`, `emoji_name`.
31    pub async fn create_guild_soundboard_sound(
32        &self,
33        guild_id: Snowflake,
34        payload: &serde_json::Value,
35    ) -> Result<SoundboardSound<'static>, HttpError> {
36        self.post(&format!("/guilds/{}/soundboard-sounds", guild_id), payload)
37            .await
38    }
39
40    /// Modify a soundboard sound.
41    pub async fn modify_guild_soundboard_sound(
42        &self,
43        guild_id: Snowflake,
44        sound_id: Snowflake,
45        payload: &serde_json::Value,
46    ) -> Result<SoundboardSound<'static>, HttpError> {
47        self.patch(
48            &format!("/guilds/{}/soundboard-sounds/{}", guild_id, sound_id),
49            payload,
50        )
51        .await
52    }
53
54    /// Delete a soundboard sound.
55    pub async fn delete_guild_soundboard_sound(
56        &self,
57        guild_id: Snowflake,
58        sound_id: Snowflake,
59    ) -> Result<(), HttpError> {
60        self.delete(&format!(
61            "/guilds/{}/soundboard-sounds/{}",
62            guild_id, sound_id
63        ))
64        .await
65    }
66}