Skip to content

Commit a87946f

Browse files
committed
Add events for soundboard sounds
1 parent 252a8ed commit a87946f

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed

src/client/dispatch.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,10 @@ fn update_cache_with_event(
368368
Event::SoundboardSounds(event) => FullEvent::SoundboardSounds {
369369
event,
370370
},
371+
Event::SoundboardSoundCreate(event) => FullEvent::SoundboardSoundCreate { event },
372+
Event::SoundboardSoundUpdate(event) => FullEvent::SoundboardSoundUpdate { event },
373+
Event::SoundboardSoundsUpdate(event) => FullEvent::SoundboardSoundsUpdate { event },
374+
Event::SoundboardSoundDelete(event) => FullEvent::SoundboardSoundDelete { event },
371375
Event::TypingStart(event) => FullEvent::TypingStart {
372376
event,
373377
},

src/client/event_handler.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,18 @@ event_handler! {
332332
/// Provides the guild's id and the data.
333333
SoundboardSounds { event: SoundboardSoundsEvent } => async fn soundboard_sounds(&self, ctx: Context);
334334

335+
/// Dispatched when a soundboard sound is created.
336+
SoundboardSoundCreate { event: SoundboardSoundCreateEvent } => async fn soundboard_sound_create(&self, ctx: Context);
337+
338+
/// Dispatched when a soundboard sound is updated.
339+
SoundboardSoundUpdate { event: SoundboardSoundUpdateEvent } => async fn soundboard_sound_update(&self, ctx: Context);
340+
341+
/// Dispatched when multiple soundboard sounds at once are updated.
342+
SoundboardSoundsUpdate { event: SoundboardSoundsUpdateEvent } => async fn soundboard_sounds_update(&self, ctx: Context);
343+
344+
/// Dispatched when a soundboard sound is deleted.
345+
SoundboardSoundDelete { event: SoundboardSoundDeleteEvent } => async fn soundboard_sound_delete(&self, ctx: Context);
346+
335347
/// Dispatched when a user starts typing.
336348
TypingStart { event: TypingStartEvent } => async fn typing_start(&self, ctx: Context);
337349

src/model/event.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,50 @@ pub struct SoundboardSoundsEvent {
324324
pub soundboard_sounds: Vec<Soundboard>,
325325
}
326326

327+
/// Requires no gateway intents.
328+
///
329+
/// [Discord docs](https://discord.com/developers/docs/events/gateway-events#guild-soundboard-sound-create).
330+
#[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
331+
#[derive(Clone, Debug, Deserialize, Serialize)]
332+
#[serde(transparent)]
333+
#[non_exhaustive]
334+
pub struct SoundboardSoundCreateEvent {
335+
pub soundboard: Soundboard,
336+
}
337+
338+
/// Requires no gateway intents.
339+
///
340+
/// [Discord docs](https://discord.com/developers/docs/events/gateway-events#guild-soundboard-sound-update).
341+
#[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
342+
#[derive(Clone, Debug, Deserialize, Serialize)]
343+
#[serde(transparent)]
344+
#[non_exhaustive]
345+
pub struct SoundboardSoundUpdateEvent {
346+
pub soundboard: Soundboard,
347+
}
348+
349+
/// Requires no gateway intents.
350+
///
351+
/// [Discord docs](https://discord.com/developers/docs/events/gateway-events#guild-soundboard-sounds-update).
352+
#[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
353+
#[derive(Clone, Debug, Deserialize, Serialize)]
354+
#[non_exhaustive]
355+
pub struct SoundboardSoundsUpdateEvent {
356+
pub guild_id: GuildId,
357+
pub soundboard_sounds: Vec<Soundboard>,
358+
}
359+
360+
/// Requires no gateway intents.
361+
///
362+
/// [Discord docs](https://discord.com/developers/docs/events/gateway-events#guild-soundboard-sound-delete).
363+
#[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
364+
#[derive(Clone, Debug, Deserialize, Serialize)]
365+
#[non_exhaustive]
366+
pub struct SoundboardSoundDeleteEvent {
367+
pub guild_id: GuildId,
368+
pub sound_id: SoundId,
369+
}
370+
327371
/// Helper to deserialize `GuildRoleCreateEvent` and `GuildRoleUpdateEvent`.
328372
#[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
329373
#[derive(Deserialize)]
@@ -1309,6 +1353,14 @@ pub enum Event {
13091353
/// The connection has successfully resumed after a disconnect.
13101354
Resumed(ResumedEvent),
13111355
SoundboardSounds(SoundboardSoundsEvent),
1356+
#[serde(rename = "GUILD_SOUNDBOARD_SOUND_CREATE")]
1357+
SoundboardSoundCreate(SoundboardSoundCreateEvent),
1358+
#[serde(rename = "GUILD_SOUNDBOARD_SOUND_UPDATE")]
1359+
SoundboardSoundUpdate(SoundboardSoundUpdateEvent),
1360+
#[serde(rename = "GUILD_SOUNDBOARD_SOUNDS_UPDATE")]
1361+
SoundboardSoundsUpdate(SoundboardSoundsUpdateEvent),
1362+
#[serde(rename = "GUILD_SOUNDBOARD_SOUND_DELETE")]
1363+
SoundboardSoundDelete(SoundboardSoundDeleteEvent),
13121364
/// A user is typing; considered to last 5 seconds
13131365
TypingStart(TypingStartEvent),
13141366
/// Update to the logged-in user's information

0 commit comments

Comments
 (0)