feat: guild onboarding (#9120)

* feat: guild onboarding

* feat: types and /core method

* fix: route

* fix: make emoji name non-nullable

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Almeida
2023-07-07 22:48:17 +01:00
committed by GitHub
parent a48d0efb09
commit dc73c938ff
9 changed files with 393 additions and 92 deletions

View File

@@ -157,6 +157,10 @@ import {
ImageFormat,
GuildMemberFlags,
RESTGetAPIGuildThreadsResult,
RESTGetAPIGuildOnboardingResult,
APIGuildOnboardingPrompt,
APIGuildOnboardingPromptOption,
GuildOnboardingPromptType,
} from 'discord-api-types/v10';
import { ChildProcess } from 'node:child_process';
import { EventEmitter } from 'node:events';
@@ -1356,6 +1360,7 @@ export class Guild extends AnonymousGuild {
options?: GuildAuditLogsFetchOptions<T>,
): Promise<GuildAuditLogs<T>>;
public fetchIntegrations(): Promise<Collection<Snowflake | string, Integration>>;
public fetchOnboarding(): Promise<GuildOnboarding>;
public fetchOwner(options?: BaseFetchOptions): Promise<GuildMember>;
public fetchPreview(): Promise<GuildPreview>;
public fetchTemplates(): Promise<Collection<GuildTemplate['code'], GuildTemplate>>;
@@ -1566,6 +1571,40 @@ export class GuildMember extends PartialTextBasedChannel(Base) {
public valueOf(): string;
}
export class GuildOnboarding extends Base {
private constructor(client: Client, data: RESTGetAPIGuildOnboardingResult);
public get guild(): Guild;
public guildId: Snowflake;
public prompts: Collection<Snowflake, GuildOnboardingPrompt>;
public defaultChannels: Collection<Snowflake, GuildChannel>;
public enabled: boolean;
}
export class GuildOnboardingPrompt extends Base {
private constructor(client: Client, data: APIGuildOnboardingPrompt, guildId: Snowflake);
public id: Snowflake;
public get guild(): Guild;
public guildId: Snowflake;
public options: Collection<Snowflake, GuildOnboardingPromptOption>;
public title: string;
public singleSelect: boolean;
public required: boolean;
public inOnboarding: boolean;
public type: GuildOnboardingPromptType;
}
export class GuildOnboardingPromptOption extends Base {
private constructor(client: Client, data: APIGuildOnboardingPromptOption, guildId: Snowflake);
public id: Snowflake;
public get guild(): Guild;
public guildId: Snowflake;
public channels: Collection<Snowflake, GuildChannel>;
public roles: Collection<Snowflake, Role>;
public emoji: GuildOnboardingPromptOptionEmoji | null;
public title: string;
public description: string | null;
}
export class GuildPreview extends Base {
private constructor(client: Client<true>, data: RawGuildPreviewData);
public approximateMemberCount: number;
@@ -5648,6 +5687,12 @@ export type GuildTemplateResolvable = string;
export type GuildVoiceChannelResolvable = VoiceBasedChannel | Snowflake;
export interface GuildOnboardingPromptOptionEmoji {
id: Snowflake | null;
name: string;
animated: boolean;
}
export type HexColorString = `#${string}`;
export interface IntegrationAccount {

View File

@@ -173,6 +173,7 @@ import {
ApplicationCommandSubCommand,
ChatInputApplicationCommandData,
ApplicationCommandPermissionsManager,
GuildOnboarding,
} from '.';
import { expectAssignable, expectNotAssignable, expectNotType, expectType } from 'tsd';
import type { ContextMenuCommandBuilder, SlashCommandBuilder } from '@discordjs/builders';
@@ -2288,3 +2289,8 @@ client.on('guildAuditLogEntryCreate', (auditLogEntry, guild) => {
});
expectType<Readonly<GuildMemberFlagsBitField>>(guildMember.flags);
{
const onboarding = await guild.fetchOnboarding();
expectType<GuildOnboarding>(onboarding);
}