Skip to content

Commit

Permalink
feat: support onboarding updates (#69)
Browse files Browse the repository at this point in the history
* feat: support onboarding updates

* fix linting issues
  • Loading branch information
TTtie authored Jul 18, 2023
1 parent c1a4cbe commit dec00b3
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 0 deletions.
11 changes: 11 additions & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ declare namespace Dysnomia {
type GuildScheduledEventPrivacyLevel = Constants["GuildScheduledEventPrivacyLevel"][keyof Constants["GuildScheduledEventPrivacyLevel"]];
type GuildScheduledEventStatus = Constants["GuildScheduledEventStatus"][keyof Constants["GuildScheduledEventStatus"]];
type NSFWLevel = Constants["GuildNSFWLevels"][keyof Constants["GuildNSFWLevels"]];
type OnboardingModes = Constants["OnboardingModes"][keyof Constants["OnboardingModes"]];
type OnboardingPromptTypes = Constants["OnboardingPromptTypes"][keyof Constants["OnboardingPromptTypes"]];
type PossiblyUncachedGuild = Guild | Uncached;
type PossiblyUncachedGuildScheduledEvent = GuildScheduledEvent | Uncached;
Expand Down Expand Up @@ -929,6 +930,9 @@ declare namespace Dysnomia {
level: MFALevel;
reason?: string;
}
interface EditGuildOnboardingOptions extends Partial<Omit<GuildOnboarding, "guild_id">> {
reason?: string;
}
interface GetGuildAuditLogOptions {
actionType?: number;
after?: string;
Expand Down Expand Up @@ -982,6 +986,7 @@ declare namespace Dysnomia {
enabled: boolean;
default_channel_ids: string[];
guild_id: string;
mode: OnboardingModes;
prompts: GuildOnboardingPrompt[];
}
interface GuildOnboardingPrompt {
Expand Down Expand Up @@ -2152,6 +2157,10 @@ declare namespace Dysnomia {
INVITED: 1;
ACCEPTED: 2;
};
OnboardingModes: {
ONBOARDING_DEFAULT: 0;
ONBOARDING_ADVANCED: 1;
};
OnboardingPromptTypes: {
MULTIPLE_CHOICE: 0;
DROPDOWN: 1;
Expand Down Expand Up @@ -2609,6 +2618,7 @@ declare namespace Dysnomia {
editGuildIntegration(guildID: string, integrationID: string, options: IntegrationOptions): Promise<void>;
editGuildMember(guildID: string, memberID: string, options: MemberOptions, reason?: string): Promise<Member>;
editGuildMFALevel(guildID: string, options: EditGuildMFALevelOptions): Promise<MFALevel>;
editGuildOnboarding(guildID: string, options: EditGuildOnboardingOptions): Promise<GuildOnboarding>;
editGuildScheduledEvent<T extends GuildScheduledEventEntityTypes>(guildID: string, eventID: string, event: GuildScheduledEventEditOptions<T>, reason?: string): Promise<GuildScheduledEvent<T>>;
editGuildSticker(guildID: string, stickerID: string, options?: EditStickerOptions, reason?: string): Promise<Sticker>;
editGuildTemplate(guildID: string, code: string, options: GuildTemplateOptions): Promise<GuildTemplate>;
Expand Down Expand Up @@ -2940,6 +2950,7 @@ declare namespace Dysnomia {
editIntegration(integrationID: string, options: IntegrationOptions): Promise<void>;
editMember(memberID: string, options: MemberOptions, reason?: string): Promise<Member>;
editMFALevel(options: EditGuildMFALevelOptions): Promise<MFALevel>;
editOnboarding(options: EditGuildOnboardingOptions): Promise<GuildOnboarding>;
editRole(roleID: string, options: RoleOptions): Promise<Role>;
editScheduledEvent<T extends GuildScheduledEventEntityTypes>(eventID: string, event: GuildScheduledEventEditOptions<T>, reason?: string): Promise<GuildScheduledEvent<T>>;
editSticker(stickerID: string, options?: EditStickerOptions, reason?: string): Promise<Sticker>;
Expand Down
11 changes: 11 additions & 0 deletions lib/Client.js
Original file line number Diff line number Diff line change
Expand Up @@ -1504,6 +1504,17 @@ class Client extends EventEmitter {
return this.requestHandler.request("POST", Endpoints.GUILD_MFA_LEVEL(guildID), true, options).then((data) => data.level);
}

/**
* Edits the onboarding flow of a guild, shown to new members
* @param {String} guildID The ID of the guild
* @param {Object} options The [guild onboarding](https://discord.com/developers/docs/resources/guild#guild-onboarding-object) object
* @param {String} [options.reason] The reason to be displayed in audit logs
* @returns {Promise<Object>} Resolves with the [guild onboarding object](https://discord.com/developers/docs/resources/guild#guild-onboarding-object)
*/
editGuildOnboarding(guildID, options) {
return this.requestHandler.request("PUT", Endpoints.GUILD_ONBOARDING(guildID), true, options);
}

/**
* Edit a guild scheduled event
* @arg {String} guildID The guild ID where the event will be edited
Expand Down
5 changes: 5 additions & 0 deletions lib/Constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,11 @@ module.exports.MembershipState = {
ACCEPTED: 2
};

module.exports.OnboardingModes = {
ONBOARDING_DEFAULT: 0,
ONBOARDING_ADVANCED: 1
};

module.exports.OnboardingPromptTypes = {
MULTIPLE_CHOICE: 0,
DROPDOWN: 1
Expand Down
10 changes: 10 additions & 0 deletions lib/structures/Guild.js
Original file line number Diff line number Diff line change
Expand Up @@ -761,6 +761,16 @@ class Guild extends Base {
return this.#client.editGuildMFALevel.call(this.#client, this.id, options);
}

/**
* Edits the onboarding flow of this guild, shown to new members
* @param {Object} options The [guild onboarding](https://discord.com/developers/docs/resources/guild#guild-onboarding-object) object
* @param {String} [options.reason] The reason to be displayed in audit logs
* @returns {Promise<Object>} Resolves with the [guild onboarding object](https://discord.com/developers/docs/resources/guild#guild-onboarding-object)
*/
editOnboarding(options) {
return this.#client.editGuildOnboarding.call(this.#client, this.id, options);
}

/**
* Edit the guild role
* @arg {String} roleID The ID of the role
Expand Down

0 comments on commit dec00b3

Please sign in to comment.