@novelbrasil/discord.js-embed-menu
Version:
Easily create Discord.js embed menus with reactions and unlimited customisable pages.
50 lines (49 loc) • 1.81 kB
TypeScript
import { EventEmitter } from 'events';
import { User, Message, EmbedBuilder, ReactionCollector, BaseInteraction, TextBasedChannel, CommandInteraction, InteractionResponse, MessageComponentInteraction } from 'discord.js';
import { ButtonType, DiscordEmbedMenuPage } from './discord_embed_menu_page';
type DiscordEmbedMenuType = {
name: string;
content: EmbedBuilder;
reactions: {
[key: string]: string;
};
buttons?: Record<string, ButtonType>;
index: number;
};
type StartOptions = {
send: boolean;
followUp: boolean;
reply: boolean;
};
export declare class DiscordEmbedMenu extends EventEmitter {
private static readonly REQUIRED_PERMS;
private static LOADING_MESSAGE;
interaction: CommandInteraction;
channel: TextBasedChannel;
user: User;
pages: any[];
timeout: number;
deleteOnTimeout: boolean;
mention: boolean;
keepUserReactionOnStop: boolean;
loadingMessage: string;
private isDM;
private userTag;
currentPage: DiscordEmbedMenuPage;
pageIndex: number;
menu: Message | InteractionResponse | null;
reactionCollector: ReactionCollector | null;
componentCollector: MessageComponentInteraction | null;
data: any;
constructor(interaction: BaseInteraction, pages: (DiscordEmbedMenuType | DiscordEmbedMenuPage)[], timeout?: number, deleteOnTimeout?: boolean, mention?: boolean, keepUserReactionOnStop?: boolean, loadingMessage?: string);
start(options: StartOptions): Promise<void>;
stop(): Promise<void | Message>;
delete(): Promise<void | Message>;
private clearReactions;
setPage(page?: number | string, options?: StartOptions): Promise<void>;
private addReactions;
private stopReactions;
private awaitButtons;
private awaitReactions;
}
export {};