diff options
author | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-02-06 15:35:02 +0100 |
---|---|---|
committer | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-02-06 15:35:02 +0100 |
commit | 84d714324ad65de94cfb3076daa8f6622a54e438 (patch) | |
tree | 563a0686d87db0bba3d6e1ce3aa2f561dfe58998 /src | |
parent | update missing-native-js-functions version (diff) | |
download | server-84d714324ad65de94cfb3076daa8f6622a54e438.tar.xz |
:sparkles: Schema interfaces
Diffstat (limited to 'src')
-rw-r--r-- | src/Schema/Activity.ts | 40 | ||||
-rw-r--r-- | src/Schema/Emoji.ts | 8 | ||||
-rw-r--r-- | src/Schema/Identify.ts | 16 | ||||
-rw-r--r-- | src/models/Guild.ts | 71 | ||||
-rw-r--r-- | src/models/Guild.ts.OLD | 1 |
5 files changed, 98 insertions, 38 deletions
diff --git a/src/Schema/Activity.ts b/src/Schema/Activity.ts index e502cebd..00772743 100644 --- a/src/Schema/Activity.ts +++ b/src/Schema/Activity.ts @@ -39,3 +39,43 @@ export const ActivitySchema = { ], $since: Number, // unix time (in milliseconds) of when the client went idle, or null if the client is not idle }; + +export interface ActivitySchema { + afk: boolean; + status: string; + activities?: [ + { + name: string; // the activity's name + type: number; // activity type // TODO: check if its between range 0-5 + url?: string; // stream url, is validated when type is 1 + created_at?: number; // unix timestamp of when the activity was added to the user's session + timestamps?: { + // unix timestamps for start and/or end of the game + start: number; + end: number; + }; + application_id?: bigint; // application id for the game + details?: string; + State?: string; + emoji?: EmojiSchema; + party?: { + id?: string; + size?: [number]; // used to show the party's current and maximum size // TODO: array length 2 + }; + assets?: { + large_image?: string; // the id for a large asset of the activity, usually a snowflake + large_text?: string; // text displayed when hovering over the large image of the activity + small_image?: string; // the id for a small asset of the activity, usually a snowflake + small_text?: string; // text displayed when hovering over the small image of the activity + }; + secrets?: { + join?: string; // the secret for joining a party + spectate?: string; // the secret for spectating a game + match?: string; // the secret for a specific instanced match + }; + instance?: boolean; + flags: bigint; // activity flags OR d together, describes what the payload includes + } + ]; + since?: number; // unix time (in milliseconds) of when the client went idle, or null if the client is not idle +} diff --git a/src/Schema/Emoji.ts b/src/Schema/Emoji.ts index ebb9afdd..09f3ebb1 100644 --- a/src/Schema/Emoji.ts +++ b/src/Schema/Emoji.ts @@ -1,5 +1,11 @@ export const EmojiSchema = { name: String, // the name of the emoji - id: BigInt, // the id of the emoji + $id: BigInt, // the id of the emoji animated: Boolean, // whether this emoji is animated }; + +export interface EmojiSchema { + name: string; + id?: bigint; + animated: Boolean; +} diff --git a/src/Schema/Identify.ts b/src/Schema/Identify.ts index 8775fac3..3a7182db 100644 --- a/src/Schema/Identify.ts +++ b/src/Schema/Identify.ts @@ -15,3 +15,19 @@ export const IdentifySchema = { $shard: [Number], $guild_subscriptions: Boolean, }; + +export interface IdentifySchema { + token: string; + properties: { + // bruh discord really uses $ in the property key, so we need to double prefix it, because instanceOf treats $ (prefix) as a optional key + $$os: string; + $$browser: string; + $$device: string; + }; + intents: bigint; // discord uses a Integer for bitfields we use bigints tho. | instanceOf will automatically convert the Number to a BigInt + presence?: ActivitySchema; + compress?: boolean; + large_threshold?: number; + shard?: [number]; + guild_subscriptions?: boolean; +} diff --git a/src/models/Guild.ts b/src/models/Guild.ts index 3d84a9c8..5140c610 100644 --- a/src/models/Guild.ts +++ b/src/models/Guild.ts @@ -4,50 +4,49 @@ import { Member } from "./Member"; import { Role } from "./Role"; export interface Guild { - id: bigint; - name: string; - icon: string; - icon_hash: string; - splash: string; - discovery_splash: string; - owner: boolean; - owner_id: bigint; - permissions: string; - region: string; afk_channel_id: bigint; afk_timeout: number; - widget_enabled: boolean; - widget_channel_id: bigint; - verification_level: number; + application_id: bigint; + approximate_member_count: number; + approximate_presence_count: number; + banner: string; + channels: Channel[]; default_message_notifications: number; - explicit_content_filter: number; - roles: Role[]; + description: string; + discovery_splash: string; emojis: Emoji[]; + explicit_content_filter: number; features: []; - mfa_level: number; - application_id: bigint; - system_channel_id: bigint; - system_channel_flags: number; - rules_channel_id: bigint; - joined_at: number; + icon: string; + id: bigint; + joined_at: number; // ! member specific should be removed large: boolean; - unavailable: boolean; + max_members: number; // e.g. default 100.000 + max_presences: number; + max_video_channel_users: number; // ? default: 25, is this max 25 streaming or watching member_count: number; - voice_states: []; // ! tf is this members: Member[]; - channels: Channel[]; - presences: []; // TODO: add model - max_presences: number; - max_members: number; - vanity_url_code: string; - description: string; - banner: string; - premium_tier: number; + mfa_level: number; + name: string; + owner_id: bigint; + owner: boolean; + permissions: string; + preferred_locale: string; // only community guilds can choose this premium_subscription_count: number; - preferred_locale: string; + premium_tier: number; // nitro boost level + presences: []; // TODO: add model public_updates_channel_id: bigint; - max_video_channel_users: number; - approximate_member_count: number; - approximate_presence_count: number; - welcome_screen: []; // ! what is this + region: string; + roles: Role[]; + rules_channel_id: bigint; + splash: string; + system_channel_flags: number; + system_channel_id: bigint; + unavailable: boolean; + vanity_url_code: string; + verification_level: number; + voice_states: []; // connected users + welcome_screen: []; // welcome splash screen if a user joins guild + widget_channel_id: bigint; + widget_enabled: boolean; } diff --git a/src/models/Guild.ts.OLD b/src/models/Guild.ts.OLD index a4e7460f..7f65ed17 100644 --- a/src/models/Guild.ts.OLD +++ b/src/models/Guild.ts.OLD @@ -2,7 +2,6 @@ export interface Guild { id: bigint; name: string; icon: string; // e.g. "28776e7ad42922582be25bb06cdc5b53" - icon_hash: string; afk_channel_id: bigint; afk_timeout: number; application_id: bigint; |