refactor: Stickers are free (no more "premium" packs) (#9791)

refactor: stickers are free

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Jiralite
2023-09-18 08:29:47 +01:00
committed by GitHub
parent 32d614ccd3
commit e02a59bbb6
4 changed files with 46 additions and 13 deletions

View File

@@ -4,7 +4,7 @@ import type { RequestData, REST } from '@discordjs/rest';
import {
Routes,
type RESTGetAPIStickerResult,
type RESTGetNitroStickerPacksResult,
type RESTGetStickerPacksResult,
type Snowflake,
} from 'discord-api-types/v10';
@@ -12,13 +12,24 @@ export class StickersAPI {
public constructor(private readonly rest: REST) {}
/**
* Fetches all of the nitro sticker packs
* Fetches all of the sticker packs
*
* @see {@link https://discord.com/developers/docs/resources/sticker#list-nitro-sticker-packs}
* @see {@link https://discord.com/developers/docs/resources/sticker#list-sticker-packs}
* @param options - The options for fetching the sticker packs
*/
public async getNitroStickers({ signal }: Pick<RequestData, 'signal'> = {}) {
return this.rest.get(Routes.nitroStickerPacks(), { signal }) as Promise<RESTGetNitroStickerPacksResult>;
public async getStickers({ signal }: Pick<RequestData, 'signal'> = {}) {
return this.rest.get(Routes.stickerPacks(), { signal }) as Promise<RESTGetStickerPacksResult>;
}
/**
* Fetches all of the sticker packs
*
* @see {@link https://discord.com/developers/docs/resources/sticker#list-sticker-packs}
* @param options - The options for fetching the sticker packs
* @deprecated Use {@link getStickers} instead.
*/
public async getNitroStickers(options: Pick<RequestData, 'signal'> = {}) {
return this.getStickers(options);
}
/**

View File

@@ -31,6 +31,8 @@ const PermissionsBitField = require('../util/PermissionsBitField');
const Status = require('../util/Status');
const Sweepers = require('../util/Sweepers');
let deprecationEmittedForPremiumStickerPacks = false;
/**
* The main hub for interacting with the Discord API, and the starting point for any bot.
* @extends {BaseClient}
@@ -358,18 +360,36 @@ class Client extends BaseClient {
}
/**
* Obtains the list of sticker packs available to Nitro subscribers from Discord.
* Obtains the list of available sticker packs.
* @returns {Promise<Collection<Snowflake, StickerPack>>}
* @example
* client.fetchPremiumStickerPacks()
* client.fetchStickerPacks()
* .then(packs => console.log(`Available sticker packs are: ${packs.map(pack => pack.name).join(', ')}`))
* .catch(console.error);
*/
async fetchPremiumStickerPacks() {
const data = await this.rest.get(Routes.nitroStickerPacks());
async fetchStickerPacks() {
const data = await this.rest.get(Routes.stickerPacks());
return new Collection(data.sticker_packs.map(p => [p.id, new StickerPack(this, p)]));
}
/**
* Obtains the list of available sticker packs.
* @returns {Promise<Collection<Snowflake, StickerPack>>}
* @deprecated Use {@link Client#fetchStickerPacks} instead.
*/
fetchPremiumStickerPacks() {
if (!deprecationEmittedForPremiumStickerPacks) {
process.emitWarning(
'The Client#fetchPremiumStickerPacks() method is deprecated. Use Client#fetchStickerPacks() instead.',
'DeprecationWarning',
);
deprecationEmittedForPremiumStickerPacks = true;
}
return this.fetchStickerPacks();
}
/**
* Obtains a guild preview from Discord, available for all guilds the bot is in and all Discoverable guilds.
* @param {GuildResolvable} guild The guild to fetch the preview for

View File

@@ -179,11 +179,11 @@ class Sticker extends Base {
}
/**
* Fetches the pack this sticker is part of from Discord, if this is a Nitro sticker.
* @returns {Promise<?StickerPack>}
* Fetches the pack that contains this sticker.
* @returns {Promise<?StickerPack>} The sticker pack or `null` if this sticker does not belong to one.
*/
async fetchPack() {
return (this.packId && (await this.client.fetchPremiumStickerPacks()).get(this.packId)) ?? null;
return (this.packId && (await this.client.fetchStickerPacks()).get(this.packId)) ?? null;
}
/**

View File

@@ -979,7 +979,9 @@ export class Client<Ready extends boolean = boolean> extends BaseClient {
public fetchGuildTemplate(template: GuildTemplateResolvable): Promise<GuildTemplate>;
public fetchVoiceRegions(): Promise<Collection<string, VoiceRegion>>;
public fetchSticker(id: Snowflake): Promise<Sticker>;
public fetchPremiumStickerPacks(): Promise<Collection<Snowflake, StickerPack>>;
public fetchStickerPacks(): Promise<Collection<Snowflake, StickerPack>>;
/** @deprecated Use {@link fetchStickerPacks} instead. */
public fetchPremiumStickerPacks(): ReturnType<Client['fetchStickerPacks']>;
public fetchWebhook(id: Snowflake, token?: string): Promise<Webhook>;
public fetchGuildWidget(guild: GuildResolvable): Promise<Widget>;
public generateInvite(options?: InviteGenerationOptions): string;