From 855c7f46fc84b1654b78b5406bc568f41dcc2c10 Mon Sep 17 00:00:00 2001 From: ayntee Date: Sun, 28 Mar 2021 22:17:00 +0400 Subject: [PATCH] types: add invite types (#703) --- src/types/invites/get_invite.ts | 9 +++++++++ src/types/invites/invite.ts | 26 ++++++++++++++++++++++++++ src/types/invites/invite_metadata.ts | 17 +++++++++++++++++ src/types/invites/target_user_types.ts | 4 ++++ 4 files changed, 56 insertions(+) create mode 100644 src/types/invites/get_invite.ts create mode 100644 src/types/invites/invite.ts create mode 100644 src/types/invites/invite_metadata.ts create mode 100644 src/types/invites/target_user_types.ts diff --git a/src/types/invites/get_invite.ts b/src/types/invites/get_invite.ts new file mode 100644 index 000000000..1b7f193a2 --- /dev/null +++ b/src/types/invites/get_invite.ts @@ -0,0 +1,9 @@ +import { SnakeCaseProps } from "../util.ts"; + +export interface GetInvite { + /** Whether the invite should contain approximate member counts */ + with_counts?: boolean; +} + +/** https://discord.com/developers/docs/resources/invite#get-invite */ +export type DiscordGetInvite = SnakeCaseProps; diff --git a/src/types/invites/invite.ts b/src/types/invites/invite.ts new file mode 100644 index 000000000..3be9cfd81 --- /dev/null +++ b/src/types/invites/invite.ts @@ -0,0 +1,26 @@ +import { Channel } from "../channels/channel.ts"; +import { User } from "../users/user.ts"; +import { SnakeCaseProps } from "../util.ts"; +import { DiscordTargetUserTypes } from "./target_user_types.ts"; + +export interface Invite { + /** The invite code (unique ID) */ + code: string; + /** The guild this invite is for */ + guild?: Partial; + /** The channel this invite is for */ + channel: Partial; + /** The user who created the invite */ + inviter?: User; + /** The target user for this invite */ + targetUser?: User; + /** The type of user target for this invite */ + targetUserType?: DiscordTargetUserTypes; + /** Approximate count of online members (only present when target_user is set) */ + approximatePresenceCount?: number; + /** Approximate count of total members */ + approximateMemberCount?: number; +} + +/** https://discord.com/developers/docs/resources/invite#invite-object */ +export type DiscordInvite = SnakeCaseProps; diff --git a/src/types/invites/invite_metadata.ts b/src/types/invites/invite_metadata.ts new file mode 100644 index 000000000..40d654ba5 --- /dev/null +++ b/src/types/invites/invite_metadata.ts @@ -0,0 +1,17 @@ +import { SnakeCaseProps } from "../util.ts"; + +export interface InviteMetadata { + /** Number of times this invite has been used */ + uses: number; + /** Max number of times this invite can be used */ + maxUses: number; + /** Duration (in seconds) after which the invite expires */ + maxAge: number; + /** Whether this invite only grants temporary membership */ + temporary: boolean; + /** When this invite was created */ + createdAt: string; +} + +/** https://discord.com/developers/docs/resources/invite#invite-metadata-object */ +export type DiscordInviteMetadata = SnakeCaseProps; diff --git a/src/types/invites/target_user_types.ts b/src/types/invites/target_user_types.ts new file mode 100644 index 000000000..af369b47a --- /dev/null +++ b/src/types/invites/target_user_types.ts @@ -0,0 +1,4 @@ +/** https://discord.com/developers/docs/resources/invite#invite-object-target-user-types */ +export enum DiscordTargetUserTypes { + STREAM = 1, +}