UNPKG

@ayanaware/bentocord

Version:

Bentocord is a Bento plugin designed to rapidly build fully functional Discord Bots.

132 lines (131 loc) 5.82 kB
import { EntityAPI } from '@ayanaware/bento'; import { ExtendedUser, FileContent, Guild, Member, Message, MessageContent, TextableChannel, User } from 'eris'; import { BentocordInterface } from '../BentocordInterface'; import { Discord } from '../discord/Discord'; import { DiscordPermission } from '../discord/constants/DiscordPermission'; import { AgnosticMessageContent } from '../interfaces/AgnosticMessageContent'; import { PossiblyTranslatable, Translatable } from '../interfaces/Translatable'; import { PaginationOptions } from '../prompt/PaginationPrompt'; import { PromptOptions, PromptValidator } from '../prompt/Prompt'; import { AnyPaginator } from '../prompt/helpers/AnyPaginator'; import { CodeblockPaginatorItems } from '../prompt/helpers/CodeblockPaginator'; export declare class BaseContext<C extends MessageContent = MessageContent> { readonly api: EntityAPI; channel: TextableChannel; get channelId(): string; user: User; get userId(): string; /** Member object if available */ member?: Member; /** @deprecated Use .user instead */ get author(): User; /** @deprecated Use .userId instead */ get authorId(): string; guild?: Guild; get guildId(): string; /** Bot's user object */ self: ExtendedUser; get selfId(): string; /** Bot's member object if available */ selfMember?: Member; readonly interface: BentocordInterface; readonly discord: Discord; responseId?: string; protected responseMessage?: Message; /** .prepare() must be called before this object is ready to be used */ constructor(api: EntityAPI, channel: TextableChannel, user: User); /** * Finishes preparing the context, handling async operations. */ prepare(): Promise<void>; /** * Check if command author is a owner */ isBotOwner(): Promise<boolean>; /** * Format a number based on who/where ran * @param num Number * @returns */ formatNumber(num: number): Promise<string>; /** * Format a date based on who/where ran * @param date Date * @returns Formatted date */ formatDate(date: Date): Promise<string>; /** * Format a translation based on who/where ran * @param key Translation Key * @param repl Translation Replacements * @param backup Translation Backup * @returns Formatted translation or null */ formatTranslation(key: string, repl?: Record<string, unknown>, backup?: string): Promise<string>; formatTranslation(translatable: Translatable): Promise<string>; /** * Check if the author has a Discord permission * @param permission DiscordPermission */ hasPermission(permission: DiscordPermission): boolean; /** * Check if the application has a Discord permission * @param permission DiscordPermission */ selfHasPermission(permission: DiscordPermission): boolean; /** * Prompt command invoker for additional input * @param content Message to display * @param validator Validate their input * @param options PromptOptions * @returns Validated input */ prompt<T = string>(content: PossiblyTranslatable | AgnosticMessageContent, validator?: PromptValidator<T>, options?: PromptOptions): Promise<T>; /** * Prompt command author for extra confirmation * @param content details about what they are confirming * @returns boolean */ confirm(content?: PossiblyTranslatable | AgnosticMessageContent, items?: AnyPaginator<void> | CodeblockPaginatorItems<void>): Promise<boolean>; /** * Show a pagination UI * @param items Array of items * @param content details about what they are seeing * @param options PaginationOptions * @returns */ pagination(items: AnyPaginator<void> | CodeblockPaginatorItems<void>, content?: PossiblyTranslatable | AgnosticMessageContent, options?: PaginationOptions): Promise<void>; /** * Prompt command author to select a choice * @param choices Array of PromptChoice * @param content details about what they are choosing * @param options PagiantionOptions * @returns Selected PromptChoice value */ choice<T = string>(choices: AnyPaginator<T> | CodeblockPaginatorItems<T>, content?: PossiblyTranslatable | AgnosticMessageContent, options?: PaginationOptions): Promise<T>; getResponse(): Promise<Message>; createResponse(response: C, files?: Array<FileContent>): Promise<void>; editResponse(response: C, files?: Array<FileContent>): Promise<void>; deleteResponse(): Promise<void>; /** * Send translated response, getTranstion & createResponse * @param key Translation Key * @param repl Replacements * @param backup Backup * @returns Message/Interaction */ createTranslatedResponse(key: string, repl?: Record<string, unknown>, backup?: string, content?: AgnosticMessageContent): Promise<unknown>; /** * Edit translation response * @param key Translation Key * @param repl Replacements * @param backup Backup * @returns Message/Interaction */ editTranslatedResponse(key: string, repl?: Record<string, unknown>, backup?: string, content?: AgnosticMessageContent): Promise<unknown>; createMessage(content: C, files?: Array<FileContent>): Promise<Message>; editMessage(messageId: string, content: C, files?: Array<FileContent>): Promise<Message>; deleteMessage(messageId: string): Promise<void>; createTranslatedMessage(key: string, repl?: Record<string, unknown>, backup?: string, content?: AgnosticMessageContent): Promise<Message>; editTranslatedMessage(messageId: string, key: string, repl?: Record<string, unknown>, backup?: string, content?: AgnosticMessageContent): Promise<Message>; }