discord_client_structs 0.2.0

Discord API/gateway structs with serde support
Documentation
use derive_builder::Builder;
use std::collections::HashMap;

#[derive(Debug, Clone, Builder, Default)]
#[builder(setter(into, strip_option), default)]
pub struct AuditLogQuery {
    pub before: Option<u64>,
    pub after: Option<u64>,
    pub limit: u8,
    pub user_id: Option<u64>,
    pub target_id: Option<u64>,
    pub action_type: Option<AuditLogActionType>,
}

impl AuditLogQuery {
    pub fn to_map(&self) -> HashMap<String, String> {
        let mut map = HashMap::new();
        if let Some(before) = self.before {
            map.insert("before".to_string(), before.to_string());
        }
        if let Some(after) = self.after {
            map.insert("after".to_string(), after.to_string());
        }
        let limit = if self.limit == 0u8 || self.limit > 100u8 {
            50u8
        } else {
            self.limit
        };
        map.insert("limit".to_string(), limit.to_string());
        if let Some(user_id) = self.user_id {
            map.insert("user_id".to_string(), user_id.to_string());
        }
        if let Some(target_id) = self.target_id {
            map.insert("target_id".to_string(), target_id.to_string());
        }
        if let Some(action_type) = self.action_type {
            map.insert("action_type".to_string(), (action_type as u8).to_string());
        }
        map
    }
}

#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AuditLogActionType {
    GuildUpdate = 1,
    ChannelCreate = 10,
    ChannelUpdate = 11,
    ChannelDelete = 12,
    ChannelOverwriteCreate = 13,
    ChannelOverwriteUpdate = 14,
    ChannelOverwriteDelete = 15,
    MemberKick = 20,
    MemberPrune = 21,
    MemberBanAdd = 22,
    MemberBanRemove = 23,
    MemberUpdate = 24,
    MemberRoleUpdate = 25,
    MemberMove = 26,
    MemberDisconnect = 27,
    BotAdd = 28,
    RoleCreate = 30,
    RoleUpdate = 31,
    RoleDelete = 32,
    InviteCreate = 40,
    InviteUpdate = 41,
    InviteDelete = 42,
    WebhookCreate = 50,
    WebhookUpdate = 51,
    WebhookDelete = 52,
    EmojiCreate = 60,
    EmojiUpdate = 61,
    EmojiDelete = 62,
    MessageDelete = 72,
    MessageBulkDelete = 73,
    MessagePin = 74,
    MessageUnpin = 75,
    IntegrationCreate = 80,
    IntegrationUpdate = 81,
    IntegrationDelete = 82,
    StageInstanceCreate = 83,
    StageInstanceUpdate = 84,
    StageInstanceDelete = 85,
    StickerCreate = 90,
    StickerUpdate = 91,
    StickerDelete = 92,
    GuildScheduledEventCreate = 100,
    GuildScheduledEventUpdate = 101,
    GuildScheduledEventDelete = 102,
    ThreadCreate = 110,
    ThreadUpdate = 111,
    ThreadDelete = 112,
    ApplicationCommandPermissionUpdate = 121,
    SoundboardSoundCreate = 130,
    SoundboardSoundUpdate = 131,
    SoundboardSoundDelete = 132,
    AutoModerationRuleCreate = 140,
    AutoModerationRuleUpdate = 141,
    AutoModerationRuleDelete = 142,
    AutoModerationBlockMessage = 143,
    AutoModerationFlagToChannel = 144,
    AutoModerationUserCommunicationDisabled = 145,
    AutoModerationQuarantineUser = 146,
    CreatorMonetizationRequestCreated = 150,
    CreatorMonetizationTermsAccepted = 151,
    OnboardingPromptCreate = 163,
    OnboardingPromptUpdate = 164,
    OnboardingPromptDelete = 165,
    OnboardingCreate = 166,
    OnboardingUpdate = 167,
    HarmfulLinksBlockedMessage = 180,
    VoiceChannelStatusCreate = 192,
    VoiceChannelStatusDelete = 193,
    ClydeAiProfileUpdate = 194,
    GuildScheduledEventExceptionCreate = 200,
    GuildScheduledEventExceptionUpdate = 201,
    GuildScheduledEventExceptionDelete = 202,
    GuildMemberVerificationUpdate = 210,
}