Utilize new macros and use distinct Flag types
This commit is contained in:
parent
656e5e31c0
commit
d89975819a
|
@ -31,7 +31,7 @@ pub struct Application {
|
||||||
pub verify_key: String,
|
pub verify_key: String,
|
||||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||||
pub owner: Shared<User>,
|
pub owner: Shared<User>,
|
||||||
pub flags: u64,
|
pub flags: ApplicationFlags,
|
||||||
#[cfg(feature = "sqlx")]
|
#[cfg(feature = "sqlx")]
|
||||||
pub redirect_uris: Option<sqlx::types::Json<Vec<String>>>,
|
pub redirect_uris: Option<sqlx::types::Json<Vec<String>>>,
|
||||||
#[cfg(not(feature = "sqlx"))]
|
#[cfg(not(feature = "sqlx"))]
|
||||||
|
@ -73,7 +73,7 @@ impl Default for Application {
|
||||||
bot_require_code_grant: false,
|
bot_require_code_grant: false,
|
||||||
verify_key: "".to_string(),
|
verify_key: "".to_string(),
|
||||||
owner: Default::default(),
|
owner: Default::default(),
|
||||||
flags: 0,
|
flags: ApplicationFlags::empty(),
|
||||||
redirect_uris: None,
|
redirect_uris: None,
|
||||||
rpc_application_state: 0,
|
rpc_application_state: 0,
|
||||||
store_application_state: 1,
|
store_application_state: 1,
|
||||||
|
@ -93,12 +93,6 @@ impl Default for Application {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Application {
|
|
||||||
pub fn flags(&self) -> ApplicationFlags {
|
|
||||||
ApplicationFlags::from_bits(self.flags.to_owned()).unwrap()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord.com/developers/docs/resources/application#install-params-object>
|
/// See <https://discord.com/developers/docs/resources/application#install-params-object>
|
||||||
|
@ -109,6 +103,7 @@ pub struct InstallParams {
|
||||||
|
|
||||||
bitflags! {
|
bitflags! {
|
||||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||||
|
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord.com/developers/docs/resources/application#application-object-application-flags>
|
/// See <https://discord.com/developers/docs/resources/application#application-object-application-flags>
|
||||||
pub struct ApplicationFlags: u64 {
|
pub struct ApplicationFlags: u64 {
|
||||||
|
|
|
@ -99,7 +99,7 @@ pub struct Guild {
|
||||||
pub splash: Option<String>,
|
pub splash: Option<String>,
|
||||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||||
pub stickers: Option<Vec<Sticker>>,
|
pub stickers: Option<Vec<Sticker>>,
|
||||||
pub system_channel_flags: Option<u64>,
|
pub system_channel_flags: Option<SystemChannelFlags>,
|
||||||
pub system_channel_id: Option<Snowflake>,
|
pub system_channel_id: Option<Snowflake>,
|
||||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||||
pub vanity_url_code: Option<String>,
|
pub vanity_url_code: Option<String>,
|
||||||
|
@ -423,6 +423,7 @@ pub enum PremiumTier {
|
||||||
|
|
||||||
bitflags! {
|
bitflags! {
|
||||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||||
|
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||||
/// # Reference
|
/// # Reference
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#system-channel-flags>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#system-channel-flags>
|
||||||
pub struct SystemChannelFlags: u64 {
|
pub struct SystemChannelFlags: u64 {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::types::Shared;
|
use crate::types::{GuildMemberFlags, Shared};
|
||||||
use crate::types::{entities::PublicUser, Snowflake};
|
use crate::types::{entities::PublicUser, Snowflake};
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Default, Serialize, Clone)]
|
#[derive(Debug, Deserialize, Default, Serialize, Clone)]
|
||||||
|
@ -25,7 +25,7 @@ pub struct GuildMember {
|
||||||
pub premium_since: Option<DateTime<Utc>>,
|
pub premium_since: Option<DateTime<Utc>>,
|
||||||
pub deaf: bool,
|
pub deaf: bool,
|
||||||
pub mute: bool,
|
pub mute: bool,
|
||||||
pub flags: Option<i32>,
|
pub flags: Option<GuildMemberFlags>,
|
||||||
pub pending: Option<bool>,
|
pub pending: Option<bool>,
|
||||||
pub permissions: Option<String>,
|
pub permissions: Option<String>,
|
||||||
pub communication_disabled_until: Option<DateTime<Utc>>,
|
pub communication_disabled_until: Option<DateTime<Utc>>,
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
use bitflags::bitflags;
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
@ -62,7 +63,7 @@ pub struct Message {
|
||||||
pub message_reference: Option<sqlx::types::Json<MessageReference>>,
|
pub message_reference: Option<sqlx::types::Json<MessageReference>>,
|
||||||
#[cfg(not(feature = "sqlx"))]
|
#[cfg(not(feature = "sqlx"))]
|
||||||
pub message_reference: Option<MessageReference>,
|
pub message_reference: Option<MessageReference>,
|
||||||
pub flags: Option<u64>,
|
pub flags: Option<MessageFlags>,
|
||||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||||
pub referenced_message: Option<Box<Message>>,
|
pub referenced_message: Option<Box<Message>>,
|
||||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||||
|
@ -260,3 +261,38 @@ pub struct MessageActivity {
|
||||||
pub activity_type: i64,
|
pub activity_type: i64,
|
||||||
pub party_id: Option<String>,
|
pub party_id: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bitflags! {
|
||||||
|
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash, PartialOrd)]
|
||||||
|
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://docs.discord.sex/resources/message#message-type>
|
||||||
|
pub struct MessageFlags: u64 {
|
||||||
|
/// This message has been published to subscribed channels (via Channel Following)
|
||||||
|
const CROSSPOSTED = 1 << 0;
|
||||||
|
/// This message originated from a message in another channel (via Channel Following)
|
||||||
|
const IS_CROSSPOST = 1 << 1;
|
||||||
|
/// Embeds will not be included when serializing this message
|
||||||
|
const SUPPRESS_EMBEDS = 1 << 2;
|
||||||
|
/// The source message for this crosspost has been deleted (via Channel Following)
|
||||||
|
const SOURCE_MESSAGE_DELETED = 1 << 3;
|
||||||
|
/// This message came from the urgent message system
|
||||||
|
const URGENT = 1 << 4;
|
||||||
|
/// This message has an associated thread, with the same ID as the message
|
||||||
|
const HAS_THREAD = 1 << 5;
|
||||||
|
/// This message is only visible to the user who invoked the interaction
|
||||||
|
const EPHEMERAL = 1 << 6;
|
||||||
|
/// This message is an interaction response and the bot is "thinking"
|
||||||
|
const LOADING = 1 << 7;
|
||||||
|
/// Some roles were not mentioned and added to the thread
|
||||||
|
const FAILED_TO_MENTION_SOME_ROLES_IN_THREAD = 1 << 8;
|
||||||
|
/// This message contains a link that impersonates Discord
|
||||||
|
const SHOULD_SHOW_LINK_NOT_DISCORD_WARNING = 1 << 10;
|
||||||
|
/// This message will not trigger push and desktop notifications
|
||||||
|
const SUPPRESS_NOTIFICATIONS = 1 << 12;
|
||||||
|
/// This message's audio attachments are rendered as voice messages
|
||||||
|
const VOICE_MESSAGE = 1 << 13;
|
||||||
|
/// This message has a forwarded message snapshot attached
|
||||||
|
const HAS_SNAPSHOT = 1 << 14;
|
||||||
|
}
|
||||||
|
}
|
|
@ -72,6 +72,7 @@ pub struct RoleTags {
|
||||||
|
|
||||||
bitflags! {
|
bitflags! {
|
||||||
#[derive(Debug, Default, Clone, Hash, Serialize, Deserialize, PartialEq, Eq)]
|
#[derive(Debug, Default, Clone, Hash, Serialize, Deserialize, PartialEq, Eq)]
|
||||||
|
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||||
/// Permissions limit what users of certain roles can do on a Guild to Guild basis.
|
/// Permissions limit what users of certain roles can do on a Guild to Guild basis.
|
||||||
///
|
///
|
||||||
/// # Reference:
|
/// # Reference:
|
||||||
|
|
|
@ -54,7 +54,7 @@ pub struct User {
|
||||||
/// So we need to account for that
|
/// So we need to account for that
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
#[serde(deserialize_with = "deserialize_option_number_from_string")]
|
#[serde(deserialize_with = "deserialize_option_number_from_string")]
|
||||||
pub flags: Option<i32>,
|
pub flags: Option<UserFlags>,
|
||||||
pub premium_since: Option<DateTime<Utc>>,
|
pub premium_since: Option<DateTime<Utc>>,
|
||||||
pub premium_type: Option<u8>,
|
pub premium_type: Option<u8>,
|
||||||
pub pronouns: Option<String>,
|
pub pronouns: Option<String>,
|
||||||
|
@ -112,7 +112,7 @@ const CUSTOM_USER_FLAG_OFFSET: u64 = 1 << 32;
|
||||||
|
|
||||||
bitflags::bitflags! {
|
bitflags::bitflags! {
|
||||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||||
pub struct UserFlags: u64 {
|
pub struct UserFlags: u64 {
|
||||||
const DISCORD_EMPLOYEE = 1 << 0;
|
const DISCORD_EMPLOYEE = 1 << 0;
|
||||||
const PARTNERED_SERVER_OWNER = 1 << 1;
|
const PARTNERED_SERVER_OWNER = 1 << 1;
|
||||||
|
|
|
@ -132,6 +132,7 @@ impl Default for CreateChannelInviteSchema {
|
||||||
|
|
||||||
bitflags! {
|
bitflags! {
|
||||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
||||||
|
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||||
pub struct InviteFlags: u64 {
|
pub struct InviteFlags: u64 {
|
||||||
const GUEST = 1 << 0;
|
const GUEST = 1 << 0;
|
||||||
const VIEWED = 1 << 1;
|
const VIEWED = 1 << 1;
|
||||||
|
@ -165,29 +166,6 @@ impl<'de> Deserialize<'de> for InviteFlags {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "sqlx")]
|
|
||||||
impl sqlx::Type<sqlx::MySql> for InviteFlags {
|
|
||||||
fn type_info() -> sqlx::mysql::MySqlTypeInfo {
|
|
||||||
u64::type_info()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "sqlx")]
|
|
||||||
impl<'q> sqlx::Encode<'q, sqlx::MySql> for InviteFlags {
|
|
||||||
fn encode_by_ref(&self, buf: &mut <sqlx::MySql as sqlx::database::HasArguments<'q>>::ArgumentBuffer) -> sqlx::encode::IsNull {
|
|
||||||
u64::encode_by_ref(&self.0.0, buf)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "sqlx")]
|
|
||||||
impl<'r> sqlx::Decode<'r, sqlx::MySql> for InviteFlags {
|
|
||||||
fn decode(value: <sqlx::MySql as sqlx::database::HasValueRef<'r>>::ValueRef) -> Result<Self, sqlx::error::BoxDynError> {
|
|
||||||
let raw = u64::decode(value)?;
|
|
||||||
|
|
||||||
Ok(Self::from_bits(raw).unwrap())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize, Clone, Copy, Default, PartialOrd, Ord, PartialEq, Eq)]
|
#[derive(Debug, Deserialize, Serialize, Clone, Copy, Default, PartialOrd, Ord, PartialEq, Eq)]
|
||||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
|
|
|
@ -132,6 +132,7 @@ pub struct ModifyGuildMemberSchema {
|
||||||
|
|
||||||
bitflags! {
|
bitflags! {
|
||||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord)]
|
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord)]
|
||||||
|
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||||
/// Represents the flags of a Guild Member.
|
/// Represents the flags of a Guild Member.
|
||||||
///
|
///
|
||||||
/// # Reference:
|
/// # Reference:
|
||||||
|
|
|
@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
|
||||||
use crate::types::entities::{
|
use crate::types::entities::{
|
||||||
AllowedMention, Component, Embed, MessageReference, PartialDiscordFileAttachment,
|
AllowedMention, Component, Embed, MessageReference, PartialDiscordFileAttachment,
|
||||||
};
|
};
|
||||||
use crate::types::{Attachment, Snowflake};
|
use crate::types::{Attachment, MessageFlags, Snowflake};
|
||||||
|
|
||||||
#[derive(Debug, Default, Deserialize, Serialize, Clone, PartialEq)]
|
#[derive(Debug, Default, Deserialize, Serialize, Clone, PartialEq)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
|
@ -123,7 +123,7 @@ pub struct MessageModifySchema {
|
||||||
embed: Option<Embed>,
|
embed: Option<Embed>,
|
||||||
allowed_mentions: Option<AllowedMention>,
|
allowed_mentions: Option<AllowedMention>,
|
||||||
components: Option<Vec<Component>>,
|
components: Option<Vec<Component>>,
|
||||||
flags: Option<i32>,
|
flags: Option<MessageFlags>,
|
||||||
files: Option<Vec<u8>>,
|
files: Option<Vec<u8>>,
|
||||||
payload_json: Option<String>,
|
payload_json: Option<String>,
|
||||||
attachments: Option<Vec<Attachment>>,
|
attachments: Option<Vec<Attachment>>,
|
||||||
|
|
Loading…
Reference in New Issue