Skip to main content

neptunium_http/endpoints/guild/
channels.rs

1use bon::Builder;
2use neptunium_model::{
3    channel::PermissionOverwrite,
4    id::{Id, marker::ChannelMarker},
5};
6use serde::Serialize;
7
8mod create_guild_channel;
9mod list_guild_channels;
10mod update_channel_positions;
11
12pub use create_guild_channel::*;
13pub use list_guild_channels::*;
14pub use update_channel_positions::*;
15
16// Source: https://github.com/fluxerapp/fluxer/blob/5da26d4ed5ef9f3fe8bef993c0f10ea4f4ee9c1d/packages/schema/src/domains/channel/ChannelRequestSchemas.tsx#L63
17// TODO: Maybe split this into different channel types
18#[derive(Builder, Serialize, Clone, Debug, Default)]
19pub struct ChannelRequestBase {
20    #[builder(into)]
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub topic: Option<String>,
23    #[builder(into)]
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub url: Option<String>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub parent_id: Option<Id<ChannelMarker>>,
28    /// Voice channel bitrate in bits per second.
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub bitrate: Option<u32>,
31    /// Maximum users allowed in a voice channel.
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub user_limit: Option<u32>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub permission_overwrites: Option<Vec<PermissionOverwrite>>,
36}