polyphony_types/entities/
guild.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4use crate::{
5    entities::{Channel, Emoji, GuildTemplate, RoleObject, Sticker, User, VoiceState, Webhook},
6    interfaces::WelcomeScreenObject,
7    utils::Snowflake,
8};
9
10/// See https://discord.com/developers/docs/resources/guild
11#[derive(Serialize, Deserialize, Debug, Default, Clone)]
12pub struct Guild {
13    pub id: Snowflake,
14    pub name: String,
15    pub icon: Option<String>,
16    pub icon_hash: Option<String>,
17    pub splash: Option<String>,
18    pub discovery_splash: Option<String>,
19    pub owner: Option<User>,
20    pub owner_id: Option<Snowflake>,
21    pub permissions: Option<String>,
22    pub afk_channel_id: Option<Snowflake>,
23    pub afk_timeout: Option<u8>,
24    pub widget_enabled: Option<bool>,
25    pub widget_channel_id: Option<Snowflake>,
26    pub widget_channel: Option<Channel>,
27    pub verification_level: Option<u8>,
28    pub default_message_notifications: Option<u8>,
29    pub explicit_content_filter: Option<u8>,
30    pub roles: Vec<RoleObject>,
31    pub emojis: Vec<Emoji>,
32    pub features: Vec<String>,
33    pub application_id: Option<String>,
34    pub system_channel_id: Option<Snowflake>,
35    pub system_channel_flags: Option<u8>,
36    pub rules_channel_id: Option<String>,
37    pub rules_channel: Option<String>,
38    pub max_presences: Option<u64>,
39    pub max_members: Option<u64>,
40    pub vanity_url_code: Option<String>,
41    pub description: Option<String>,
42    pub banner: Option<String>,
43    pub premium_tier: Option<u8>,
44    pub premium_subscription_count: Option<u64>,
45    pub preferred_locale: Option<String>,
46    pub public_updates_channel_id: Option<Snowflake>,
47    pub public_updates_channel: Option<Channel>,
48    pub max_video_channel_users: Option<u8>,
49    pub max_stage_video_channel_users: Option<u8>,
50    pub approximate_member_count: Option<u64>,
51    pub approximate_presence_count: Option<u64>,
52    pub member_count: Option<u64>,
53    pub presence_count: Option<u64>,
54    pub welcome_screen: Option<WelcomeScreenObject>,
55    pub nsfw_level: u8,
56    pub nsfw: bool,
57    pub stickers: Option<Vec<Sticker>>,
58    pub premium_progress_bar_enabled: Option<bool>,
59    pub joined_at: String,
60    pub afk_channel: Option<Channel>,
61    pub bans: Option<Vec<GuildBan>>,
62    pub primary_category_id: Option<Snowflake>,
63    pub large: Option<bool>,
64    pub channels: Option<Vec<Channel>>,
65    pub template_id: Option<Snowflake>,
66    pub template: Option<GuildTemplate>,
67    pub invites: Option<Vec<GuildInvite>>,
68    pub voice_states: Option<Vec<VoiceState>>,
69    pub webhooks: Option<Vec<Webhook>>,
70    pub mfa_level: Option<u8>,
71    pub region: Option<String>,
72    pub unavailable: bool,
73    pub parent: Option<String>,
74}
75
76/// See https://docs.spacebar.chat/routes/#get-/guilds/-guild_id-/bans/-user-
77#[derive(Serialize, Deserialize, Debug, Default, Clone)]
78pub struct GuildBan {
79    pub id: Snowflake,
80    pub user_id: Snowflake,
81    pub guild_id: Snowflake,
82    pub executor_id: Snowflake,
83    pub reason: Option<String>,
84}
85
86/// See https://docs.spacebar.chat/routes/#cmp--schemas-invite
87#[derive(Serialize, Deserialize, Debug, Default, Clone)]
88pub struct GuildInvite {
89    pub code: String,
90    pub temporary: Option<bool>,
91    pub uses: Option<i32>,
92    pub max_uses: Option<i32>,
93    pub max_age: Option<i32>,
94    pub created_at: DateTime<Utc>,
95    pub expires_at: Option<DateTime<Utc>>,
96    pub guild_id: String,
97    pub guild: Option<Guild>,
98    pub channel_id: String,
99    pub channel: Option<Channel>,
100    pub inviter_id: Option<String>,
101    pub inviter: Option<User>,
102    pub target_user_id: Option<String>,
103    pub target_user: Option<String>,
104    pub target_user_type: Option<i32>,
105    pub vanity_url: Option<bool>,
106}
107
108#[derive(Serialize, Deserialize, Debug, Default)]
109pub struct UnavailableGuild {
110    id: String,
111    unavailable: bool,
112}
113
114#[derive(Serialize, Deserialize, Debug, Default, Clone)]
115pub struct GuildCreateResponse {
116    pub id: String,
117}