diff --git a/bot.ts b/bot.ts index 1b0305edf..f1810a719 100644 --- a/bot.ts +++ b/bot.ts @@ -65,6 +65,7 @@ import { transformApplicationCommand } from "./transformers/applicationCommand.t import { transformWelcomeScreen } from "./transformers/welcomeScreen.ts"; import { transformVoiceRegion } from "./transformers/voiceRegion.ts"; import { transformWidget } from "./transformers/widget.ts"; +import { transformWidgetSettings } from "./transformers/widgetSettings.ts"; import { transformStageInstance } from "./transformers/stageInstance.ts"; import { StickerPack, transformSticker, transformStickerPack } from "./transformers/sticker.ts"; import { GetGatewayBot, transformGatewayBot } from "./transformers/gatewayBot.ts"; @@ -93,6 +94,7 @@ import { DiscordGuild, DiscordGuildApplicationCommandPermissions, DiscordGuildWidget, + DiscordGuildWidgetSettings, DiscordIntegrationCreateUpdate, DiscordInteraction, DiscordInviteCreate, @@ -126,6 +128,7 @@ import { ApplicationCommandPermission } from "./transformers/applicationCommandP import { WelcomeScreen } from "./transformers/welcomeScreen.ts"; import { VoiceRegions } from "./transformers/voiceRegion.ts"; import { GuildWidget } from "./transformers/widget.ts"; +import { GuildWidgetSettings } from "./transformers/widgetSettings.ts"; import { StageInstance } from "./transformers/stageInstance.ts"; import { Sticker } from "./transformers/sticker.ts"; import { @@ -424,6 +427,7 @@ export interface Transformers { welcomeScreen: (bot: Bot, payload: DiscordWelcomeScreen) => WelcomeScreen; voiceRegion: (bot: Bot, payload: DiscordVoiceRegion) => VoiceRegions; widget: (bot: Bot, payload: DiscordGuildWidget) => GuildWidget; + widgetSettings: (bot: Bot, payload: DiscordGuildWidgetSettings) => GuildWidgetSettings; stageInstance: (bot: Bot, payload: DiscordStageInstance) => StageInstance; sticker: (bot: Bot, payload: DiscordSticker) => Sticker; stickerPack: (bot: Bot, payload: DiscordStickerPack) => StickerPack; @@ -473,6 +477,7 @@ export function createTransformers(options: Partial) { welcomeScreen: options.welcomeScreen || transformWelcomeScreen, voiceRegion: options.voiceRegion || transformVoiceRegion, widget: options.widget || transformWidget, + widgetSettings: options.widgetSettings || transformWidgetSettings, stageInstance: options.stageInstance || transformStageInstance, sticker: options.sticker || transformSticker, stickerPack: options.stickerPack || transformStickerPack, diff --git a/helpers/guilds/editWidget.ts b/helpers/guilds/editWidget.ts index ee7104b19..2e88dbb16 100644 --- a/helpers/guilds/editWidget.ts +++ b/helpers/guilds/editWidget.ts @@ -1,9 +1,9 @@ import type { Bot } from "../../bot.ts"; -import { DiscordGuildWidget } from "../../types/discord.ts"; +import { DiscordGuildWidgetSettings } from "../../types/discord.ts"; /** Modify a guild widget object for the guild. Requires the MANAGE_GUILD permission. */ export async function editWidget(bot: Bot, guildId: bigint, enabled: boolean, channelId?: string | null) { - const result = await bot.rest.runMethod( + const result = await bot.rest.runMethod( bot.rest, "patch", bot.constants.endpoints.GUILD_WIDGET(guildId), @@ -13,5 +13,5 @@ export async function editWidget(bot: Bot, guildId: bigint, enabled: boolean, ch }, ); - return bot.transformers.widget(bot, result); + return bot.transformers.widgetSettings(bot, result); } diff --git a/helpers/guilds/getWidgetSettings.ts b/helpers/guilds/getWidgetSettings.ts index a4980f6ae..ea76b9a4e 100644 --- a/helpers/guilds/getWidgetSettings.ts +++ b/helpers/guilds/getWidgetSettings.ts @@ -1,13 +1,13 @@ import type { Bot } from "../../bot.ts"; -import { DiscordGuildWidget } from "../../types/discord.ts"; +import { DiscordGuildWidgetSettings } from "../../types/discord.ts"; -/** Returns the guild widget object. Requires the MANAGE_GUILD permission. */ +/** Returns a guild widget settings object. Requires the MANAGE_GUILD permission. */ export async function getWidgetSettings(bot: Bot, guildId: bigint) { - const result = await bot.rest.runMethod( + const result = await bot.rest.runMethod( bot.rest, "get", bot.constants.endpoints.GUILD_WIDGET(guildId), ); - return bot.transformers.widget(bot, result); + return bot.transformers.widgetSettings(bot, result); } diff --git a/transformers/mod.ts b/transformers/mod.ts index fdc1a649c..d373feda1 100644 --- a/transformers/mod.ts +++ b/transformers/mod.ts @@ -24,10 +24,11 @@ export * from "./scheduledEvent.ts"; export * from "./stageInstance.ts"; export * from "./sticker.ts"; export * from "./team.ts"; +export * from "./template.ts"; export * from "./threadMember.ts"; export * from "./voiceRegion.ts"; export * from "./voiceState.ts"; export * from "./webhook.ts"; export * from "./welcomeScreen.ts"; export * from "./widget.ts"; -export * from "./template.ts"; +export * from "./widgetSettings.ts"; diff --git a/transformers/widgetSettings.ts b/transformers/widgetSettings.ts new file mode 100644 index 000000000..2754e00c2 --- /dev/null +++ b/transformers/widgetSettings.ts @@ -0,0 +1,14 @@ +import { Bot } from "../bot.ts"; +import { DiscordGuildWidgetSettings } from "../types/discord.ts"; +import { Optionalize } from "../types/shared.ts"; + +export function transformWidgetSettings(bot: Bot, payload: DiscordGuildWidgetSettings) { + const widget = { + enabled: payload.enabled, + channelId: payload.channel_id ?? undefined, + }; + + return widget as Optionalize; +} + +export interface GuildWidgetSettings extends ReturnType {} diff --git a/types/discord.ts b/types/discord.ts index 6ce3413f6..70f9fdba0 100644 --- a/types/discord.ts +++ b/types/discord.ts @@ -2230,6 +2230,13 @@ export interface DiscordVoiceRegion { custom: boolean; } +export interface DiscordGuildWidgetSettings { + /** whether the widget is enabled */ + enabled: boolean; + /** the widget channel id */ + channel_id: string | null; +} + export interface DiscordInstallParams { /** he scopes to add the application to the server with */ scopes: string[];