mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-13 10:03:31 +01:00
feat: soundboard missing things (#10850)
This commit is contained in:
@@ -157,35 +157,57 @@ class GuildSoundboardSoundManager extends CachedManager {
|
|||||||
await this.client.rest.delete(Routes.guildSoundboardSound(this.guild.id, soundId), { reason });
|
await this.client.rest.delete(Routes.guildSoundboardSound(this.guild.id, soundId), { reason });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options used to fetch a soundboard sound.
|
||||||
|
* @typedef {BaseFetchOptions} FetchSoundboardSoundOptions
|
||||||
|
* @property {SoundboardSoundResolvable} soundboardSound The soundboard sound to fetch
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options used to fetch soundboard sounds from Discord
|
||||||
|
* @typedef {Object} FetchGuildSoundboardSoundsOptions
|
||||||
|
* @property {boolean} [cache] Whether to cache the fetched soundboard sounds
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* eslint-disable max-len */
|
||||||
/**
|
/**
|
||||||
* Obtains one or more soundboard sounds from Discord, or the soundboard sound cache if they're already available.
|
* Obtains one or more soundboard sounds from Discord, or the soundboard sound cache if they're already available.
|
||||||
* @param {Snowflake} [id] The soundboard sound's id
|
* @param {SoundboardSoundResolvable|FetchSoundboardSoundOptions|FetchGuildSoundboardSoundsOptions} [options] Options for fetching soundboard sound(s)
|
||||||
* @param {BaseFetchOptions} [options] Additional options for this fetch
|
|
||||||
* @returns {Promise<SoundboardSound|Collection<Snowflake, SoundboardSound>>}
|
* @returns {Promise<SoundboardSound|Collection<Snowflake, SoundboardSound>>}
|
||||||
* @example
|
* @example
|
||||||
* // Fetch all soundboard sounds from the guild
|
|
||||||
* guild.soundboardSounds.fetch()
|
|
||||||
* .then(sounds => console.log(`There are ${sounds.size} soundboard sounds.`))
|
|
||||||
* .catch(console.error);
|
|
||||||
* @example
|
|
||||||
* // Fetch a single soundboard sound
|
* // Fetch a single soundboard sound
|
||||||
* guild.soundboardSounds.fetch('222078108977594368')
|
* guild.soundboardSounds.fetch('222078108977594368')
|
||||||
* .then(sound => console.log(`The soundboard sound name is: ${sound.name}`))
|
* .then(sound => console.log(`The soundboard sound name is: ${sound.name}`))
|
||||||
* .catch(console.error);
|
* .catch(console.error);
|
||||||
|
* @example
|
||||||
|
* // Fetch all soundboard sounds from the guild
|
||||||
|
* guild.soundboardSounds.fetch()
|
||||||
|
* .then(sounds => console.log(`There are ${sounds.size} soundboard sounds.`))
|
||||||
|
* .catch(console.error);
|
||||||
*/
|
*/
|
||||||
async fetch(id, { cache = true, force = false } = {}) {
|
/* eslint-enable max-len */
|
||||||
if (id) {
|
async fetch(options) {
|
||||||
if (!force) {
|
if (!options) return this._fetchMany();
|
||||||
const existing = this.cache.get(id);
|
const { cache, force, soundboardSound } = options;
|
||||||
if (existing) return existing;
|
const resolvedSoundboardSound = this.resolveId(soundboardSound ?? options);
|
||||||
}
|
if (resolvedSoundboardSound) return this._fetchSingle({ cache, force, soundboardSound });
|
||||||
|
return this._fetchMany({ cache });
|
||||||
|
}
|
||||||
|
|
||||||
const sound = await this.client.rest.get(Routes.guildSoundboardSound(this.guild.id, id));
|
async _fetchSingle({ cache, force, soundboardSound } = {}) {
|
||||||
return this._add(sound, cache);
|
if (!force) {
|
||||||
|
const existing = this.cache.get(soundboardSound);
|
||||||
|
if (existing) return existing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const data = await this.client.rest.get(Routes.guildSoundboardSound(this.guild.id, soundboardSound));
|
||||||
|
return this._add(data, cache);
|
||||||
|
}
|
||||||
|
|
||||||
|
async _fetchMany({ cache } = {}) {
|
||||||
const data = await this.client.rest.get(Routes.guildSoundboardSounds(this.guild.id));
|
const data = await this.client.rest.get(Routes.guildSoundboardSounds(this.guild.id));
|
||||||
return new Collection(data.map(sound => [sound.sound_id, this._add(sound, cache)]));
|
|
||||||
|
return data.items.reduce((coll, sound) => coll.set(sound.sound_id, this._add(sound, cache)), new Collection());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ const Targets = {
|
|||||||
AutoModeration: 'AutoModeration',
|
AutoModeration: 'AutoModeration',
|
||||||
GuildOnboarding: 'GuildOnboarding',
|
GuildOnboarding: 'GuildOnboarding',
|
||||||
GuildOnboardingPrompt: 'GuildOnboardingPrompt',
|
GuildOnboardingPrompt: 'GuildOnboardingPrompt',
|
||||||
|
SoundboardSound: 'SoundboardSound',
|
||||||
Unknown: 'Unknown',
|
Unknown: 'Unknown',
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -87,6 +88,7 @@ const Targets = {
|
|||||||
* * ApplicationCommandPermission
|
* * ApplicationCommandPermission
|
||||||
* * GuildOnboarding
|
* * GuildOnboarding
|
||||||
* * GuildOnboardingPrompt
|
* * GuildOnboardingPrompt
|
||||||
|
* * SoundboardSound
|
||||||
* * Unknown
|
* * Unknown
|
||||||
* @typedef {string} AuditLogTargetType
|
* @typedef {string} AuditLogTargetType
|
||||||
*/
|
*/
|
||||||
@@ -395,7 +397,8 @@ class GuildAuditLogsEntry {
|
|||||||
if (target < 110) return Targets.GuildScheduledEvent;
|
if (target < 110) return Targets.GuildScheduledEvent;
|
||||||
if (target < 120) return Targets.Thread;
|
if (target < 120) return Targets.Thread;
|
||||||
if (target < 130) return Targets.ApplicationCommand;
|
if (target < 130) return Targets.ApplicationCommand;
|
||||||
if (target >= 140 && target < 150) return Targets.AutoModeration;
|
if (target < 140) return Targets.SoundboardSound;
|
||||||
|
if (target >= 143 && target < 150) return Targets.AutoModeration;
|
||||||
if (target >= 163 && target <= 165) return Targets.GuildOnboardingPrompt;
|
if (target >= 163 && target <= 165) return Targets.GuildOnboardingPrompt;
|
||||||
if (target >= 160 && target < 170) return Targets.GuildOnboarding;
|
if (target >= 160 && target < 170) return Targets.GuildOnboarding;
|
||||||
return Targets.Unknown;
|
return Targets.Unknown;
|
||||||
@@ -423,6 +426,7 @@ class GuildAuditLogsEntry {
|
|||||||
AuditLogEvent.StickerCreate,
|
AuditLogEvent.StickerCreate,
|
||||||
AuditLogEvent.GuildScheduledEventCreate,
|
AuditLogEvent.GuildScheduledEventCreate,
|
||||||
AuditLogEvent.ThreadCreate,
|
AuditLogEvent.ThreadCreate,
|
||||||
|
AuditLogEvent.SoundboardSoundCreate,
|
||||||
AuditLogEvent.AutoModerationRuleCreate,
|
AuditLogEvent.AutoModerationRuleCreate,
|
||||||
AuditLogEvent.AutoModerationBlockMessage,
|
AuditLogEvent.AutoModerationBlockMessage,
|
||||||
AuditLogEvent.OnboardingPromptCreate,
|
AuditLogEvent.OnboardingPromptCreate,
|
||||||
@@ -452,6 +456,7 @@ class GuildAuditLogsEntry {
|
|||||||
AuditLogEvent.StickerDelete,
|
AuditLogEvent.StickerDelete,
|
||||||
AuditLogEvent.GuildScheduledEventDelete,
|
AuditLogEvent.GuildScheduledEventDelete,
|
||||||
AuditLogEvent.ThreadDelete,
|
AuditLogEvent.ThreadDelete,
|
||||||
|
AuditLogEvent.SoundboardSoundDelete,
|
||||||
AuditLogEvent.AutoModerationRuleDelete,
|
AuditLogEvent.AutoModerationRuleDelete,
|
||||||
AuditLogEvent.OnboardingPromptDelete,
|
AuditLogEvent.OnboardingPromptDelete,
|
||||||
].includes(action)
|
].includes(action)
|
||||||
@@ -476,6 +481,7 @@ class GuildAuditLogsEntry {
|
|||||||
AuditLogEvent.StickerUpdate,
|
AuditLogEvent.StickerUpdate,
|
||||||
AuditLogEvent.GuildScheduledEventUpdate,
|
AuditLogEvent.GuildScheduledEventUpdate,
|
||||||
AuditLogEvent.ThreadUpdate,
|
AuditLogEvent.ThreadUpdate,
|
||||||
|
AuditLogEvent.SoundboardSoundUpdate,
|
||||||
AuditLogEvent.ApplicationCommandPermissionUpdate,
|
AuditLogEvent.ApplicationCommandPermissionUpdate,
|
||||||
AuditLogEvent.AutoModerationRuleUpdate,
|
AuditLogEvent.AutoModerationRuleUpdate,
|
||||||
AuditLogEvent.OnboardingPromptUpdate,
|
AuditLogEvent.OnboardingPromptUpdate,
|
||||||
|
|||||||
14
packages/discord.js/typings/index.d.ts
vendored
14
packages/discord.js/typings/index.d.ts
vendored
@@ -4862,6 +4862,12 @@ export interface GuildSoundboardSoundEditOptions {
|
|||||||
emojiName?: string | null;
|
emojiName?: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface FetchGuildSoundboardSoundOptions extends BaseFetchOptions {
|
||||||
|
soundboardSound: SoundboardSoundResolvable;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FetchGuildSoundboardSoundsOptions extends Pick<BaseFetchOptions, 'cache'> {}
|
||||||
|
|
||||||
export class GuildSoundboardSoundManager extends CachedManager<Snowflake, SoundboardSound, SoundboardSoundResolvable> {
|
export class GuildSoundboardSoundManager extends CachedManager<Snowflake, SoundboardSound, SoundboardSoundResolvable> {
|
||||||
private constructor(guild: Guild, iterable?: Iterable<APISoundboardSound>);
|
private constructor(guild: Guild, iterable?: Iterable<APISoundboardSound>);
|
||||||
public guild: Guild;
|
public guild: Guild;
|
||||||
@@ -4871,8 +4877,8 @@ export class GuildSoundboardSoundManager extends CachedManager<Snowflake, Soundb
|
|||||||
options: GuildSoundboardSoundEditOptions,
|
options: GuildSoundboardSoundEditOptions,
|
||||||
): Promise<GuildSoundboardSound>;
|
): Promise<GuildSoundboardSound>;
|
||||||
public delete(soundboardSound: SoundboardSoundResolvable): Promise<void>;
|
public delete(soundboardSound: SoundboardSoundResolvable): Promise<void>;
|
||||||
public fetch(id: Snowflake, options?: BaseFetchOptions): Promise<GuildSoundboardSound>;
|
public fetch(options: SoundboardSoundResolvable | FetchGuildSoundboardSoundOptions): Promise<GuildSoundboardSound>;
|
||||||
public fetch(options?: BaseFetchOptions): Promise<Collection<Snowflake, GuildSoundboardSound>>;
|
public fetch(options?: FetchGuildSoundboardSoundsOptions): Promise<Collection<Snowflake, GuildSoundboardSound>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class GuildStickerManager extends CachedManager<Snowflake, Sticker, StickerResolvable> {
|
export class GuildStickerManager extends CachedManager<Snowflake, Sticker, StickerResolvable> {
|
||||||
@@ -6334,6 +6340,9 @@ interface GuildAuditLogsTypes {
|
|||||||
[AuditLogEvent.ThreadUpdate]: ['Thread', 'Update'];
|
[AuditLogEvent.ThreadUpdate]: ['Thread', 'Update'];
|
||||||
[AuditLogEvent.ThreadDelete]: ['Thread', 'Delete'];
|
[AuditLogEvent.ThreadDelete]: ['Thread', 'Delete'];
|
||||||
[AuditLogEvent.ApplicationCommandPermissionUpdate]: ['ApplicationCommand', 'Update'];
|
[AuditLogEvent.ApplicationCommandPermissionUpdate]: ['ApplicationCommand', 'Update'];
|
||||||
|
[AuditLogEvent.SoundboardSoundCreate]: ['SoundboardSound', 'Create'];
|
||||||
|
[AuditLogEvent.SoundboardSoundUpdate]: ['SoundboardSound', 'Update'];
|
||||||
|
[AuditLogEvent.SoundboardSoundDelete]: ['SoundboardSound', 'Delete'];
|
||||||
[AuditLogEvent.AutoModerationRuleCreate]: ['AutoModeration', 'Create'];
|
[AuditLogEvent.AutoModerationRuleCreate]: ['AutoModeration', 'Create'];
|
||||||
[AuditLogEvent.AutoModerationRuleUpdate]: ['AutoModeration', 'Update'];
|
[AuditLogEvent.AutoModerationRuleUpdate]: ['AutoModeration', 'Update'];
|
||||||
[AuditLogEvent.AutoModerationRuleDelete]: ['AutoModeration', 'Delete'];
|
[AuditLogEvent.AutoModerationRuleDelete]: ['AutoModeration', 'Delete'];
|
||||||
@@ -6410,6 +6419,7 @@ export interface GuildAuditLogsEntryTargetField<TActionType extends GuildAuditLo
|
|||||||
ApplicationCommand: ApplicationCommand | { id: Snowflake };
|
ApplicationCommand: ApplicationCommand | { id: Snowflake };
|
||||||
AutoModerationRule: AutoModerationRule;
|
AutoModerationRule: AutoModerationRule;
|
||||||
GuildOnboardingPrompt: GuildOnboardingPrompt;
|
GuildOnboardingPrompt: GuildOnboardingPrompt;
|
||||||
|
SoundboardSound: { id: Snowflake };
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GuildAuditLogsFetchOptions<Event extends GuildAuditLogsResolvable> {
|
export interface GuildAuditLogsFetchOptions<Event extends GuildAuditLogsResolvable> {
|
||||||
|
|||||||
Reference in New Issue
Block a user