seyfert
Version:
The most advanced framework for discord bots
1,075 lines (1,074 loc) • 34.2 kB
TypeScript
import type { Permissions, Snowflake } from '..';
import type { APIBan, APIChannel, APIDMChannel, APIExtendedInvite, APIGroupDMChannel, APIGuild, APIGuildIntegration, APIGuildMember, APIGuildMembershipScreening, APIGuildOnboarding, APIGuildOnboardingPrompt, APIGuildOnboardingPromptOption, APIGuildPreview, APIGuildWelcomeScreen, APIGuildWidget, APIGuildWidgetSettings, APIMessage, APIRole, APIRoleColors, APIThreadList, APIThreadMember, APIVoiceRegion, GuildDefaultMessageNotifications, GuildExplicitContentFilter, GuildFeature, GuildMFALevel, GuildSystemChannelFlags, GuildVerificationLevel, GuildWidgetStyle } from '../payloads';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface, DistributiveOmit, DistributivePick, Nullable, StrictPartial } from '../utils';
import type { RESTPutAPIChannelPermissionJSONBody } from './channel';
export interface APIGuildCreateOverwrite extends RESTPutAPIChannelPermissionJSONBody {
id: number | string;
}
export type APIGuildChannelResolvable = Exclude<APIChannel, APIDMChannel | APIGroupDMChannel>;
export type APIGuildCreatePartialChannel = StrictPartial<DistributivePick<APIGuildChannelResolvable, 'available_tags' | 'bitrate' | 'default_auto_archive_duration' | 'default_forum_layout' | 'default_reaction_emoji' | 'default_sort_order' | 'default_thread_rate_limit_per_user' | 'flags' | 'nsfw' | 'position' | 'rate_limit_per_user' | 'rtc_region' | 'topic' | 'type' | 'user_limit' | 'video_quality_mode'>> & {
name: string;
id?: number | string | undefined;
parent_id?: number | string | null | undefined;
permission_overwrites?: APIGuildCreateOverwrite[] | undefined;
};
export interface APIGuildCreateRole extends RESTPostAPIGuildRoleJSONBody {
id: number | string;
}
/**
* https://discord.com/developers/docs/resources/guild#create-guild
* @deprecated
*/
export interface RESTPostAPIGuildsJSONBody {
/**
* Name of the guild (2-100 characters)
*/
name: string;
/**
* Voice region id
*
* See https://discord.com/developers/docs/resources/voice#voice-region-object
*/
region?: string | undefined;
/**
* base64 1024x1024 png/jpeg image for the guild icon
*
* See https://discord.com/developers/docs/reference#image-data
*/
icon?: string | undefined;
/**
* Verification level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-verification-level
*/
verification_level?: GuildVerificationLevel | undefined;
/**
* Default message notification level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level
*/
default_message_notifications?: GuildDefaultMessageNotifications | undefined;
/**
* Explicit content filter level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level
*/
explicit_content_filter?: GuildExplicitContentFilter | undefined;
/**
* New guild roles
*
* @remarks
* When using this parameter, the first member of the array is used to change properties of the guild's `@everyone` role.
* If you are trying to bootstrap a guild with additional roles, keep this in mind.
*
* Also, the required `id` field within each role object is an integer placeholder,
* and will be replaced by the API upon consumption. Its purpose is to allow you to overwrite a role's permissions
* in a channel when also passing in channels with the channels array.
*
* See https://discord.com/developers/docs/topics/permissions#role-object
*/
roles?: APIGuildCreateRole[] | undefined;
/**
* New guild's channels
*
* @remarks
* When using the channels parameter, the `position` field is ignored, and none of the default channels are created.
*
* Also, the `id` field within each channel object may be set to an integer placeholder,
* and will be replaced by the API upon consumption. Its purpose is to allow you to create `GUILD_CATEGORY` channels
* by setting the `parent_id` field on any children to the category's id field.
* Category channels must be listed before any children.
*
* See https://discord.com/developers/docs/resources/channel#channel-object
*/
channels?: APIGuildCreatePartialChannel[] | undefined;
/**
* ID for afk channel
*/
afk_channel_id?: Snowflake | number | null | undefined;
/**
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout?: 1_800 | 3_600 | 60 | 300 | 900 | undefined;
/**
* The id of the channel where guild notices such as welcome messages and boost events are posted
*/
system_channel_id?: Snowflake | number | null | undefined;
/**
* System channel flags
*
* See https://discord.com/developers/docs/resources/guild#guild-object-system-channel-flags
*/
system_channel_flags?: GuildSystemChannelFlags | undefined;
/**
* Whether the boosts progress bar should be enabled.
*/
premium_progress_bar_enabled?: boolean | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#create-guild
*/
export type RESTPostAPIGuildsResult = APIGuild;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export interface RESTPostAPIGuildsMFAJSONBody {
/**
* MFA level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-mfa-level
*/
level: GuildMFALevel;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export type RESTPostAPIGuildsMFAResult = RESTPostAPIGuildsMFAJSONBody;
/**
* https://discord.com/developers/docs/resources/guild#get-guild
*/
export interface RESTGetAPIGuildQuery {
/**
* When `true`, will return approximate member and presence counts for the guild
*
* @default false
*/
with_counts?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild
*/
export type RESTGetAPIGuildResult = APIGuild;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-preview
*/
export type RESTGetAPIGuildPreviewResult = APIGuildPreview;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild
*/
export interface RESTPatchAPIGuildJSONBody {
/**
* New name for the guild (2-100 characters)
*/
name?: string | undefined;
/**
* Voice region id
*
* See https://discord.com/developers/docs/resources/voice#voice-region-object
*/
region?: string | null | undefined;
/**
* Verification level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-verification-level
*/
verification_level?: GuildVerificationLevel | null | undefined;
/**
* Default message notification level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level
*/
default_message_notifications?: GuildDefaultMessageNotifications | null | undefined;
/**
* Explicit content filter level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level
*/
explicit_content_filter?: GuildExplicitContentFilter | null | undefined;
/**
* ID for afk channel
*/
afk_channel_id?: Snowflake | null | undefined;
/**
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout?: 1_800 | 3_600 | 60 | 300 | 900 | undefined;
/**
* base64 1024x1024 png/jpeg/gif image for the guild icon (can be animated gif when the guild has `ANIMATED_ICON` feature)
*
* See https://discord.com/developers/docs/reference#image-data
*/
icon?: string | null | undefined;
/**
* User id to transfer guild ownership to (must be owner)
*/
owner_id?: Snowflake | undefined;
/**
* base64 16:9 png/jpeg image for the guild splash (when the guild has `INVITE_SPLASH` feature)
*
* See https://discord.com/developers/docs/reference#image-data
*/
splash?: string | null | undefined;
/**
* base64 png/jpeg image for the guild discovery splash (when the guild has `DISCOVERABLE` feature)
*/
discovery_splash?: string | null | undefined;
/**
* base64 16:9 png/jpeg image for the guild banner (when the server has the `BANNER` feature; can be animated gif when the server has the `ANIMATED_BANNER` feature)
*/
banner?: string | null | undefined;
/**
* The id of the channel where guild notices such as welcome messages and boost events are posted
*/
system_channel_id?: Snowflake | null | undefined;
/**
* System channel flags
*
* See https://discord.com/developers/docs/resources/guild#guild-object-system-channel-flags
*/
system_channel_flags?: GuildSystemChannelFlags | undefined;
/**
* The id of the channel where Community guilds display rules and/or guidelines
*/
rules_channel_id?: Snowflake | null | undefined;
/**
* The id of the channel where admins and moderators of Community guilds receive notices from Discord
*/
public_updates_channel_id?: Snowflake | null | undefined;
/**
* The preferred locale of a Community guild used in server discovery and notices from Discord; defaults to "en-US"
*
* @default "en-US" (if the value is set to `null`)
*/
preferred_locale?: string | null | undefined;
/**
* Enabled guild features
*
* See https://discord.com/developers/docs/resources/guild#guild-object-guild-features
*/
features?: GuildFeature[] | undefined;
/**
* The description for the guild
*/
description?: string | null | undefined;
/**
* Whether the boosts progress bar should be enabled.
*/
premium_progress_bar_enabled?: boolean | undefined;
/**
* The id of the channel where admins and moderators of Community guilds receive safety alerts from Discord
*/
safety_alerts_channel_id?: Snowflake | null | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-guild
*/
export type RESTPatchAPIGuildResult = APIGuild;
/**
* https://discord.com/developers/docs/resources/guild#delete-guild
*/
export type RESTDeleteAPIGuildResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-channels
*/
export type RESTGetAPIGuildChannelsResult = APIChannel[];
/**
* https://discord.com/developers/docs/resources/guild#create-guild-channel
*/
export type RESTPostAPIGuildChannelJSONBody = DistributiveOmit<APIGuildCreatePartialChannel, 'id'>;
/**
* https://discord.com/developers/docs/resources/guild#create-guild-channel
*/
export type RESTPostAPIGuildChannelResult = APIChannel;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-channel-positions
*/
export type RESTPatchAPIGuildChannelPositionsJSONBody = {
/**
* Channel id
*/
id: Snowflake;
/**
* Sorting position of the channel
*/
position: number;
/**
* Sync channel overwrites with the new parent, when moving to a new `parent_id`
*/
lock_permissions?: boolean | undefined;
/**
* The new parent id of this channel
*/
parent_id?: Snowflake | null | undefined;
}[];
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-channel-positions
*/
export type RESTPatchAPIGuildChannelPositionsResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#list-active-guild-threads
*/
export type RESTGetAPIGuildThreadsResult = APIThreadList;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-member
*/
export type RESTGetAPIGuildMemberResult = APIGuildMember;
/**
* https://discord.com/developers/docs/resources/guild#list-guild-members
*/
export interface RESTGetAPIGuildMembersQuery {
/**
* Max number of members to return (1-1000)
*
* @default 1
*/
limit?: number;
/**
* The highest user id in the previous page
*
* @default 0
*/
after?: Snowflake;
}
/**
* https://discord.com/developers/docs/resources/guild#list-guild-members
*/
export type RESTGetAPIGuildMembersResult = APIGuildMember[];
/**
* https://discord.com/developers/docs/resources/guild#search-guild-members
*/
export interface RESTGetAPIGuildMembersSearchQuery {
/**
* Query string to match username(s) and nickname(s) against
*/
query: string;
/**
* Max number of members to return (1-1000)
*
* @default 1
*/
limit?: number;
}
export type RESTGetAPIGuildMembersSearchResult = APIGuildMember[];
/**
* https://discord.com/developers/docs/resources/guild#add-guild-member
*/
export interface RESTPutAPIGuildMemberJSONBody {
/**
* An oauth2 access token granted with the `guilds.join` to the bot's application for the user you want to add to the guild
*/
access_token: string;
/**
* Value to set users nickname to
*
* Requires `MANAGE_NICKNAMES` permission
*/
nick?: string | undefined;
/**
* Array of role ids the member is assigned
*
* Requires `MANAGE_ROLES` permission
*/
roles?: Snowflake[] | undefined;
/**
* Whether the user is muted in voice channels
*
* Requires `MUTE_MEMBERS` permission
*/
mute?: boolean | undefined;
/**
* Whether the user is deafened in voice channels
*
* Requires `DEAFEN_MEMBERS` permission
*/
deaf?: boolean | undefined;
}
export type RESTPutAPIGuildMemberResult = APIGuildMember | undefined;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-member
*/
export interface RESTPatchAPIGuildMemberJSONBody {
/**
* Value to set users nickname to
*
* Requires `MANAGE_NICKNAMES` permission
*/
nick?: string | null | undefined;
/**
* Array of role ids the member is assigned
*
* Requires `MANAGE_ROLES` permission
*/
roles?: Snowflake[] | null | undefined;
/**
* Whether the user is muted in voice channels. Will throw a 400 if the user is not in a voice channel
*
* Requires `MUTE_MEMBERS` permission
*/
mute?: boolean | null | undefined;
/**
* Whether the user is deafened in voice channels. Will throw a 400 if the user is not in a voice channel
*
* Requires `DEAFEN_MEMBERS` permission
*/
deaf?: boolean | null | undefined;
/**
* ID of channel to move user to (if they are connected to voice)
*
* Requires `MOVE_MEMBERS` permission
*/
channel_id?: Snowflake | null | undefined;
/**
* Timestamp of when the time out will be removed; until then, they cannot interact with the guild
*/
communication_disabled_until?: string | null | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#add-guild-member
*/
export type RESTPatchAPIGuildMemberResult = APIGuildMember;
/**
* https://discord.com/developers/docs/resources/guild#modify-current-member
*/
export interface RESTPatchAPICurrentGuildMemberJSONBody {
/**
* Value to set users nickname to
*
* Requires `CHANGE_NICKNAME` permission
*/
nick?: string | null | undefined;
/**
* Data URI base64 encoded banner image
*/
banner?: string | null | undefined;
/**
* Data URI base64 encoded avatar image
*/
avatar?: string | null | undefined;
/**
* Guild member bio
*/
bio?: string | null | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#add-guild-member-role
*/
export type RESTPutAPIGuildMemberRoleResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#remove-guild-member-role
*/
export type RESTDeleteAPIGuildMemberRoleResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#remove-guild-member
*/
export type RESTDeleteAPIGuildMemberResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-bans
*/
export type RESTGetAPIGuildBansResult = APIBan[];
/**
* https://discord.com/developers/docs/resources/guild#get-guild-bans
*/
export interface RESTGetAPIGuildBansQuery {
/**
* Consider only users before given user id
*/
before?: Snowflake;
/**
* Consider only users after given user id
*/
after?: Snowflake;
/**
* Number of users to return (1-1000)
*
* @default 1000
*/
limit?: number;
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-ban
*/
export type RESTGetAPIGuildBanResult = APIBan;
/**
* https://discord.com/developers/docs/resources/guild#create-guild-ban
*/
export interface RESTPutAPIGuildBanJSONBody {
/**
* Number of seconds to delete messages for, between 0 and 604800 (7 days)
*/
delete_message_seconds?: number | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#create-guild-ban
*/
export type RESTPutAPIGuildBanResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#remove-guild-ban
*/
export type RESTDeleteAPIGuildBanResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#bulk-guild-ban
*/
export interface RESTPostAPIGuildBulkBanJSONBody {
/**
* List of user ids to ban (max 200)
*/
user_ids: Snowflake[];
/**
* Number of seconds to delete messages for, between 0 and 604800 (7 days)
*/
delete_message_seconds?: number | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#bulk-guild-ban
*/
export interface RESTPostAPIGuildBulkBanResult {
/**
* List of user ids, that were successfully banned
*/
banned_users: Snowflake[];
/**
* List of user ids, that were not banned
*/
failed_users: Snowflake[];
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-roles
*/
export type RESTGetAPIGuildRolesResult = APIRole[];
/**
* https://discord.com/developers/docs/resources/guild#get-guild-role
*/
export type RESTGetAPIGuildRoleResult = APIRole;
/**
* https://discord.com/developers/docs/resources/guild#create-guild-role
*/
export interface RESTPostAPIGuildRoleJSONBody {
/**
* Name of the role
*
* @default "new role"
*/
name?: string | null | undefined;
/**
* Bitwise value of the enabled/disabled permissions
*
* @default "default role permissions in guild"
*/
permissions?: Permissions | null | undefined;
/**
* RGB color value
*
* @default 0
*/
color?: number | null | undefined;
/**
* The colors of the role.
*/
colors?: APIRoleColors;
/**
* Whether the role should be displayed separately in the sidebar
*
* @default false
*/
hoist?: boolean | null | undefined;
/**
* The role's icon image (if the guild has the `ROLE_ICONS` feature)
*/
icon?: string | null | undefined;
/**
* The role's unicode emoji as a standard emoji (if the guild has the `ROLE_ICONS` feature)
*/
unicode_emoji?: string | null | undefined;
/**
* Whether the role should be mentionable
*
* @default false
*/
mentionable?: boolean | null | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#create-guild-role
*/
export type RESTPostAPIGuildRoleResult = APIRole;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-role-positions
*/
export type RESTPatchAPIGuildRolePositionsJSONBody = {
/**
* Role id
*/
id: Snowflake;
/**
* Sorting position of the role
*/
position?: number | undefined;
}[];
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-role-positions
*/
export type RESTPatchAPIGuildRolePositionsResult = APIRole[];
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-role
*/
export interface RESTPatchAPIGuildRoleJSONBody {
/**
* Name of the role
*/
name?: string | null | undefined;
/**
* Bitwise value of the enabled/disabled permissions
*/
permissions?: Permissions | null | undefined;
/**
* RGB color value
*/
color?: number | null | undefined;
/**
* The colors of the role.
*/
colors?: APIRoleColors;
/**
* Whether the role should be displayed separately in the sidebar
*/
hoist?: boolean | null | undefined;
/**
* The role's icon image (if the guild has the `ROLE_ICONS` feature)
*/
icon?: string | null | undefined;
/**
* The role's unicode emoji as a standard emoji (if the guild has the `ROLE_ICONS` feature)
*/
unicode_emoji?: string | null | undefined;
/**
* Whether the role should be mentionable
*/
mentionable?: boolean | null | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-role
*/
export type RESTPatchAPIGuildRoleResult = APIRole;
/**
* https://discord.com/developers/docs/resources/guild#delete-guild-role
*/
export type RESTDeleteAPIGuildRoleResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-role-member-counts
*/
export type RESTGetAPIGuildRoleMemberCountsResult = Record<string, number>;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-prune-count
*/
export interface RESTGetAPIGuildPruneCountQuery {
/**
* Number of days to count prune for (1 or more)
*
* @default 7
*/
days?: number;
/**
* Role(s) to include
*
* While this is typed as a string, it represents an array of
* role IDs delimited by commas
*
* See https://discord.com/developers/docs/resources/guild#get-guild-prune-count-query-string-params
*/
include_roles?: string;
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-prune-count
*/
export interface RESTGetAPIGuildPruneCountResult {
pruned: number;
}
/**
* https://discord.com/developers/docs/resources/guild#begin-guild-prune
*/
export interface RESTPostAPIGuildPruneJSONBody {
/**
* Number of days to count prune for (1 or more)
*
* @default 7
*/
days?: number | undefined;
/**
* Whether `pruned is returned, discouraged for large guilds
*
* @default true
*/
compute_prune_count?: boolean | undefined;
/**
* Role(s) to include
*/
include_roles?: Snowflake[] | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#begin-guild-prune
*/
export interface RESTPostAPIGuildPruneResult {
pruned: number | null;
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-voice-regions
*/
export type RESTGetAPIGuildVoiceRegionsResult = APIVoiceRegion[];
/**
* https://discord.com/developers/docs/resources/guild#get-guild-invites
*/
export type RESTGetAPIGuildInvitesResult = APIExtendedInvite[];
/**
* https://discord.com/developers/docs/resources/guild#get-guild-integrations
*/
export type RESTGetAPIGuildIntegrationsResult = APIGuildIntegration[];
/**
* https://discord.com/developers/docs/resources/guild#delete-guild-integration
*/
export type RESTDeleteAPIGuildIntegrationResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-settings
*/
export type RESTGetAPIGuildWidgetSettingsResult = APIGuildWidgetSettings;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-widget
*/
export type RESTPatchAPIGuildWidgetSettingsJSONBody = StrictPartial<APIGuildWidgetSettings>;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-widget
*/
export type RESTPatchAPIGuildWidgetSettingsResult = APIGuildWidgetSettings;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget
*/
export type RESTGetAPIGuildWidgetJSONResult = APIGuildWidget;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-vanity-url
*/
export interface RESTGetAPIGuildVanityUrlResult {
code: string | null;
uses: number;
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-image
*/
export interface RESTGetAPIGuildWidgetImageQuery {
/**
* Style of the widget image returned
*
* @default "shield"
*/
style?: GuildWidgetStyle;
}
/**
* Note: while the return type is `ArrayBuffer`, the expected result is
* a buffer of sorts (depends if in browser or on node.js/deno).
*/
export type RESTGetAPIGuildWidgetImageResult = ArrayBuffer;
export type RESTGetAPIGuildMemberVerificationResult = APIGuildMembershipScreening;
export interface RESTPatchAPIGuildMemberVerificationJSONBody {
/**
* Whether Membership Screening is enabled
*/
enabled?: boolean | undefined;
/**
* Array of field objects serialized in a string
*/
form_fields?: string | undefined;
/**
* The server description to show in the screening form
*/
description?: string | null | undefined;
}
export type RESTPatchAPIGuildMemberVerificationResult = APIGuildMembershipScreening;
/**
* https://discord.com/developers/docs/resources/guild#modify-current-user-voice-state
*/
export interface RESTPatchAPIGuildVoiceStateCurrentMemberJSONBody {
/**
* The id of the channel the user is currently in
*/
channel_id?: Snowflake | undefined;
/**
* Toggles the user's suppress state
*/
suppress?: boolean | undefined;
/**
* Sets the user's request to speak
*/
request_to_speak_timestamp?: string | null | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-current-user-voice-state
*/
export type RESTPatchAPIGuildVoiceStateCurrentMemberResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#modify-user-voice-state
*/
export interface RESTPatchAPIGuildVoiceStateUserJSONBody {
/**
* The id of the channel the user is currently in
*/
channel_id: Snowflake;
/**
* Toggles the user's suppress state
*/
suppress?: boolean | undefined;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-user-voice-state
*/
export type RESTPatchAPIGuildVoiceStateUserResult = undefined;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-welcome-screen
*/
export type RESTGetAPIGuildWelcomeScreenResult = APIGuildWelcomeScreen;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-welcome-screen
*/
export type RESTPatchAPIGuildWelcomeScreenJSONBody = Nullable<StrictPartial<APIGuildWelcomeScreen>> & {
/**
* Whether the welcome screen is enabled
*/
enabled?: boolean | null | undefined;
};
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-welcome-screen
*/
export type RESTPatchAPIGuildWelcomeScreenResult = APIGuildWelcomeScreen;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-onboarding
*/
export type RESTGetAPIGuildOnboardingResult = APIGuildOnboarding;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-onboarding
*/
export type RESTPutAPIGuildOnboardingJSONBody = AddUndefinedToPossiblyUndefinedPropertiesOfInterface<Partial<Pick<APIGuildOnboarding, 'default_channel_ids' | 'enabled' | 'mode'>>> & {
/**
* Prompts shown during onboarding and in customize community
*/
prompts?: RESTAPIModifyGuildOnboardingPromptData[] | undefined;
};
export type RESTAPIModifyGuildOnboardingPromptData = AddUndefinedToPossiblyUndefinedPropertiesOfInterface<Partial<Omit<APIGuildOnboardingPrompt, 'guild_id' | 'id' | 'options' | 'title'>>> & Pick<APIGuildOnboardingPrompt, 'id' | 'title'> & {
/**
* Options available within the prompt
*/
options: RESTAPIModifyGuildOnboardingPromptOptionData[];
};
export type RESTAPIModifyGuildOnboardingPromptOptionData = AddUndefinedToPossiblyUndefinedPropertiesOfInterface<Partial<Omit<APIGuildOnboardingPromptOption, 'emoji' | 'guild_id' | 'title'>>> & Pick<APIGuildOnboardingPromptOption, 'title'> & {
/**
* Emoji id
*/
emoji_id?: Snowflake | null | undefined;
/**
* Emoji name
*/
emoji_name?: string | null | undefined;
/**
* Whether this emoji is animated
*/
emoji_animated?: boolean | null | undefined;
};
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-onboarding
*/
export type RESTPutAPIGuildOnboardingResult = APIGuildOnboarding;
/**
* https://discord.com/developers/docs/resources/message#search-guild-messages
*/
export declare enum GuildSearchAuthorType {
User = "user",
Bot = "bot",
Webhook = "webhook"
}
/**
* https://discord.com/developers/docs/resources/message#search-guild-messages
*/
export declare enum GuildSearchHasType {
Image = "image",
Sound = "sound",
Video = "video",
File = "file",
Sticker = "sticker",
Embed = "embed",
Link = "link",
Poll = "poll",
Snapshot = "snapshot"
}
/**
* https://discord.com/developers/docs/resources/message#search-guild-messages
*/
export declare enum GuildSearchEmbedType {
Image = "image",
Video = "video",
GIF = "gif",
Sound = "sound",
Article = "article"
}
/**
* https://discord.com/developers/docs/resources/message#search-guild-messages
*/
export declare enum GuildSearchSortBy {
Timestamp = "timestamp",
Relevance = "relevance"
}
/**
* https://discord.com/developers/docs/resources/message#search-guild-messages
*/
export declare enum GuildSearchSortOrder {
Ascending = "asc",
Descending = "desc"
}
export type GuildSearchNegatable<T extends string> = `${T}` | `-${T}`;
/**
* https://discord.com/developers/docs/resources/message#search-guild-messages
*/
export interface RESTGetAPIGuildMessagesSearchQuery {
/**
* Filter messages by content (max 1024 characters)
*/
content?: string;
/**
* Filter messages by these channels (max 500)
*/
channel_id?: Snowflake[];
/**
* Filter messages by these authors (max 100)
*/
author_id?: Snowflake[];
/**
* Filter by author type (prefix with `-` to negate)
*/
author_type?: GuildSearchNegatable<GuildSearchAuthorType>[];
/**
* Filter messages that mention these users (max 100)
*/
mentions?: Snowflake[];
/**
* Filter messages that mention these roles (max 100)
*/
mentions_role_id?: Snowflake[];
/**
* Filter messages that do or do not mention @everyone
*/
mention_everyone?: boolean;
/**
* Filter messages that reply to these users (max 100)
*/
replied_to_user_id?: Snowflake[];
/**
* Filter messages that reply to these messages (max 100)
*/
replied_to_message_id?: Snowflake[];
/**
* Filter messages by whether they are or are not pinned
*/
pinned?: boolean;
/**
* Filter by content type (prefix with `-` to negate)
*/
has?: GuildSearchNegatable<GuildSearchHasType>[];
/**
* Filter messages by embed type
*/
embed_type?: GuildSearchEmbedType[];
/**
* Filter messages by embed provider (case-sensitive, e.g. `Tenor`) (max 256 characters, max 100)
*/
embed_provider?: ('Tenor' | ({} & string))[];
/**
* Filter messages by link hostname (e.g. `discordapp.com`) (max 256 characters, max 100)
*/
link_hostname?: string[];
/**
* Filter messages by attachment filename (max 1024 characters, max 100)
*/
attachment_filename?: string[];
/**
* Filter messages by attachment extension (e.g. `txt`) (max 256 characters, max 100)
*/
attachment_extension?: string[];
/**
* Max number of words to skip between matching tokens (max 100)
*
* @default 2
*/
slop?: number;
/**
* The sorting algorithm to use
*/
sort_by?: GuildSearchSortBy;
/**
* The sort order (ignored with relevance sorting)
*
* @default "desc"
*/
sort_order?: GuildSearchSortOrder;
/**
* Max number of messages to return (1-25)
*
* @default 25
*/
limit?: number;
/**
* Number to offset the returned messages by (max 9975)
*/
offset?: number;
/**
* Get messages before this message ID
*/
max_id?: Snowflake;
/**
* Get messages after this message ID
*/
min_id?: Snowflake;
/**
* Whether to include results from age-restricted channels
*
* @default false
*/
include_nsfw?: boolean;
}
/**
* https://discord.com/developers/docs/resources/message#search-guild-messages
*/
export interface RESTGetAPIGuildMessagesSearch {
/**
* Whether the guild is undergoing a deep historical indexing operation
*/
doing_deep_historical_index: boolean;
/**
* The number of documents that have been indexed during the current index operation, if any
*/
documents_indexed: number;
/**
* The total number of results that match the query
*/
total_results: number;
/**
* A nested array of messages that match the query
*/
messages: [APIMessage][];
/**
* The threads that contain the returned messages
*/
threads: APIChannel[];
/**
* A thread member object for each returned thread the current user has joined
*/
members: APIThreadMember[];
}
/**
* https://discord.com/developers/docs/resources/message#search-guild-messages
*
* Response when the index is not yet available (HTTP 202)
*/
export interface RESTGetAPIGuildMessagesSearchIndexingResult {
/**
* Error description
*/
message: string;
/**
* Error code (110000)
*/
code: 110_000;
/**
* Always 0 when indexing
*/
documents_indexed: 0;
/**
* Seconds to wait before retrying
*/
retry_after: number;
}
export type RESTGetAPIGuildMessagesSearchResult = RESTGetAPIGuildMessagesSearch | RESTGetAPIGuildMessagesSearchIndexingResult;