-
-
Notifications
You must be signed in to change notification settings - Fork 100
/
editWelcomeScreen.ts
64 lines (60 loc) · 2.16 KB
/
editWelcomeScreen.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import type { Bot } from "../../bot.ts";
import { WelcomeScreen } from "../../transformers/welcomeScreen.ts";
import { DiscordWelcomeScreen } from "../../types/discord.ts";
import { BigString } from "../../types/shared.ts";
/**
* Edits a guild's welcome screen.
*
* @param bot - The bot instance to use to make the request.
* @param guildId - The ID of the guild to edit the welcome screen of.
* @param options - The parameters for the edit of the welcome screen.
* @returns An instance of the edited {@link WelcomeScreen}.
*
* @remarks
* Requires the `MANAGE_GUILD` permission.
*
* Fires a _Guild Update_ gateway event.
*
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-welcome-screen}
*/
export async function editWelcomeScreen(
bot: Bot,
guildId: BigString,
options: ModifyGuildWelcomeScreen,
): Promise<WelcomeScreen> {
const result = await bot.rest.runMethod<DiscordWelcomeScreen>(
bot.rest,
"PATCH",
bot.constants.routes.GUILD_WELCOME_SCREEN(guildId),
{
enabled: options.enabled,
welcome_screen: options.welcomeScreen?.map((welcomeScreen) => ({
channel_id: welcomeScreen.channelId,
description: welcomeScreen.description,
emoji_id: welcomeScreen.emojiId,
emoji_name: welcomeScreen.emojiName,
})),
description: options.description,
},
);
return bot.transformers.welcomeScreen(bot, result);
}
/** https://discord.com/developers/docs/resources/guild#modify-guild-welcome-screen */
export interface ModifyGuildWelcomeScreen {
/** Whether the welcome screen is enabled */
enabled?: boolean | null;
/** Channels linked in the welcome screen and their display options */
welcomeScreen?: WelcomeScreenChannel[] | null;
/** The server description to show in the welcome screen */
description?: string | null;
}
export interface WelcomeScreenChannel {
/** The channel's id */
channelId: BigString;
/** The emoji id, if the emoji is custom */
emojiId?: BigString;
/** The emoji name if custom, the unicode character if standard, or `null` if no emoji is set */
emojiName?: string;
/** The description shown for the channel */
description: string;
}