Stability, new event
This commit is contained in:
parent
1478228664
commit
63cfebdf5a
|
@ -492,6 +492,10 @@ impl Gateway {
|
|||
"USER_UPDATE" => {
|
||||
let new_data: types::UserUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
||||
self.events.lock().await.user.update.update_data(new_data).await;
|
||||
},
|
||||
"USER_GUILD_SETTINGS_UPDATE" => {
|
||||
let new_data: types::UserGuildSettingsUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
||||
self.events.lock().await.user.guild_settings_update.update_data(new_data).await;
|
||||
}
|
||||
"VOICE_STATE_UPDATE" => {
|
||||
let new_data: types::VoiceStateUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
||||
|
@ -781,6 +785,7 @@ mod events {
|
|||
#[derive(Default, Debug)]
|
||||
pub struct User {
|
||||
pub update: GatewayEvent<types::UserUpdate>,
|
||||
pub guild_settings_update: GatewayEvent<types::UserGuildSettingsUpdate>,
|
||||
pub presence_update: GatewayEvent<types::PresenceUpdate>,
|
||||
pub typing_start_event: GatewayEvent<types::TypingStartEvent>,
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ use crate::types::{
|
|||
#[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))]
|
||||
pub struct Channel {
|
||||
pub id: Snowflake,
|
||||
pub created_at: chrono::DateTime<Utc>,
|
||||
pub created_at: Option<chrono::DateTime<Utc>>,
|
||||
#[serde(rename = "type")]
|
||||
pub channel_type: ChannelType,
|
||||
pub guild_id: Option<Snowflake>,
|
||||
|
|
|
@ -19,7 +19,7 @@ pub struct Guild {
|
|||
pub splash: Option<String>,
|
||||
pub discovery_splash: Option<String>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub owner: bool, // True if requesting user is owner
|
||||
pub owner: Option<bool>, // True if requesting user is owner
|
||||
pub owner_id: Option<Snowflake>,
|
||||
pub permissions: Option<String>,
|
||||
pub afk_channel_id: Option<Snowflake>,
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::entities::User;
|
||||
use crate::types::entities::PublicUser;
|
||||
|
||||
#[derive(Debug, Deserialize, Default, Serialize, Clone, PartialEq, Eq)]
|
||||
pub struct GuildMember {
|
||||
pub user: Option<User>,
|
||||
pub user: Option<PublicUser>,
|
||||
pub nick: Option<String>,
|
||||
pub avatar: Option<String>,
|
||||
pub roles: Vec<String>,
|
||||
|
|
|
@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize};
|
|||
use crate::types::{
|
||||
entities::{
|
||||
Application, Attachment, Channel, Emoji, GuildMember, RoleSubscriptionData, Sticker,
|
||||
StickerItem, User,
|
||||
StickerItem, User, PublicUser
|
||||
},
|
||||
utils::Snowflake,
|
||||
};
|
||||
|
@ -14,7 +14,7 @@ pub struct Message {
|
|||
pub id: Snowflake,
|
||||
pub channel_id: Snowflake,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub author: User,
|
||||
pub author: PublicUser,
|
||||
pub content: String,
|
||||
pub timestamp: String,
|
||||
pub edited_timestamp: Option<String>,
|
||||
|
|
|
@ -42,11 +42,11 @@ pub struct User {
|
|||
#[serde(deserialize_with = "deserialize_option_number_from_string")]
|
||||
flags: Option<i32>,
|
||||
pub premium_since: Option<DateTime<Utc>>,
|
||||
pub premium_type: u8,
|
||||
pub premium_type: Option<u8>,
|
||||
pub pronouns: Option<String>,
|
||||
pub public_flags: Option<u16>,
|
||||
pub banner: Option<String>,
|
||||
pub bio: String,
|
||||
pub bio: Option<String>,
|
||||
pub theme_colors: Option<Vec<u8>>,
|
||||
pub phone: Option<String>,
|
||||
pub nsfw_allowed: bool,
|
||||
|
@ -56,19 +56,19 @@ pub struct User {
|
|||
pub disabled: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct PublicUser {
|
||||
pub id: Snowflake,
|
||||
pub username: String,
|
||||
pub discriminator: String,
|
||||
pub username: Option<String>,
|
||||
pub discriminator: Option<String>,
|
||||
pub avatar: Option<String>,
|
||||
pub accent_color: Option<u8>,
|
||||
pub banner: Option<String>,
|
||||
pub theme_colors: Option<Vec<u8>>,
|
||||
pub pronouns: Option<String>,
|
||||
pub bot: Option<bool>,
|
||||
pub bio: String,
|
||||
pub premium_type: u8,
|
||||
pub bio: Option<String>,
|
||||
pub premium_type: Option<u8>,
|
||||
pub premium_since: Option<DateTime<Utc>>,
|
||||
pub public_flags: Option<u16>,
|
||||
}
|
||||
|
@ -77,8 +77,8 @@ impl From<User> for PublicUser {
|
|||
fn from(value: User) -> Self {
|
||||
Self {
|
||||
id: value.id,
|
||||
username: value.username,
|
||||
discriminator: value.discriminator,
|
||||
username: Some(value.username),
|
||||
discriminator: Some(value.discriminator),
|
||||
avatar: value.avatar,
|
||||
accent_color: value.accent_color,
|
||||
banner: value.banner,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use crate::types::entities::{Guild, UnavailableGuild, User};
|
||||
use crate::types::entities::{Guild, UnavailableGuild, PublicUser};
|
||||
use crate::types::events::WebSocketEvent;
|
||||
use crate::types::{AuditLogEntry, Emoji, GuildMember, GuildScheduledEvent, RoleObject, Sticker};
|
||||
use chrono::{DateTime, Utc};
|
||||
|
@ -32,7 +32,7 @@ impl WebSocketEvent for GuildCreate {}
|
|||
/// See https://discord.com/developers/docs/topics/gateway-events#guild-ban-add-guild-ban-add-event-fields
|
||||
pub struct GuildBanAdd {
|
||||
pub guild_id: String,
|
||||
pub user: User,
|
||||
pub user: PublicUser,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for GuildBanAdd {}
|
||||
|
@ -41,7 +41,7 @@ impl WebSocketEvent for GuildBanAdd {}
|
|||
/// See https://discord.com/developers/docs/topics/gateway-events#guild-ban-remove
|
||||
pub struct GuildBanRemove {
|
||||
pub guild_id: String,
|
||||
pub user: User,
|
||||
pub user: PublicUser,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for GuildBanRemove {}
|
||||
|
@ -113,7 +113,7 @@ impl WebSocketEvent for GuildMemberAdd {}
|
|||
/// See https://discord.com/developers/docs/topics/gateway-events#guild-member-remove
|
||||
pub struct GuildMemberRemove {
|
||||
pub guild_id: String,
|
||||
pub user: User,
|
||||
pub user: PublicUser,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for GuildMemberRemove {}
|
||||
|
@ -123,7 +123,7 @@ impl WebSocketEvent for GuildMemberRemove {}
|
|||
pub struct GuildMemberUpdate {
|
||||
pub guild_id: String,
|
||||
pub roles: Vec<String>,
|
||||
pub user: User,
|
||||
pub user: PublicUser,
|
||||
pub nick: Option<String>,
|
||||
pub avatar: Option<String>,
|
||||
pub joined_at: Option<DateTime<Utc>>,
|
||||
|
|
|
@ -145,7 +145,9 @@ pub struct MessageACK {
|
|||
/// ?
|
||||
pub version: u16,
|
||||
pub message_id: String,
|
||||
pub last_viewed: Option<DateTime<Utc>>,
|
||||
/// This is an integer???
|
||||
/// Not even unix, see '3070'???
|
||||
pub last_viewed: Option<u64>,
|
||||
/// What flags?
|
||||
pub flags: Option<serde_json::Value>,
|
||||
pub channel_id: String,
|
||||
|
|
|
@ -35,7 +35,7 @@ pub struct ThreadListSync {
|
|||
pub guild_id: String,
|
||||
pub channel_ids: Option<Vec<String>>,
|
||||
pub threads: Vec<Channel>,
|
||||
pub members: Vec<ThreadMember>,
|
||||
pub members: Option<Vec<ThreadMember>>,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for ThreadListSync {}
|
||||
|
|
|
@ -1,12 +1,54 @@
|
|||
use crate::types::entities::User;
|
||||
use crate::types::entities::PublicUser;
|
||||
use crate::types::events::WebSocketEvent;
|
||||
use crate::types::utils::Snowflake;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||
/// See https://discord.com/developers/docs/topics/gateway-events#user-update
|
||||
pub struct UserUpdate {
|
||||
#[serde(flatten)]
|
||||
pub user: User,
|
||||
pub user: PublicUser,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for UserUpdate {}
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||
/// Undocumented
|
||||
///
|
||||
/// Possibly an update for muted guild / channel settings for the current user
|
||||
///
|
||||
/// {"version":2,"suppress_roles":false,"suppress_everyone":false,"notify_highlights":0,"muted":false,"mute_scheduled_events":false,"mute_config":null,"mobile_push":true,"message_notifications":1,"hide_muted_channels":false,"guild_id":"848582562217590824","flags":0,"channel_overrides":[{"muted":false,"mute_config":null,"message_notifications":3,"flags":4096,"collapsed":false,"channel_id":"1042689182893604885"}]}
|
||||
pub struct UserGuildSettingsUpdate {
|
||||
pub version: u8,
|
||||
pub suppress_roles: bool,
|
||||
pub suppress_everyone: bool,
|
||||
pub notify_highlights: u8,
|
||||
pub muted: bool,
|
||||
pub mute_scheduled_events: bool,
|
||||
/// ??
|
||||
pub mute_config: Option<serde_json::Value>,
|
||||
pub mobile_push: bool,
|
||||
pub message_notifications: u8,
|
||||
pub hide_muted_channels: bool,
|
||||
pub guild_id: Snowflake,
|
||||
pub flags: i32,
|
||||
pub channel_overrides: Vec<UserGuildSettingsChannelOverride>
|
||||
}
|
||||
|
||||
impl WebSocketEvent for UserGuildSettingsUpdate {}
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||
/// Undocumented
|
||||
///
|
||||
/// Received in [UserGuildSettingsUpdate]
|
||||
///
|
||||
/// {"muted":false,"mute_config":null,"message_notifications":3,"flags":4096,"collapsed":false,"channel_id":"1042689182893604885"}
|
||||
pub struct UserGuildSettingsChannelOverride {
|
||||
pub muted: bool,
|
||||
/// ??
|
||||
pub mute_config: Option<serde_json::Value>,
|
||||
pub message_notifications: u8,
|
||||
pub flags: i32,
|
||||
pub collapsed: bool,
|
||||
pub channel_id: Snowflake,
|
||||
}
|
Loading…
Reference in New Issue