コード例 #1
0
        internal DiscordWebhook(DiscordHttpClient http, DiscordApiData data)
            : base(data)
        {
            this.http = http;

            GuildId   = data.GetSnowflake("guild_id").Value;
            ChannelId = data.GetSnowflake("channel_id").Value;

            DiscordApiData userData = data.Get("user");

            if (!userData.IsNull)
            {
                User = new DiscordUser(false, userData);
            }

            Name  = data.GetString("name");
            Token = data.GetString("token");

            string avatarHash = data.GetString("avatar");

            if (avatarHash != null)
            {
                Avatar = DiscordCdnUrl.ForUserAvatar(Id, avatarHash);
            }
        }
コード例 #2
0
        internal DiscordGuildNewsChannel(DiscordHttpClient http, DiscordApiData data, Snowflake?guildId = null)
            : base(http, data, DiscordChannelType.GuildNews, guildId)
        {
            this.http = http;

            Topic    = data.GetString("topic");
            Nsfw     = data.GetBoolean("nsfw") ?? false;
            ParentId = data.GetSnowflake("parent_id");

            lastMessageId = data.GetSnowflake("last_message_id") ?? default(Snowflake);
        }
コード例 #3
0
        internal DiscordIntegration(DiscordHttpClient http, DiscordApiData data)
            : base(data)
        {
            this.http = http;

            Name              = data.GetString("name");
            Type              = data.GetString("type");
            IsEnabled         = data.GetBoolean("enabled");
            IsSyncing         = data.GetBoolean("syncing");
            ExpireBehavior    = data.GetInteger("expire_behavior");
            ExpireGracePeriod = data.GetInteger("expire_grace_period");
            SyncedAt          = data.GetDateTime("synced_at");
            RoleId            = data.GetSnowflake("role_id");

            DiscordApiData userData = data.Get("user");

            if (userData != null)
            {
                User = new DiscordUser(false, userData);
            }

            DiscordApiData accountData = data.Get("account");

            if (accountData != null)
            {
                Account = new DiscordIntegrationAccount(accountData);
            }
        }
コード例 #4
0
        internal DiscordGuildStoreChannel(DiscordHttpClient http, DiscordApiData data, Snowflake?guildId = null)
            : base(http, data, DiscordChannelType.GuildStore, guildId)
        {
            this.http = http;

            Nsfw     = data.GetBoolean("nsfw") ?? false;
            ParentId = data.GetSnowflake("parent_id");
        }
コード例 #5
0
        internal DiscordGuildVoiceChannel(DiscordHttpClient http, DiscordApiData data, Snowflake?guildId = null)
            : base(http, data, DiscordChannelType.GuildVoice, guildId)
        {
            this.http = http;

            Bitrate   = data.GetInteger("bitrate").Value;
            UserLimit = data.GetInteger("user_limit").Value;
            ParentId  = data.GetSnowflake("parent_id");
        }
コード例 #6
0
        internal DiscordGuildEmbed(DiscordHttpClient http, Snowflake guildId, DiscordApiData data)
        {
            this.http = http;

            GuildId = guildId;

            Enabled   = data.GetBoolean("enabled").Value;
            ChannelId = data.GetSnowflake("channel_id").Value;
        }
コード例 #7
0
        internal DiscordGame(DiscordApiData data)
        {
            Name          = data.GetString("name");
            Type          = (DiscordGameType)(data.GetInteger("type") ?? 0);
            Url           = data.GetString("url");
            CreatedAt     = data.GetInt64("created_at");
            ApplicationId = data.GetSnowflake("application_id");
            Details       = data.GetString("details");
            State         = data.GetString("state");
            Instance      = data.GetBoolean("instance");
            Flags         = (DiscordActivityFlag)(data.GetInteger("flags") ?? 0);

            DiscordApiData timestampsData = data.Get("timestamps");

            if (timestampsData != null)
            {
                Timestamps = new DiscordActivityTimestamps(timestampsData);
            }

            DiscordApiData emojiData = data.Get("emoji");

            if (emojiData != null)
            {
                Emoji = new DiscordActivityEmoji(emojiData);
            }

            DiscordApiData partyData = data.Get("party");

            if (partyData != null)
            {
                Party = new DiscordActivityParty(partyData);
            }

            DiscordApiData assetsData = data.Get("assets");

            if (assetsData != null)
            {
                Assets = new DiscordActivityAssets(assetsData);
            }

            DiscordApiData secretsData = data.Get("secrets");

            if (secretsData != null)
            {
                Secrets = new DiscordActivitySecrets(secretsData);
            }

            IList <DiscordApiData> buttonsArray = data.GetArray("buttons");

            if (buttonsArray != null)
            {
                Buttons = buttonsArray.Select(d => d.ToString()).ToArray();
            }
        }
コード例 #8
0
        internal DiscordDMChannel(DiscordHttpClient http, DiscordApiData data)
            : base(http, data, DiscordChannelType.DirectMessage)
        {
            this.http = http;

            lastMessageId = data.GetSnowflake("last_message_id") ?? default(Snowflake);

            // Normal DM should only ever have exactly one recipient
            DiscordApiData recipientData = data.GetArray("recipients").First();

            Recipient = new DiscordUser(false, recipientData);
        }
コード例 #9
0
        internal DiscordGuildChannel(DiscordHttpClient http, DiscordApiData data, DiscordChannelType type,
                                     Snowflake?guildId)
            : base(http, data, type)
        {
            this.http = http;

            GuildId  = guildId ?? data.GetSnowflake("guild_id").Value;
            Name     = data.GetString("name");
            Position = data.GetInteger("position").Value;

            IList <DiscordApiData> overwrites = data.GetArray("permission_overwrites");
            Dictionary <Snowflake, DiscordOverwrite> permissionOverwrites = new Dictionary <Snowflake, DiscordOverwrite>();

            for (int i = 0; i < overwrites.Count; i++)
            {
                DiscordOverwrite overwrite = new DiscordOverwrite(http, Id, overwrites[i]);
                permissionOverwrites.Add(overwrite.Id, overwrite);
            }

            PermissionOverwrites = permissionOverwrites;
        }
コード例 #10
0
        internal DiscordMessage(DiscordHttpClient http, DiscordApiData data)
            : base(data)
        {
            this.http = http;

            originalData = data;

            Content         = data.GetString("content");
            Timestamp       = data.GetDateTime("timestamp").GetValueOrDefault();
            EditedTimestamp = data.GetDateTime("edited_timestamp").GetValueOrDefault();
            TextToSpeech    = data.GetBoolean("tts").GetValueOrDefault();
            MentionEveryone = data.GetBoolean("mention_everyone").GetValueOrDefault();
            Nonce           = data.GetSnowflake("nonce");
            IsPinned        = data.GetBoolean("pinned").GetValueOrDefault();
            ChannelId       = data.GetSnowflake("channel_id").GetValueOrDefault();
            WebhookId       = data.GetSnowflake("webhook_id");
            Type            = (DiscordMessageType)(data.GetInteger("type") ?? 0);
            Flags           = (DiscordMessageFlags)(data.GetInteger("flags") ?? 0);

            // Get author
            DiscordApiData authorData = data.Get("author");

            if (authorData != null)
            {
                Author = new DiscordUser(WebhookId.HasValue, authorData);
            }

            // Get member
            DiscordApiData memberData = data.Get("member");

            if (memberData != null)
            {
                Member = new DiscordMessageMember(memberData);
            }

            // Get activity
            DiscordApiData activityData = data.Get("activity");

            if (activityData != null)
            {
                Activity = new DiscordMessageActivity(activityData);
            }

            // Get application
            DiscordApiData applicationData = data.Get("application");

            if (applicationData != null)
            {
                Application = new DiscordMessageApplication(applicationData);
            }

            // Get reference
            DiscordApiData messageReferenceData = data.Get("message_reference");

            if (messageReferenceData != null)
            {
                MessageReference = new DiscordMessageReference(messageReferenceData);
            }

            // Get mentions
            IList <DiscordApiData> mentionsArray = data.GetArray("mentions");

            if (mentionsArray != null)
            {
                DiscordUser[] mentions = new DiscordUser[mentionsArray.Count];

                for (int i = 0; i < mentionsArray.Count; i++)
                {
                    mentions[i] = new DiscordUser(false, mentionsArray[i]);
                }

                Mentions = mentions;
            }

            // Get mentioned roles
            IList <DiscordApiData> mentionRolesArray = data.GetArray("mention_roles");

            if (mentionRolesArray != null)
            {
                Snowflake[] mentionedRoles = new Snowflake[mentionRolesArray.Count];

                for (int i = 0; i < mentionRolesArray.Count; i++)
                {
                    mentionedRoles[i] = mentionRolesArray[i].ToSnowflake().Value;
                }

                MentionedRoleIds = mentionedRoles;
            }

            // Get channel mentions
            IList <DiscordApiData> channelMentionsArray = data.GetArray("mention_channels");

            if (channelMentionsArray != null)
            {
                DiscordChannelMention[] mentions = new DiscordChannelMention[channelMentionsArray.Count];

                for (int i = 0; i < channelMentionsArray.Count; i++)
                {
                    mentions[i] = new DiscordChannelMention(channelMentionsArray[i]);
                }

                MentionedChannels = mentions;
            }

            // Get attachments
            IList <DiscordApiData> attachmentsArray = data.GetArray("attachments");

            if (attachmentsArray != null)
            {
                DiscordAttachment[] attachments = new DiscordAttachment[attachmentsArray.Count];

                for (int i = 0; i < attachmentsArray.Count; i++)
                {
                    attachments[i] = new DiscordAttachment(attachmentsArray[i]);
                }

                Attachments = attachments;
            }

            // Get embeds
            IList <DiscordApiData> embedsArray = data.GetArray("embeds");

            if (embedsArray != null)
            {
                DiscordEmbed[] embeds = new DiscordEmbed[embedsArray.Count];

                for (int i = 0; i < embedsArray.Count; i++)
                {
                    embeds[i] = new DiscordEmbed(embedsArray[i]);
                }

                Embeds = embeds;
            }

            // Get reactions
            IList <DiscordApiData> reactionsArray = data.GetArray("reactions");

            if (reactionsArray != null)
            {
                DiscordReaction[] reactions = new DiscordReaction[reactionsArray.Count];

                for (int i = 0; i < reactionsArray.Count; i++)
                {
                    reactions[i] = new DiscordReaction(reactionsArray[i]);
                }

                Reactions = reactions;
            }
        }
コード例 #11
0
        internal DiscordGuild(DiscordHttpClient http, DiscordApiData data)
            : base(data)
        {
            this.http = http;

            Name            = data.GetString("name");
            RegionId        = data.GetString("region");
            AfkTimeout      = data.GetInteger("afk_timeout").Value;
            IsEmbedEnabled  = data.GetBoolean("embed_enabled") ?? false;
            OwnerId         = data.GetSnowflake("owner_id").Value;
            AfkChannelId    = data.GetSnowflake("afk_channel_id");
            EmbedChannelId  = data.GetSnowflake("embed_channel_id");
            ApplicationId   = data.GetSnowflake("application_id");
            IsWidgetEnabled = data.GetBoolean("widget_enabled") ?? false;
            WidgetChannelId = data.GetSnowflake("widget_channel_id");
            SystemChannelId = data.GetSnowflake("system_channel_id");

            ExplicitContentFilter       = (GuildExplicitContentFilterLevel)data.GetInteger("explicit_content_filter").Value;
            VerificationLevel           = (GuildVerificationLevel)data.GetInteger("verification_level").Value;
            DefaultMessageNotifications = (GuildNotificationOption)(data.GetInteger("default_message_notifications") ?? 0);
            MfaLevel = (GuildMfaLevel)data.GetInteger("mfa_level").Value;

            // Get image hashes
            string iconHash = data.GetString("icon");

            if (iconHash != null)
            {
                Icon = DiscordCdnUrl.ForGuildIcon(Id, iconHash);
            }

            string splashHash = data.GetString("splash");

            if (splashHash != null)
            {
                Splash = DiscordCdnUrl.ForGuildSplash(Id, splashHash);
            }

            // Get features
            IList <DiscordApiData> featuresData = data.GetArray("features");

            string[] features = new string[featuresData.Count];

            for (int i = 0; i < features.Length; i++)
            {
                features[i] = featuresData[i].ToString();
            }

            Features = features;

            // Get roles
            IList <DiscordApiData> rolesData          = data.GetArray("roles");
            Dictionary <Snowflake, DiscordRole> roles = new Dictionary <Snowflake, DiscordRole>();

            for (int i = 0; i < rolesData.Count; i++)
            {
                DiscordRole role = new DiscordRole(http, Id, rolesData[i]);
                roles.Add(role.Id, role);
            }

            Roles = roles;

            // Get emojis
            IList <DiscordApiData> emojisArray          = data.GetArray("emojis");
            Dictionary <Snowflake, DiscordEmoji> emojis = new Dictionary <Snowflake, DiscordEmoji>();

            for (int i = 0; i < emojisArray.Count; i++)
            {
                DiscordEmoji emoji = new DiscordEmoji(emojisArray[i]);
                emojis.Add(emoji.Id, emoji);
            }

            Emojis = emojis;
        }