polyphony_types/entities/
guild.rs1use 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#[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#[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#[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}