fix: add nitroStickerPacks helper. Closes #2095

This commit is contained in:
Skillz4Killz
2022-03-21 12:08:43 +00:00
committed by GitHub
parent 90d5744e14
commit fe42864b00
4 changed files with 37 additions and 3 deletions

7
bot.ts
View File

@@ -59,9 +59,9 @@ import { transformWelcomeScreen } from "./transformers/welcomeScreen.ts";
import { transformVoiceRegion } from "./transformers/voiceRegion.ts";
import { transformWidget } from "./transformers/widget.ts";
import { transformStageInstance } from "./transformers/stageInstance.ts";
import { transformSticker } from "./transformers/sticker.ts";
import { StickerPack, transformSticker, transformStickerPack } from "./transformers/sticker.ts";
import { GetGatewayBot, transformGatewayBot } from "./transformers/gatewayBot.ts";
import { DiscordEmoji, DiscordGatewayPayload, DiscordReady } from "./types/discord.ts";
import { DiscordEmoji, DiscordGatewayPayload, DiscordReady, DiscordStickerPack } from "./types/discord.ts";
import { Errors, GatewayDispatchEventNames, GatewayIntents } from "./types/shared.ts";
import {
@@ -343,6 +343,7 @@ export function createHelpers(
...createBaseHelpers(customHelpers || {}),
})
) {
// @ts-ignore - TODO: make the types better
converted[name as keyof FinalHelpers] = (
// @ts-ignore - TODO: make the types better
...args: RemoveFirstFromTuple<Parameters<typeof fun>>
@@ -397,6 +398,7 @@ export interface Transformers {
widget: (bot: Bot, payload: DiscordGuildWidget) => GuildWidget;
stageInstance: (bot: Bot, payload: DiscordStageInstance) => StageInstance;
sticker: (bot: Bot, payload: DiscordSticker) => Sticker;
stickerPack: (bot: Bot, payload: DiscordStickerPack) => StickerPack;
}
export function createTransformers(options: Partial<Transformers>) {
@@ -435,6 +437,7 @@ export function createTransformers(options: Partial<Transformers>) {
widget: options.widget || transformWidget,
stageInstance: options.stageInstance || transformStageInstance,
sticker: options.sticker || transformSticker,
stickerPack: options.stickerPack || transformStickerPack,
gatewayBot: options.gatewayBot || transformGatewayBot,
};
}

View File

@@ -0,0 +1,13 @@
import { Bot } from "../../bot.ts";
import { DiscordStickerPack } from "../../types/discord.ts";
/** Returns the list of sticker packs available to Nitro subscribers. */
export async function nitroStickerPacks(bot: Bot) {
const packs = await bot.rest.runMethod<DiscordStickerPack[]>(
bot.rest,
"get",
bot.constants.endpoints.NITRO_STICKER_PACKS,
);
return packs.map((pack) => bot.transformers.stickerPack(bot, pack));
}

View File

@@ -1,5 +1,5 @@
import { Bot } from "../bot.ts";
import { DiscordSticker } from "../types/discord.ts";
import { DiscordSticker, DiscordStickerPack } from "../types/discord.ts";
import { Optionalize } from "../types/shared.ts";
export function transformSticker(bot: Bot, payload: DiscordSticker) {
@@ -20,4 +20,19 @@ export function transformSticker(bot: Bot, payload: DiscordSticker) {
return sticker as Optionalize<typeof sticker>;
}
export function transformStickerPack(bot: Bot, payload: DiscordStickerPack) {
const pack = {
id: bot.transformers.snowflake(payload.id),
stickers: payload.stickers.map((sticker) => bot.transformers.sticker(bot, sticker)),
name: payload.name,
skuId: bot.transformers.snowflake(payload.sku_id),
coverStickerId: payload.cover_sticker_id ? bot.transformers.snowflake(payload.cover_sticker_id) : undefined,
description: payload.description,
bannerAssetId: payload.banner_asset_id ? bot.transformers.snowflake(payload.banner_asset_id) : undefined,
};
return pack as Optionalize<typeof pack>;
}
export interface Sticker extends ReturnType<typeof transformSticker> {}
export interface StickerPack extends ReturnType<typeof transformStickerPack> {}

View File

@@ -169,6 +169,9 @@ export const endpoints = {
// Stage instances
STAGE_INSTANCES: `${baseEndpoints.BASE_URL}/stage-instances`,
STAGE_INSTANCE: (channelId: bigint) => `${baseEndpoints.BASE_URL}/stage-instances/${channelId}`,
// Misc Endpoints
NITRO_STICKER_PACKS: `${baseEndpoints.BASE_URL}/sticker-packs`,
};
export const SLASH_COMMANDS_NAME_REGEX = /^[\w-]{1,32}$/;