mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-13 18:13:29 +01:00
chore: use descriptive type parameter names (#9937)
* chore: use descriptive type parameter names * refactor: requested changes --------- Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
@@ -4,20 +4,23 @@ import type { Snowflake } from 'discord-api-types/globals';
|
||||
/**
|
||||
* Wraps the content inside a code block with no language.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function codeBlock<C extends string>(content: C): `\`\`\`\n${C}\n\`\`\``;
|
||||
export function codeBlock<Content extends string>(content: Content): `\`\`\`\n${Content}\n\`\`\``;
|
||||
|
||||
/**
|
||||
* Wraps the content inside a code block with the specified language.
|
||||
*
|
||||
* @typeParam L - This is inferred by the supplied language
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Language - This is inferred by the supplied language
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param language - The language for the code block
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function codeBlock<L extends string, C extends string>(language: L, content: C): `\`\`\`${L}\n${C}\n\`\`\``;
|
||||
export function codeBlock<Language extends string, Content extends string>(
|
||||
language: Language,
|
||||
content: Content,
|
||||
): `\`\`\`${Language}\n${Content}\n\`\`\``;
|
||||
|
||||
export function codeBlock(language: string, content?: string): string {
|
||||
return content === undefined ? `\`\`\`\n${language}\n\`\`\`` : `\`\`\`${language}\n${content}\n\`\`\``;
|
||||
@@ -26,50 +29,50 @@ export function codeBlock(language: string, content?: string): string {
|
||||
/**
|
||||
* Wraps the content inside \`backticks\` which formats it as inline code.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function inlineCode<C extends string>(content: C): `\`${C}\`` {
|
||||
export function inlineCode<Content extends string>(content: Content): `\`${Content}\`` {
|
||||
return `\`${content}\``;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats the content into italic text.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function italic<C extends string>(content: C): `_${C}_` {
|
||||
export function italic<Content extends string>(content: Content): `_${Content}_` {
|
||||
return `_${content}_`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats the content into bold text.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function bold<C extends string>(content: C): `**${C}**` {
|
||||
export function bold<Content extends string>(content: Content): `**${Content}**` {
|
||||
return `**${content}**`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats the content into underscored text.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function underscore<C extends string>(content: C): `__${C}__` {
|
||||
export function underscore<Content extends string>(content: Content): `__${Content}__` {
|
||||
return `__${content}__`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats the content into strike-through text.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function strikethrough<C extends string>(content: C): `~~${C}~~` {
|
||||
export function strikethrough<Content extends string>(content: Content): `~~${Content}~~` {
|
||||
return `~~${content}~~`;
|
||||
}
|
||||
|
||||
@@ -77,10 +80,10 @@ export function strikethrough<C extends string>(content: C): `~~${C}~~` {
|
||||
* Formats the content into a quote.
|
||||
*
|
||||
* @remarks This needs to be at the start of the line for Discord to format it.
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function quote<C extends string>(content: C): `> ${C}` {
|
||||
export function quote<Content extends string>(content: Content): `> ${Content}` {
|
||||
return `> ${content}`;
|
||||
}
|
||||
|
||||
@@ -88,20 +91,20 @@ export function quote<C extends string>(content: C): `> ${C}` {
|
||||
* Formats the content into a block quote.
|
||||
*
|
||||
* @remarks This needs to be at the start of the line for Discord to format it.
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function blockQuote<C extends string>(content: C): `>>> ${C}` {
|
||||
export function blockQuote<Content extends string>(content: Content): `>>> ${Content}` {
|
||||
return `>>> ${content}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps the URL into `<>` which stops it from embedding.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param url - The URL to wrap
|
||||
*/
|
||||
export function hideLinkEmbed<C extends string>(url: C): `<${C}>`;
|
||||
export function hideLinkEmbed<Content extends string>(url: Content): `<${Content}>`;
|
||||
|
||||
/**
|
||||
* Wraps the URL into `<>` which stops it from embedding.
|
||||
@@ -117,52 +120,55 @@ export function hideLinkEmbed(url: URL | string) {
|
||||
/**
|
||||
* Formats the content and the URL into a masked URL.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to display
|
||||
* @param url - The URL the content links to
|
||||
*/
|
||||
export function hyperlink<C extends string>(content: C, url: URL): `[${C}](${string})`;
|
||||
export function hyperlink<Content extends string>(content: Content, url: URL): `[${Content}](${string})`;
|
||||
|
||||
/**
|
||||
* Formats the content and the URL into a masked URL.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam U - This is inferred by the supplied URL
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @typeParam Url - This is inferred by the supplied URL
|
||||
* @param content - The content to display
|
||||
* @param url - The URL the content links to
|
||||
*/
|
||||
export function hyperlink<C extends string, U extends string>(content: C, url: U): `[${C}](${U})`;
|
||||
export function hyperlink<Content extends string, Url extends string>(
|
||||
content: Content,
|
||||
url: Url,
|
||||
): `[${Content}](${Url})`;
|
||||
|
||||
/**
|
||||
* Formats the content and the URL into a masked URL with a custom tooltip.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam T - This is inferred by the supplied title
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @typeParam Title - This is inferred by the supplied title
|
||||
* @param content - The content to display
|
||||
* @param url - The URL the content links to
|
||||
* @param title - The title shown when hovering on the masked link
|
||||
*/
|
||||
export function hyperlink<C extends string, T extends string>(
|
||||
content: C,
|
||||
export function hyperlink<Content extends string, Title extends string>(
|
||||
content: Content,
|
||||
url: URL,
|
||||
title: T,
|
||||
): `[${C}](${string} "${T}")`;
|
||||
title: Title,
|
||||
): `[${Content}](${string} "${Title}")`;
|
||||
|
||||
/**
|
||||
* Formats the content and the URL into a masked URL with a custom tooltip.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam U - This is inferred by the supplied URL
|
||||
* @typeParam T - This is inferred by the supplied title
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @typeParam Url - This is inferred by the supplied URL
|
||||
* @typeParam Title - This is inferred by the supplied title
|
||||
* @param content - The content to display
|
||||
* @param url - The URL the content links to
|
||||
* @param title - The title shown when hovering on the masked link
|
||||
*/
|
||||
export function hyperlink<C extends string, U extends string, T extends string>(
|
||||
content: C,
|
||||
url: U,
|
||||
title: T,
|
||||
): `[${C}](${U} "${T}")`;
|
||||
export function hyperlink<Content extends string, Url extends string, Title extends string>(
|
||||
content: Content,
|
||||
url: Url,
|
||||
title: Title,
|
||||
): `[${Content}](${Url} "${Title}")`;
|
||||
|
||||
export function hyperlink(content: string, url: URL | string, title?: string) {
|
||||
return title ? `[${content}](${url} "${title}")` : `[${content}](${url})`;
|
||||
@@ -171,102 +177,114 @@ export function hyperlink(content: string, url: URL | string, title?: string) {
|
||||
/**
|
||||
* Formats the content into a spoiler.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
*/
|
||||
export function spoiler<C extends string>(content: C): `||${C}||` {
|
||||
export function spoiler<Content extends string>(content: Content): `||${Content}||` {
|
||||
return `||${content}||`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a user id into a user mention.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied user id
|
||||
* @typeParam UserId - This is inferred by the supplied user id
|
||||
* @param userId - The user id to format
|
||||
*/
|
||||
export function userMention<C extends Snowflake>(userId: C): `<@${C}>` {
|
||||
export function userMention<UserId extends Snowflake>(userId: UserId): `<@${UserId}>` {
|
||||
return `<@${userId}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a channel id into a channel mention.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied channel id
|
||||
* @typeParam ChannelId - This is inferred by the supplied channel id
|
||||
* @param channelId - The channel id to format
|
||||
*/
|
||||
export function channelMention<C extends Snowflake>(channelId: C): `<#${C}>` {
|
||||
export function channelMention<ChannelId extends Snowflake>(channelId: ChannelId): `<#${ChannelId}>` {
|
||||
return `<#${channelId}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a role id into a role mention.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied role id
|
||||
* @typeParam RoleId - This is inferred by the supplied role id
|
||||
* @param roleId - The role id to format
|
||||
*/
|
||||
export function roleMention<C extends Snowflake>(roleId: C): `<@&${C}>` {
|
||||
export function roleMention<RoleId extends Snowflake>(roleId: RoleId): `<@&${RoleId}>` {
|
||||
return `<@&${roleId}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats an application command name, subcommand group name, subcommand name, and id into an application command mention.
|
||||
*
|
||||
* @typeParam N - This is inferred by the supplied command name
|
||||
* @typeParam G - This is inferred by the supplied subcommand group name
|
||||
* @typeParam S - This is inferred by the supplied subcommand name
|
||||
* @typeParam I - This is inferred by the supplied command id
|
||||
* @typeParam CommandName - This is inferred by the supplied command name
|
||||
* @typeParam SubcommandGroupName - This is inferred by the supplied subcommand group name
|
||||
* @typeParam SubcommandName - This is inferred by the supplied subcommand name
|
||||
* @typeParam CommandId - This is inferred by the supplied command id
|
||||
* @param commandName - The application command name to format
|
||||
* @param subcommandGroupName - The subcommand group name to format
|
||||
* @param subcommandName - The subcommand name to format
|
||||
* @param commandId - The application command id to format
|
||||
*/
|
||||
export function chatInputApplicationCommandMention<
|
||||
N extends string,
|
||||
G extends string,
|
||||
S extends string,
|
||||
I extends Snowflake,
|
||||
>(commandName: N, subcommandGroupName: G, subcommandName: S, commandId: I): `</${N} ${G} ${S}:${I}>`;
|
||||
CommandName extends string,
|
||||
SubcommandGroupName extends string,
|
||||
SubcommandName extends string,
|
||||
CommandId extends Snowflake,
|
||||
>(
|
||||
commandName: CommandName,
|
||||
subcommandGroupName: SubcommandGroupName,
|
||||
subcommandName: SubcommandName,
|
||||
commandId: CommandId,
|
||||
): `</${CommandName} ${SubcommandGroupName} ${SubcommandName}:${CommandId}>`;
|
||||
|
||||
/**
|
||||
* Formats an application command name, subcommand name, and id into an application command mention.
|
||||
*
|
||||
* @typeParam N - This is inferred by the supplied command name
|
||||
* @typeParam S - This is inferred by the supplied subcommand name
|
||||
* @typeParam I - This is inferred by the supplied command id
|
||||
* @typeParam CommandName - This is inferred by the supplied command name
|
||||
* @typeParam SubcommandName - This is inferred by the supplied subcommand name
|
||||
* @typeParam CommandId - This is inferred by the supplied command id
|
||||
* @param commandName - The application command name to format
|
||||
* @param subcommandName - The subcommand name to format
|
||||
* @param commandId - The application command id to format
|
||||
*/
|
||||
export function chatInputApplicationCommandMention<N extends string, S extends string, I extends Snowflake>(
|
||||
commandName: N,
|
||||
subcommandName: S,
|
||||
commandId: I,
|
||||
): `</${N} ${S}:${I}>`;
|
||||
export function chatInputApplicationCommandMention<
|
||||
CommandName extends string,
|
||||
SubcommandName extends string,
|
||||
CommandId extends Snowflake,
|
||||
>(
|
||||
commandName: CommandName,
|
||||
subcommandName: SubcommandName,
|
||||
commandId: CommandId,
|
||||
): `</${CommandName} ${SubcommandName}:${CommandId}>`;
|
||||
|
||||
/**
|
||||
* Formats an application command name and id into an application command mention.
|
||||
*
|
||||
* @typeParam N - This is inferred by the supplied command name
|
||||
* @typeParam I - This is inferred by the supplied command id
|
||||
* @typeParam CommandName - This is inferred by the supplied command name
|
||||
* @typeParam CommandId - This is inferred by the supplied command id
|
||||
* @param commandName - The application command name to format
|
||||
* @param commandId - The application command id to format
|
||||
*/
|
||||
export function chatInputApplicationCommandMention<N extends string, I extends Snowflake>(
|
||||
commandName: N,
|
||||
commandId: I,
|
||||
): `</${N}:${I}>`;
|
||||
export function chatInputApplicationCommandMention<CommandName extends string, CommandId extends Snowflake>(
|
||||
commandName: CommandName,
|
||||
commandId: CommandId,
|
||||
): `</${CommandName}:${CommandId}>`;
|
||||
|
||||
export function chatInputApplicationCommandMention<
|
||||
N extends string,
|
||||
G extends Snowflake | string,
|
||||
S extends Snowflake | string,
|
||||
I extends Snowflake,
|
||||
CommandName extends string,
|
||||
SubcommandGroupName extends Snowflake | string,
|
||||
SubcommandName extends Snowflake | string,
|
||||
CommandId extends Snowflake,
|
||||
>(
|
||||
commandName: N,
|
||||
subcommandGroupName: G,
|
||||
subcommandName?: S,
|
||||
commandId?: I,
|
||||
): `</${N} ${G} ${S}:${I}>` | `</${N} ${G}:${S}>` | `</${N}:${G}>` {
|
||||
commandName: CommandName,
|
||||
subcommandGroupName: SubcommandGroupName,
|
||||
subcommandName?: SubcommandName,
|
||||
commandId?: CommandId,
|
||||
):
|
||||
| `</${CommandName} ${SubcommandGroupName} ${SubcommandName}:${CommandId}>`
|
||||
| `</${CommandName} ${SubcommandGroupName}:${SubcommandName}>`
|
||||
| `</${CommandName}:${SubcommandGroupName}>` {
|
||||
if (commandId !== undefined) {
|
||||
return `</${commandName} ${subcommandGroupName} ${subcommandName!}:${commandId}>`;
|
||||
}
|
||||
@@ -281,95 +299,105 @@ export function chatInputApplicationCommandMention<
|
||||
/**
|
||||
* Formats a non-animated emoji id into a fully qualified emoji identifier.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied emoji id
|
||||
* @typeParam EmojiId - This is inferred by the supplied emoji id
|
||||
* @param emojiId - The emoji id to format
|
||||
*/
|
||||
export function formatEmoji<C extends Snowflake>(emojiId: C, animated?: false): `<:_:${C}>`;
|
||||
export function formatEmoji<EmojiId extends Snowflake>(emojiId: EmojiId, animated?: false): `<:_:${EmojiId}>`;
|
||||
|
||||
/**
|
||||
* Formats an animated emoji id into a fully qualified emoji identifier.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied emoji id
|
||||
* @typeParam EmojiId - This is inferred by the supplied emoji id
|
||||
* @param emojiId - The emoji id to format
|
||||
* @param animated - Whether the emoji is animated
|
||||
*/
|
||||
export function formatEmoji<C extends Snowflake>(emojiId: C, animated?: true): `<a:_:${C}>`;
|
||||
export function formatEmoji<EmojiId extends Snowflake>(emojiId: EmojiId, animated?: true): `<a:_:${EmojiId}>`;
|
||||
|
||||
/**
|
||||
* Formats an emoji id into a fully qualified emoji identifier.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied emoji id
|
||||
* @typeParam EmojiId - This is inferred by the supplied emoji id
|
||||
* @param emojiId - The emoji id to format
|
||||
* @param animated - Whether the emoji is animated
|
||||
*/
|
||||
export function formatEmoji<C extends Snowflake>(emojiId: C, animated?: boolean): `<:_:${C}>` | `<a:_:${C}>`;
|
||||
export function formatEmoji<EmojiId extends Snowflake>(
|
||||
emojiId: EmojiId,
|
||||
animated?: boolean,
|
||||
): `<:_:${EmojiId}>` | `<a:_:${EmojiId}>`;
|
||||
|
||||
export function formatEmoji<C extends Snowflake>(emojiId: C, animated = false): `<:_:${C}>` | `<a:_:${C}>` {
|
||||
export function formatEmoji<EmojiId extends Snowflake>(
|
||||
emojiId: EmojiId,
|
||||
animated = false,
|
||||
): `<:_:${EmojiId}>` | `<a:_:${EmojiId}>` {
|
||||
return `<${animated ? 'a' : ''}:_:${emojiId}>`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a channel link for a direct message channel.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied channel id
|
||||
* @typeParam ChannelId - This is inferred by the supplied channel id
|
||||
* @param channelId - The channel's id
|
||||
*/
|
||||
export function channelLink<C extends Snowflake>(channelId: C): `https://discord.com/channels/@me/${C}`;
|
||||
export function channelLink<ChannelId extends Snowflake>(
|
||||
channelId: ChannelId,
|
||||
): `https://discord.com/channels/@me/${ChannelId}`;
|
||||
|
||||
/**
|
||||
* Formats a channel link for a guild channel.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied channel id
|
||||
* @typeParam G - This is inferred by the supplied guild id
|
||||
* @typeParam ChannelId - This is inferred by the supplied channel id
|
||||
* @typeParam GuildId - This is inferred by the supplied guild id
|
||||
* @param channelId - The channel's id
|
||||
* @param guildId - The guild's id
|
||||
*/
|
||||
export function channelLink<C extends Snowflake, G extends Snowflake>(
|
||||
channelId: C,
|
||||
guildId: G,
|
||||
): `https://discord.com/channels/${G}/${C}`;
|
||||
export function channelLink<ChannelId extends Snowflake, GuildId extends Snowflake>(
|
||||
channelId: ChannelId,
|
||||
guildId: GuildId,
|
||||
): `https://discord.com/channels/${GuildId}/${ChannelId}`;
|
||||
|
||||
export function channelLink<C extends Snowflake, G extends Snowflake>(
|
||||
channelId: C,
|
||||
guildId?: G,
|
||||
): `https://discord.com/channels/@me/${C}` | `https://discord.com/channels/${G}/${C}` {
|
||||
export function channelLink<ChannelId extends Snowflake, GuildId extends Snowflake>(
|
||||
channelId: ChannelId,
|
||||
guildId?: GuildId,
|
||||
): `https://discord.com/channels/@me/${ChannelId}` | `https://discord.com/channels/${GuildId}/${ChannelId}` {
|
||||
return `https://discord.com/channels/${guildId ?? '@me'}/${channelId}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a message link for a direct message channel.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied channel id
|
||||
* @typeParam M - This is inferred by the supplied message id
|
||||
* @typeParam ChannelId - This is inferred by the supplied channel id
|
||||
* @typeParam MessageId - This is inferred by the supplied message id
|
||||
* @param channelId - The channel's id
|
||||
* @param messageId - The message's id
|
||||
*/
|
||||
export function messageLink<C extends Snowflake, M extends Snowflake>(
|
||||
channelId: C,
|
||||
messageId: M,
|
||||
): `https://discord.com/channels/@me/${C}/${M}`;
|
||||
export function messageLink<ChannelId extends Snowflake, MessageId extends Snowflake>(
|
||||
channelId: ChannelId,
|
||||
messageId: MessageId,
|
||||
): `https://discord.com/channels/@me/${ChannelId}/${MessageId}`;
|
||||
|
||||
/**
|
||||
* Formats a message link for a guild channel.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied channel id
|
||||
* @typeParam M - This is inferred by the supplied message id
|
||||
* @typeParam G - This is inferred by the supplied guild id
|
||||
* @typeParam ChannelId - This is inferred by the supplied channel id
|
||||
* @typeParam MessageId - This is inferred by the supplied message id
|
||||
* @typeParam GuildId - This is inferred by the supplied guild id
|
||||
* @param channelId - The channel's id
|
||||
* @param messageId - The message's id
|
||||
* @param guildId - The guild's id
|
||||
*/
|
||||
export function messageLink<C extends Snowflake, M extends Snowflake, G extends Snowflake>(
|
||||
channelId: C,
|
||||
messageId: M,
|
||||
guildId: G,
|
||||
): `https://discord.com/channels/${G}/${C}/${M}`;
|
||||
export function messageLink<ChannelId extends Snowflake, MessageId extends Snowflake, GuildId extends Snowflake>(
|
||||
channelId: ChannelId,
|
||||
messageId: MessageId,
|
||||
guildId: GuildId,
|
||||
): `https://discord.com/channels/${GuildId}/${ChannelId}/${MessageId}`;
|
||||
|
||||
export function messageLink<C extends Snowflake, M extends Snowflake, G extends Snowflake>(
|
||||
channelId: C,
|
||||
messageId: M,
|
||||
guildId?: G,
|
||||
): `https://discord.com/channels/@me/${C}/${M}` | `https://discord.com/channels/${G}/${C}/${M}` {
|
||||
export function messageLink<ChannelId extends Snowflake, MessageId extends Snowflake, GuildId extends Snowflake>(
|
||||
channelId: ChannelId,
|
||||
messageId: MessageId,
|
||||
guildId?: GuildId,
|
||||
):
|
||||
| `https://discord.com/channels/@me/${ChannelId}/${MessageId}`
|
||||
| `https://discord.com/channels/${GuildId}/${ChannelId}/${MessageId}` {
|
||||
return `${guildId === undefined ? channelLink(channelId) : channelLink(channelId, guildId)}/${messageId}`;
|
||||
}
|
||||
|
||||
@@ -394,29 +422,29 @@ export enum HeadingLevel {
|
||||
/**
|
||||
* Formats the content into a heading level.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
* @param level - The heading level
|
||||
*/
|
||||
export function heading<C extends string>(content: C, level?: HeadingLevel.One): `# ${C}`;
|
||||
export function heading<Content extends string>(content: Content, level?: HeadingLevel.One): `# ${Content}`;
|
||||
|
||||
/**
|
||||
* Formats the content into a heading level.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
* @param level - The heading level
|
||||
*/
|
||||
export function heading<C extends string>(content: C, level: HeadingLevel.Two): `## ${C}`;
|
||||
export function heading<Content extends string>(content: Content, level: HeadingLevel.Two): `## ${Content}`;
|
||||
|
||||
/**
|
||||
* Formats the content into a heading level.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied content
|
||||
* @typeParam Content - This is inferred by the supplied content
|
||||
* @param content - The content to wrap
|
||||
* @param level - The heading level
|
||||
*/
|
||||
export function heading<C extends string>(content: C, level: HeadingLevel.Three): `### ${C}`;
|
||||
export function heading<Content extends string>(content: Content, level: HeadingLevel.Three): `### ${Content}`;
|
||||
|
||||
export function heading(content: string, level?: HeadingLevel) {
|
||||
switch (level) {
|
||||
@@ -432,7 +460,7 @@ export function heading(content: string, level?: HeadingLevel) {
|
||||
/**
|
||||
* A type that recursively traverses into arrays.
|
||||
*/
|
||||
export type RecursiveArray<T> = readonly (RecursiveArray<T> | T)[];
|
||||
export type RecursiveArray<ItemType> = readonly (ItemType | RecursiveArray<ItemType>)[];
|
||||
|
||||
/**
|
||||
* Callback function for list formatters.
|
||||
@@ -476,29 +504,32 @@ export function time(date?: Date): `<t:${bigint}>`;
|
||||
/**
|
||||
* Formats a date given a format style.
|
||||
*
|
||||
* @typeParam S - This is inferred by the supplied {@link TimestampStylesString}
|
||||
* @typeParam Style - This is inferred by the supplied {@link TimestampStylesString}
|
||||
* @param date - The date to format
|
||||
* @param style - The style to use
|
||||
*/
|
||||
export function time<S extends TimestampStylesString>(date: Date, style: S): `<t:${bigint}:${S}>`;
|
||||
export function time<Style extends TimestampStylesString>(date: Date, style: Style): `<t:${bigint}:${Style}>`;
|
||||
|
||||
/**
|
||||
* Formats the given timestamp into a short date-time string.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied timestamp
|
||||
* @typeParam Seconds - This is inferred by the supplied timestamp
|
||||
* @param seconds - A Unix timestamp in seconds
|
||||
*/
|
||||
export function time<C extends number>(seconds: C): `<t:${C}>`;
|
||||
export function time<Seconds extends number>(seconds: Seconds): `<t:${Seconds}>`;
|
||||
|
||||
/**
|
||||
* Formats the given timestamp into a short date-time string.
|
||||
*
|
||||
* @typeParam C - This is inferred by the supplied timestamp
|
||||
* @typeParam S - This is inferred by the supplied {@link TimestampStylesString}
|
||||
* @typeParam Seconds - This is inferred by the supplied timestamp
|
||||
* @typeParam Style - This is inferred by the supplied {@link TimestampStylesString}
|
||||
* @param seconds - A Unix timestamp in seconds
|
||||
* @param style - The style to use
|
||||
*/
|
||||
export function time<C extends number, S extends TimestampStylesString>(seconds: C, style: S): `<t:${C}:${S}>`;
|
||||
export function time<Seconds extends number, Style extends TimestampStylesString>(
|
||||
seconds: Seconds,
|
||||
style: Style,
|
||||
): `<t:${Seconds}:${Style}>`;
|
||||
|
||||
export function time(timeOrSeconds?: Date | number, style?: TimestampStylesString): string {
|
||||
if (typeof timeOrSeconds !== 'number') {
|
||||
|
||||
Reference in New Issue
Block a user