@tycrek/discord-hookr
Version:
A lightweight and easy way to send webhooks to Discord, without the added baggage of a full API client.
125 lines (124 loc) • 3.63 kB
TypeScript
/**
* @see https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure
* @see https://discord.com/developers/docs/resources/channel#embed-object-embed-video-structure
* @see https://discord.com/developers/docs/resources/channel#embed-object-embed-thumbnail-structure
*/
export type MediaItem = {
url: string;
/**
* Please note that as of 2022-12-23, Webhooks DO NOT support the proxy_url field.
* @deprecated
* @see https://discord.com/developers/docs/resources/webhook#execute-webhook-jsonform-params
*/
proxy_url?: string;
/**
* Please note that as of 2022-12-23, Webhooks DO NOT support the height field.
* @deprecated
* @see https://discord.com/developers/docs/resources/webhook#execute-webhook-jsonform-params
*/
height?: number;
/**
* Please note that as of 2022-12-23, Webhooks DO NOT support the width field.
* @deprecated
* @see https://discord.com/developers/docs/resources/webhook#execute-webhook-jsonform-params
*/
width?: number;
};
/**
* @see https://discord.com/developers/docs/resources/channel#embed-object-embed-field-structure
*/
export type Field = {
name: string;
value: string;
inline?: boolean;
};
/**
* @see https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure
*/
export type Footer = {
text: string;
icon_url?: string;
proxy_icon_url?: string;
};
/**
* Please note that as of 2022-12-23, Webhooks DO NOT support the Provider field.
* @see https://discord.com/developers/docs/resources/channel#embed-object-embed-provider-structure
* @deprecated
*/
export type Provider = {
name?: string;
url?: string;
};
/**
* @see https://discord.com/developers/docs/resources/channel#embed-object-embed-author-structure
*/
export type Author = {
name?: string;
url?: string;
icon_url?: string;
proxy_icon_url?: string;
};
/**
* @see https://discord.com/developers/docs/resources/channel#allowed-mentions-object
*/
export type AllowedMention = {
parse?: ('roles' | 'users' | 'everyone')[];
roles?: string[];
users?: string[];
replied_user?: boolean;
};
/**
* @see https://discord.com/developers/docs/resources/channel#embed-object
*/
export interface Embed {
title?: string;
/**
* @deprecated
*/
type?: 'rich' | 'image' | 'video' | 'gifv' | 'article' | 'link';
description?: string;
url?: string;
timestamp?: string | Date;
color?: number;
image?: MediaItem;
video?: MediaItem;
thumbnail?: MediaItem;
footer?: Footer;
provider?: Provider;
author?: Author;
fields?: Field[];
}
/**
* @see https://discord.com/developers/docs/resources/channel#attachment-object
*/
export interface Attachment {
id: string;
filename: string;
description?: string;
content_type?: string;
size: number;
url: string;
proxy_url?: string;
height?: number;
width?: number;
ephemeral?: boolean;
}
/**
* @see https://discord.com/developers/docs/resources/webhook#execute-webhook-jsonform-params
*/
export interface Payload {
/**
* One of either content, embeds, or file must be set
*/
content?: string;
embeds?: Embed[];
username?: string;
avatar_url?: string;
tts?: boolean;
allowed_mentions?: AllowedMention;
components?: any[];
payload_json?: string;
attachments?: Attachment[];
flags?: number;
thread_name?: string;
}