1010 lines
24 KiB
TypeScript
1010 lines
24 KiB
TypeScript
|
/**
|
||
|
* Types extracted from https://discord.com/developers/docs/resources/guild
|
||
|
*/
|
||
|
|
||
|
import type { APIEmoji } from './emoji';
|
||
|
import type { PresenceUpdateStatus } from './gateway';
|
||
|
import type { OAuth2Scopes } from './oauth2';
|
||
|
import type { APIRole } from './permissions';
|
||
|
import type { APISticker } from './sticker';
|
||
|
import type { APIUser } from './user';
|
||
|
import type { Permissions, Snowflake } from '../../globals';
|
||
|
import type { PublicUser } from '../../spacebar';
|
||
|
import type { APIGuildChannelResolvable } from '../../v9';
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#unavailable-guild-object
|
||
|
*/
|
||
|
export interface APIUnavailableGuild {
|
||
|
/**
|
||
|
* Guild id
|
||
|
*/
|
||
|
id: Snowflake;
|
||
|
/**
|
||
|
* `true` if this guild is unavailable due to an outage
|
||
|
*/
|
||
|
unavailable: boolean;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-guild-structure
|
||
|
*/
|
||
|
export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'>, Pick<APIGuild, 'welcome_screen'> {
|
||
|
/**
|
||
|
* Guild name (2-100 characters, excluding trailing and leading whitespace)
|
||
|
*/
|
||
|
name: string;
|
||
|
/**
|
||
|
* Icon hash
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
icon: string | null;
|
||
|
/**
|
||
|
* Splash hash
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
splash: string | null;
|
||
|
/**
|
||
|
* Banner hash
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
banner?: string | null;
|
||
|
/**
|
||
|
* The description for the guild
|
||
|
*/
|
||
|
description?: string | null;
|
||
|
/**
|
||
|
* Enabled guild features
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-guild-features
|
||
|
*/
|
||
|
features?: GuildFeature[];
|
||
|
/**
|
||
|
* Verification level required for the guild
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-verification-level
|
||
|
*/
|
||
|
verification_level?: GuildVerificationLevel;
|
||
|
/**
|
||
|
* The vanity url code for the guild
|
||
|
*/
|
||
|
vanity_url_code?: string | null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-guild-structure
|
||
|
*/
|
||
|
export interface APIGuild extends APIPartialGuild {
|
||
|
/**
|
||
|
* Icon hash, returned when in the template object
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
icon_hash?: string | null;
|
||
|
/**
|
||
|
* Discovery splash hash; only present for guilds with the "DISCOVERABLE" feature
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
discovery_splash: string | null;
|
||
|
/**
|
||
|
* `true` if the user is the owner of the guild
|
||
|
*
|
||
|
* **This field is only received from https://discord.com/developers/docs/resources/user#get-current-user-guilds**
|
||
|
*/
|
||
|
owner?: boolean;
|
||
|
/**
|
||
|
* ID of owner
|
||
|
*/
|
||
|
owner_id: Snowflake;
|
||
|
/**
|
||
|
* Total permissions for the user in the guild (excludes overrides)
|
||
|
*
|
||
|
* **This field is only received from https://discord.com/developers/docs/resources/user#get-current-user-guilds**
|
||
|
*
|
||
|
* See https://en.wikipedia.org/wiki/Bit_field
|
||
|
*/
|
||
|
permissions?: Permissions;
|
||
|
/**
|
||
|
* Voice region id for the guild
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/voice#voice-region-object
|
||
|
* @deprecated This field has been deprecated in favor of `rtc_region` on the channel.
|
||
|
*/
|
||
|
region: string;
|
||
|
/**
|
||
|
* ID of afk channel
|
||
|
*/
|
||
|
afk_channel_id: Snowflake | null;
|
||
|
/**
|
||
|
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
|
||
|
*/
|
||
|
afk_timeout: 60 | 300 | 900 | 1800 | 3600;
|
||
|
/**
|
||
|
* `true` if the guild widget is enabled
|
||
|
*/
|
||
|
widget_enabled?: boolean;
|
||
|
/**
|
||
|
* The channel id that the widget will generate an invite to, or `null` if set to no invite
|
||
|
*/
|
||
|
widget_channel_id?: Snowflake | null;
|
||
|
/**
|
||
|
* Verification level required for the guild
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-verification-level
|
||
|
*/
|
||
|
verification_level: GuildVerificationLevel;
|
||
|
/**
|
||
|
* Default message notifications level
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level
|
||
|
*/
|
||
|
default_message_notifications: GuildDefaultMessageNotifications;
|
||
|
/**
|
||
|
* Explicit content filter level
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level
|
||
|
*/
|
||
|
explicit_content_filter: GuildExplicitContentFilter;
|
||
|
/**
|
||
|
* Roles in the guild
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/topics/permissions#role-object
|
||
|
*/
|
||
|
roles: APIRole[];
|
||
|
/**
|
||
|
* Custom guild emojis
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/emoji#emoji-object
|
||
|
*/
|
||
|
emojis: APIEmoji[];
|
||
|
/**
|
||
|
* Enabled guild features
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-guild-features
|
||
|
*/
|
||
|
features: GuildFeature[];
|
||
|
/**
|
||
|
* Required MFA level for the guild
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-mfa-level
|
||
|
*/
|
||
|
mfa_level: GuildMFALevel;
|
||
|
/**
|
||
|
* Application id of the guild creator if it is bot-created
|
||
|
*/
|
||
|
application_id: Snowflake | null;
|
||
|
/**
|
||
|
* The id of the channel where guild notices such as welcome messages and boost events are posted
|
||
|
*/
|
||
|
system_channel_id: Snowflake | null;
|
||
|
/**
|
||
|
* System channel flags
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-system-channel-flags
|
||
|
*/
|
||
|
system_channel_flags: GuildSystemChannelFlags;
|
||
|
/**
|
||
|
* The id of the channel where Community guilds can display rules and/or guidelines
|
||
|
*/
|
||
|
rules_channel_id: Snowflake | null;
|
||
|
/**
|
||
|
* The maximum number of presences for the guild (`null` is always returned, apart from the largest of guilds)
|
||
|
*/
|
||
|
max_presences?: number | null;
|
||
|
/**
|
||
|
* The maximum number of members for the guild
|
||
|
*/
|
||
|
max_members?: number;
|
||
|
/**
|
||
|
* The vanity url code for the guild
|
||
|
*/
|
||
|
vanity_url_code: string | null;
|
||
|
/**
|
||
|
* The description for the guild
|
||
|
*/
|
||
|
description: string | null;
|
||
|
/**
|
||
|
* Banner hash
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
banner: string | null;
|
||
|
/**
|
||
|
* Premium tier (Server Boost level)
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-premium-tier
|
||
|
*/
|
||
|
premium_tier: GuildPremiumTier;
|
||
|
/**
|
||
|
* The number of boosts this guild currently has
|
||
|
*/
|
||
|
premium_subscription_count?: number;
|
||
|
/**
|
||
|
* The preferred locale of a Community guild; used in guild discovery and notices from Discord; defaults to "en-US"
|
||
|
*
|
||
|
* @default "en-US"
|
||
|
*/
|
||
|
preferred_locale: string;
|
||
|
/**
|
||
|
* The id of the channel where admins and moderators of Community guilds receive notices from Discord
|
||
|
*/
|
||
|
public_updates_channel_id: Snowflake | null;
|
||
|
/**
|
||
|
* The maximum amount of users in a video channel
|
||
|
*/
|
||
|
max_video_channel_users?: number;
|
||
|
/**
|
||
|
* **This field is only received from https://discord.com/developers/docs/resources/guild#get-guild with the `with_counts` query parameter set to `true`**
|
||
|
*/
|
||
|
approximate_member_count?: number;
|
||
|
/**
|
||
|
* **This field is only received from https://discord.com/developers/docs/resources/guild#get-guild with the `with_counts` query parameter set to `true`**
|
||
|
*/
|
||
|
approximate_presence_count?: number;
|
||
|
/**
|
||
|
* The welcome screen of a Community guild, shown to new members
|
||
|
*
|
||
|
* Returned in the invite object
|
||
|
*/
|
||
|
welcome_screen?: APIGuildWelcomeScreen;
|
||
|
/**
|
||
|
* The nsfw level of the guild
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-guild-nsfw-level
|
||
|
*/
|
||
|
nsfw_level: GuildNSFWLevel;
|
||
|
/**
|
||
|
* Custom guild stickers
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/sticker#sticker-object
|
||
|
*/
|
||
|
stickers: APISticker[];
|
||
|
/**
|
||
|
* Whether the guild has the boost progress bar enabled.
|
||
|
*/
|
||
|
premium_progress_bar_enabled: boolean;
|
||
|
/**
|
||
|
* The type of Student Hub the guild is
|
||
|
*/
|
||
|
hub_type: GuildHubType | null;
|
||
|
channels: APIGuildChannelResolvable[];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level
|
||
|
*/
|
||
|
export enum GuildDefaultMessageNotifications {
|
||
|
AllMessages,
|
||
|
OnlyMentions,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level
|
||
|
*/
|
||
|
export enum GuildExplicitContentFilter {
|
||
|
Disabled,
|
||
|
MembersWithoutRoles,
|
||
|
AllMembers,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-mfa-level
|
||
|
*/
|
||
|
export enum GuildMFALevel {
|
||
|
None,
|
||
|
Elevated,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-guild-nsfw-level
|
||
|
*/
|
||
|
export enum GuildNSFWLevel {
|
||
|
Default,
|
||
|
Explicit,
|
||
|
Safe,
|
||
|
AgeRestricted,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-verification-level
|
||
|
*/
|
||
|
export enum GuildVerificationLevel {
|
||
|
/**
|
||
|
* Unrestricted
|
||
|
*/
|
||
|
None,
|
||
|
/**
|
||
|
* Must have verified email on account
|
||
|
*/
|
||
|
Low,
|
||
|
/**
|
||
|
* Must be registered on Discord for longer than 5 minutes
|
||
|
*/
|
||
|
Medium,
|
||
|
/**
|
||
|
* Must be a member of the guild for longer than 10 minutes
|
||
|
*/
|
||
|
High,
|
||
|
/**
|
||
|
* Must have a verified phone number
|
||
|
*/
|
||
|
VeryHigh,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-premium-tier
|
||
|
*/
|
||
|
export enum GuildPremiumTier {
|
||
|
None,
|
||
|
Tier1,
|
||
|
Tier2,
|
||
|
Tier3,
|
||
|
}
|
||
|
|
||
|
export enum GuildHubType {
|
||
|
Default,
|
||
|
HighSchool,
|
||
|
College,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-system-channel-flags
|
||
|
*/
|
||
|
export enum GuildSystemChannelFlags {
|
||
|
/**
|
||
|
* Suppress member join notifications
|
||
|
*/
|
||
|
SuppressJoinNotifications = 1 << 0,
|
||
|
/**
|
||
|
* Suppress server boost notifications
|
||
|
*/
|
||
|
SuppressPremiumSubscriptions = 1 << 1,
|
||
|
/**
|
||
|
* Suppress server setup tips
|
||
|
*/
|
||
|
SuppressGuildReminderNotifications = 1 << 2,
|
||
|
/**
|
||
|
* Hide member join sticker reply buttons
|
||
|
*/
|
||
|
SuppressJoinNotificationReplies = 1 << 3,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-object-guild-features
|
||
|
*/
|
||
|
export enum GuildFeature {
|
||
|
/**
|
||
|
* Guild has access to set an animated guild banner image
|
||
|
*/
|
||
|
AnimatedBanner = 'ANIMATED_BANNER',
|
||
|
/**
|
||
|
* Guild has access to set an animated guild icon
|
||
|
*/
|
||
|
AnimatedIcon = 'ANIMATED_ICON',
|
||
|
/**
|
||
|
* Guild is using the old permissions configuration behavior
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/change-log#upcoming-application-command-permission-changes
|
||
|
*/
|
||
|
ApplicationCommandPermissionsV2 = 'APPLICATION_COMMAND_PERMISSIONS_V2',
|
||
|
/**
|
||
|
* Guild has set up auto moderation rules
|
||
|
*/
|
||
|
AutoModeration = 'AUTO_MODERATION',
|
||
|
/**
|
||
|
* Guild has access to set a guild banner image
|
||
|
*/
|
||
|
Banner = 'BANNER',
|
||
|
/**
|
||
|
* Guild can enable welcome screen, Membership Screening and discovery, and receives community updates
|
||
|
*/
|
||
|
Community = 'COMMUNITY',
|
||
|
/**
|
||
|
* Guild has enabled monetization
|
||
|
*/
|
||
|
CreatorMonetizableProvisional = 'CREATOR_MONETIZABLE_PROVISIONAL',
|
||
|
/**
|
||
|
* Guild has enabled the role subscription promo page
|
||
|
*/
|
||
|
CreatorStorePage = 'CREATOR_STORE_PAGE',
|
||
|
/*
|
||
|
* Guild has been set as a support server on the App Directory
|
||
|
*/
|
||
|
DeveloperSupportServer = 'DEVELOPER_SUPPORT_SERVER',
|
||
|
/**
|
||
|
* Guild is able to be discovered in the directory
|
||
|
*/
|
||
|
Discoverable = 'DISCOVERABLE',
|
||
|
/**
|
||
|
* Guild is able to be featured in the directory
|
||
|
*/
|
||
|
Featurable = 'FEATURABLE',
|
||
|
/**
|
||
|
* Guild is listed in a directory channel
|
||
|
*/
|
||
|
HasDirectoryEntry = 'HAS_DIRECTORY_ENTRY',
|
||
|
/**
|
||
|
* Guild is a Student Hub
|
||
|
*
|
||
|
* See https://support.discord.com/hc/articles/4406046651927
|
||
|
*
|
||
|
* @unstable This feature is currently not documented by Discord, but has known value
|
||
|
*/
|
||
|
Hub = 'HUB',
|
||
|
/**
|
||
|
* Guild has disabled invite usage, preventing users from joining
|
||
|
*/
|
||
|
InvitesDisabled = 'INVITES_DISABLED',
|
||
|
/**
|
||
|
* Guild has access to set an invite splash background
|
||
|
*/
|
||
|
InviteSplash = 'INVITE_SPLASH',
|
||
|
/**
|
||
|
* Guild is in a Student Hub
|
||
|
*
|
||
|
* See https://support.discord.com/hc/articles/4406046651927
|
||
|
*
|
||
|
* @unstable This feature is currently not documented by Discord, but has known value
|
||
|
*/
|
||
|
LinkedToHub = 'LINKED_TO_HUB',
|
||
|
/**
|
||
|
* Guild has enabled Membership Screening
|
||
|
*/
|
||
|
MemberVerificationGateEnabled = 'MEMBER_VERIFICATION_GATE_ENABLED',
|
||
|
/**
|
||
|
* Guild has enabled monetization
|
||
|
*
|
||
|
* @unstable This feature is no longer documented by Discord
|
||
|
*/
|
||
|
MonetizationEnabled = 'MONETIZATION_ENABLED',
|
||
|
/**
|
||
|
* Guild has increased custom sticker slots
|
||
|
*/
|
||
|
MoreStickers = 'MORE_STICKERS',
|
||
|
/**
|
||
|
* Guild has access to create news channels
|
||
|
*/
|
||
|
News = 'NEWS',
|
||
|
/**
|
||
|
* Guild is partnered
|
||
|
*/
|
||
|
Partnered = 'PARTNERED',
|
||
|
/**
|
||
|
* Guild can be previewed before joining via Membership Screening or the directory
|
||
|
*/
|
||
|
PreviewEnabled = 'PREVIEW_ENABLED',
|
||
|
/**
|
||
|
* Guild has access to create private threads
|
||
|
*/
|
||
|
PrivateThreads = 'PRIVATE_THREADS',
|
||
|
RelayEnabled = 'RELAY_ENABLED',
|
||
|
/**
|
||
|
* Guild is able to set role icons
|
||
|
*/
|
||
|
RoleIcons = 'ROLE_ICONS',
|
||
|
/**
|
||
|
* Guild has role subscriptions that can be purchased
|
||
|
*/
|
||
|
RoleSubscriptionsAvailableForPurchase = 'ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE',
|
||
|
/**
|
||
|
* Guild has enabled role subscriptions
|
||
|
*/
|
||
|
RoleSubscriptionsEnabled = 'ROLE_SUBSCRIPTIONS_ENABLED',
|
||
|
/**
|
||
|
* Guild has enabled ticketed events
|
||
|
*/
|
||
|
TicketedEventsEnabled = 'TICKETED_EVENTS_ENABLED',
|
||
|
/**
|
||
|
* Guild has access to set a vanity URL
|
||
|
*/
|
||
|
VanityURL = 'VANITY_URL',
|
||
|
/**
|
||
|
* Guild is verified
|
||
|
*/
|
||
|
Verified = 'VERIFIED',
|
||
|
/**
|
||
|
* Guild has access to set 384kbps bitrate in voice (previously VIP voice servers)
|
||
|
*/
|
||
|
VIPRegions = 'VIP_REGIONS',
|
||
|
/**
|
||
|
* Guild has enabled the welcome screen
|
||
|
*/
|
||
|
WelcomeScreenEnabled = 'WELCOME_SCREEN_ENABLED',
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-preview-object
|
||
|
*/
|
||
|
export interface APIGuildPreview {
|
||
|
/**
|
||
|
* Guild id
|
||
|
*/
|
||
|
id: Snowflake;
|
||
|
/**
|
||
|
* Guild name (2-100 characters)
|
||
|
*/
|
||
|
name: string;
|
||
|
/**
|
||
|
* Icon hash
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
icon: string | null;
|
||
|
/**
|
||
|
* Splash hash
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
splash: string | null;
|
||
|
/**
|
||
|
* Discovery splash hash; only present for guilds with the "DISCOVERABLE" feature
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
discovery_splash: string | null;
|
||
|
/**
|
||
|
* Custom guild emojis
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/emoji#emoji-object
|
||
|
*/
|
||
|
emojis: APIEmoji[];
|
||
|
/**
|
||
|
* Enabled guild features
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#guild-object-guild-features
|
||
|
*/
|
||
|
features: GuildFeature[];
|
||
|
/**
|
||
|
* Approximate number of members in this guild
|
||
|
*/
|
||
|
approximate_member_count: number;
|
||
|
/**
|
||
|
* Approximate number of online members in this guild
|
||
|
*/
|
||
|
approximate_presence_count: number;
|
||
|
/**
|
||
|
* The description for the guild
|
||
|
*/
|
||
|
description: string;
|
||
|
/**
|
||
|
* Custom guild stickers
|
||
|
*/
|
||
|
stickers: APISticker[];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-widget-object
|
||
|
*/
|
||
|
export interface APIGuildWidgetSettings {
|
||
|
/**
|
||
|
* Whether the widget is enabled
|
||
|
*/
|
||
|
enabled: boolean;
|
||
|
/**
|
||
|
* The widget channel id
|
||
|
*/
|
||
|
channel_id: Snowflake | null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-member-object
|
||
|
*/
|
||
|
export interface APIGuildMember {
|
||
|
/**
|
||
|
* The user this guild member represents
|
||
|
*
|
||
|
* **This field won't be included in the member object attached to `MESSAGE_CREATE` and `MESSAGE_UPDATE` gateway events.**
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/user#user-object
|
||
|
*/
|
||
|
user?: PublicUser;
|
||
|
/**
|
||
|
* This users guild nickname
|
||
|
*/
|
||
|
nick?: string | null;
|
||
|
/**
|
||
|
* The member's guild avatar hash
|
||
|
*/
|
||
|
avatar?: string | null;
|
||
|
/**
|
||
|
* Array of role object ids
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/topics/permissions#role-object
|
||
|
*/
|
||
|
roles: Snowflake[];
|
||
|
/**
|
||
|
* When the user joined the guild
|
||
|
*/
|
||
|
joined_at: string;
|
||
|
/**
|
||
|
* When the user started boosting the guild
|
||
|
*
|
||
|
* See https://support.discord.com/hc/articles/360028038352
|
||
|
*/
|
||
|
premium_since?: string | null;
|
||
|
/**
|
||
|
* Whether the user is deafened in voice channels
|
||
|
*/
|
||
|
deaf: boolean;
|
||
|
/**
|
||
|
* Whether the user is muted in voice channels
|
||
|
*/
|
||
|
mute: boolean;
|
||
|
/**
|
||
|
* Guild member flags represented as a bit set, defaults to `0`
|
||
|
*/
|
||
|
flags: GuildMemberFlags;
|
||
|
/**
|
||
|
* Whether the user has not yet passed the guild's Membership Screening requirements
|
||
|
*
|
||
|
* *If this field is not present, it can be assumed as `false`.*
|
||
|
*/
|
||
|
pending?: boolean;
|
||
|
/**
|
||
|
* Timestamp of when the time out will be removed; until then, they cannot interact with the guild
|
||
|
*/
|
||
|
communication_disabled_until?: string | null;
|
||
|
|
||
|
joined_by: string | null;
|
||
|
banner: string | null;
|
||
|
bio: string | null;
|
||
|
theme_colors?: number[] | null;
|
||
|
pronouns?: string | null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-member-object-guild-member-flags
|
||
|
*/
|
||
|
export enum GuildMemberFlags {
|
||
|
/**
|
||
|
* Member has left and rejoined the guild
|
||
|
*/
|
||
|
DidRejoin = 1 << 0,
|
||
|
/**
|
||
|
* Member has completed onboarding
|
||
|
*/
|
||
|
CompletedOnboarding = 1 << 1,
|
||
|
/**
|
||
|
* Member bypasses guild verification requirements
|
||
|
*/
|
||
|
BypassesVerification = 1 << 2,
|
||
|
/**
|
||
|
* Member has started onboarding
|
||
|
*/
|
||
|
StartedOnboarding = 1 << 3,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#integration-object
|
||
|
*/
|
||
|
export interface APIGuildIntegration {
|
||
|
/**
|
||
|
* Integration id
|
||
|
*/
|
||
|
id: Snowflake;
|
||
|
/**
|
||
|
* Integration name
|
||
|
*/
|
||
|
name: string;
|
||
|
/**
|
||
|
* Integration type
|
||
|
*/
|
||
|
type: APIGuildIntegrationType;
|
||
|
/**
|
||
|
* Is this integration enabled
|
||
|
*/
|
||
|
enabled: boolean;
|
||
|
/**
|
||
|
* Is this integration syncing
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*/
|
||
|
syncing?: boolean;
|
||
|
/**
|
||
|
* ID that this integration uses for "subscribers"
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*/
|
||
|
role_id?: Snowflake;
|
||
|
/**
|
||
|
* Whether emoticons should be synced for this integration (`twitch` only currently)
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*/
|
||
|
enable_emoticons?: boolean;
|
||
|
/**
|
||
|
* The behavior of expiring subscribers
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors
|
||
|
*/
|
||
|
expire_behavior?: IntegrationExpireBehavior;
|
||
|
/**
|
||
|
* The grace period (in days) before expiring subscribers
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*/
|
||
|
expire_grace_period?: number;
|
||
|
/**
|
||
|
* User for this integration
|
||
|
*
|
||
|
* **Some older integrations may not have an attached user.**
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/user#user-object
|
||
|
*/
|
||
|
user?: APIUser;
|
||
|
/**
|
||
|
* Integration account information
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#integration-account-object
|
||
|
*/
|
||
|
account: APIIntegrationAccount;
|
||
|
/**
|
||
|
* When this integration was last synced
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*/
|
||
|
synced_at?: string;
|
||
|
/**
|
||
|
* How many subscribers this integration has
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*/
|
||
|
subscriber_count?: number;
|
||
|
/**
|
||
|
* Has this integration been revoked
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*/
|
||
|
revoked?: boolean;
|
||
|
/**
|
||
|
* The bot/OAuth2 application for discord integrations
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/guild#integration-application-object
|
||
|
*
|
||
|
* **This field is not provided for `discord` bot integrations.**
|
||
|
*/
|
||
|
application?: APIGuildIntegrationApplication;
|
||
|
/**
|
||
|
* The scopes the application has been authorized for
|
||
|
*/
|
||
|
scopes?: OAuth2Scopes[];
|
||
|
}
|
||
|
|
||
|
export type APIGuildIntegrationType = 'twitch' | 'youtube' | 'discord' | 'guild_subscription';
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors
|
||
|
*/
|
||
|
export enum IntegrationExpireBehavior {
|
||
|
RemoveRole,
|
||
|
Kick,
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#integration-account-object
|
||
|
*/
|
||
|
export interface APIIntegrationAccount {
|
||
|
/**
|
||
|
* ID of the account
|
||
|
*/
|
||
|
id: string;
|
||
|
/**
|
||
|
* Name of the account
|
||
|
*/
|
||
|
name: string;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#integration-application-object
|
||
|
*/
|
||
|
export interface APIGuildIntegrationApplication {
|
||
|
/**
|
||
|
* The id of the app
|
||
|
*/
|
||
|
id: Snowflake;
|
||
|
/**
|
||
|
* The name of the app
|
||
|
*/
|
||
|
name: string;
|
||
|
/**
|
||
|
* The icon hash of the app
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/reference#image-formatting
|
||
|
*/
|
||
|
icon: string | null;
|
||
|
/**
|
||
|
* The description of the app
|
||
|
*/
|
||
|
description: string;
|
||
|
/**
|
||
|
* The bot associated with this application
|
||
|
*
|
||
|
* See https://discord.com/developers/docs/resources/user#user-object
|
||
|
*/
|
||
|
bot?: APIUser;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#ban-object
|
||
|
*/
|
||
|
export interface APIBan {
|
||
|
/**
|
||
|
* The reason for the ban
|
||
|
*/
|
||
|
reason: string | null;
|
||
|
/**
|
||
|
* The banned user
|
||
|
*/
|
||
|
user: APIUser;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-widget-object
|
||
|
*/
|
||
|
export interface APIGuildWidget {
|
||
|
id: Snowflake;
|
||
|
name: string;
|
||
|
instant_invite: string | null;
|
||
|
channels: APIGuildWidgetChannel[];
|
||
|
members: APIGuildWidgetMember[];
|
||
|
presence_count: number;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
|
||
|
*/
|
||
|
export interface APIGuildWidgetChannel {
|
||
|
id: Snowflake;
|
||
|
name: string;
|
||
|
position: number;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
|
||
|
*/
|
||
|
export interface APIGuildWidgetMember {
|
||
|
id: string;
|
||
|
username: string;
|
||
|
discriminator: string;
|
||
|
avatar: string | null;
|
||
|
status: PresenceUpdateStatus;
|
||
|
activity?: { name: string };
|
||
|
avatar_url: string;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* https://discord.com/developers/docs/resources/guild#get-guild-widget-image-widget-style-options
|
||
|
*/
|
||
|
export enum GuildWidgetStyle {
|
||
|
/**
|
||
|
* Shield style widget with Discord icon and guild members online count
|
||
|
*/
|
||
|
Shield = 'shield',
|
||
|
/**
|
||
|
* Large image with guild icon, name and online count. "POWERED BY DISCORD" as the footer of the widget
|
||
|
*/
|
||
|
Banner1 = 'banner1',
|
||
|
/**
|
||
|
* Smaller widget style with guild icon, name and online count. Split on the right with Discord logo
|
||
|
*/
|
||
|
Banner2 = 'banner2',
|
||
|
/**
|
||
|
* Large image with guild icon, name and online count. In the footer, Discord logo on the left and "Chat Now" on the right
|
||
|
*/
|
||
|
Banner3 = 'banner3',
|
||
|
/**
|
||
|
* Large Discord logo at the top of the widget. Guild icon, name and online count in the middle portion of the widget
|
||
|
* and a "JOIN MY SERVER" button at the bottom
|
||
|
*/
|
||
|
Banner4 = 'banner4',
|
||
|
}
|
||
|
|
||
|
export interface APIGuildWelcomeScreen {
|
||
|
/**
|
||
|
* The welcome screen short message
|
||
|
*/
|
||
|
description: string | null;
|
||
|
/**
|
||
|
* Array of suggested channels
|
||
|
*/
|
||
|
welcome_channels: APIGuildWelcomeScreenChannel[];
|
||
|
}
|
||
|
|
||
|
export interface APIGuildWelcomeScreenChannel {
|
||
|
/**
|
||
|
* The channel id that is suggested
|
||
|
*/
|
||
|
channel_id: Snowflake;
|
||
|
/**
|
||
|
* The description shown for the channel
|
||
|
*/
|
||
|
description: string;
|
||
|
/**
|
||
|
* The emoji id of the emoji that is shown on the left of the channel
|
||
|
*/
|
||
|
emoji_id: Snowflake | null;
|
||
|
/**
|
||
|
* The emoji name of the emoji that is shown on the left of the channel
|
||
|
*/
|
||
|
emoji_name: string | null;
|
||
|
}
|
||
|
|
||
|
export interface APIGuildMembershipScreening {
|
||
|
/**
|
||
|
* When the fields were last updated
|
||
|
*/
|
||
|
version: string;
|
||
|
/**
|
||
|
* The steps in the screening form
|
||
|
*/
|
||
|
form_fields: APIGuildMembershipScreeningField[];
|
||
|
/**
|
||
|
* The server description shown in the screening form
|
||
|
*/
|
||
|
description: string | null;
|
||
|
}
|
||
|
|
||
|
// TODO: make this a union based on the type in the future, when new types are added
|
||
|
|
||
|
export interface APIGuildMembershipScreeningField {
|
||
|
/**
|
||
|
* The type of field
|
||
|
*/
|
||
|
field_type: MembershipScreeningFieldType;
|
||
|
/**
|
||
|
* The title of the field
|
||
|
*/
|
||
|
label: string;
|
||
|
/**
|
||
|
* The list of rules
|
||
|
*/
|
||
|
values?: string[];
|
||
|
/**
|
||
|
* Whether the user has to fill out this field
|
||
|
*/
|
||
|
required: boolean;
|
||
|
}
|
||
|
|
||
|
export enum MembershipScreeningFieldType {
|
||
|
/**
|
||
|
* Server Rules
|
||
|
*/
|
||
|
Terms = 'TERMS',
|
||
|
}
|
||
|
|
||
|
export interface APIMuteConfig {
|
||
|
end_time: number;
|
||
|
selected_time_window: number;
|
||
|
}
|
||
|
|
||
|
export interface APIChannelOverride {
|
||
|
message_notifications: number;
|
||
|
mute_config: APIMuteConfig;
|
||
|
muted: boolean;
|
||
|
channel_id: string | null;
|
||
|
}
|
||
|
|
||
|
export interface APIUserGuildSettings {
|
||
|
channel_overrides: {
|
||
|
[channel_id: string]: APIChannelOverride;
|
||
|
} | null;
|
||
|
message_notifications: number;
|
||
|
mobile_push: boolean;
|
||
|
mute_config: APIMuteConfig | null;
|
||
|
muted: boolean;
|
||
|
suppress_everyone: boolean;
|
||
|
suppress_roles: boolean;
|
||
|
version: number;
|
||
|
guild_id: string | null;
|
||
|
flags: number;
|
||
|
mute_scheduled_events: boolean;
|
||
|
hide_muted_channels: boolean;
|
||
|
notify_highlights: 0;
|
||
|
}
|