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 { 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; /** * Check if command author is a owner */ isBotOwner(): Promise; /** * Format a number based on who/where ran * @param num Number * @returns */ formatNumber(num: number): Promise; /** * Format a date based on who/where ran * @param date Date * @returns Formatted date */ formatDate(date: Date): Promise; /** * 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, backup?: string): Promise; formatTranslation(translatable: Translatable): Promise; /** * 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(content: PossiblyTranslatable | AgnosticMessageContent, validator?: PromptValidator, options?: PromptOptions): Promise; /** * Prompt command author for extra confirmation * @param content details about what they are confirming * @returns boolean */ confirm(content?: PossiblyTranslatable | AgnosticMessageContent, items?: AnyPaginator | CodeblockPaginatorItems): Promise; /** * Show a pagination UI * @param items Array of items * @param content details about what they are seeing * @param options PaginationOptions * @returns */ pagination(items: AnyPaginator | CodeblockPaginatorItems, content?: PossiblyTranslatable | AgnosticMessageContent, options?: PaginationOptions): Promise; /** * 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(choices: AnyPaginator | CodeblockPaginatorItems, content?: PossiblyTranslatable | AgnosticMessageContent, options?: PaginationOptions): Promise; getResponse(): Promise; createResponse(response: C, files?: Array): Promise; editResponse(response: C, files?: Array): Promise; deleteResponse(): Promise; /** * Send translated response, getTranstion & createResponse * @param key Translation Key * @param repl Replacements * @param backup Backup * @returns Message/Interaction */ createTranslatedResponse(key: string, repl?: Record, backup?: string, content?: AgnosticMessageContent): Promise; /** * Edit translation response * @param key Translation Key * @param repl Replacements * @param backup Backup * @returns Message/Interaction */ editTranslatedResponse(key: string, repl?: Record, backup?: string, content?: AgnosticMessageContent): Promise; createMessage(content: C, files?: Array): Promise; editMessage(messageId: string, content: C, files?: Array): Promise; deleteMessage(messageId: string): Promise; createTranslatedMessage(key: string, repl?: Record, backup?: string, content?: AgnosticMessageContent): Promise; editTranslatedMessage(messageId: string, key: string, repl?: Record, backup?: string, content?: AgnosticMessageContent): Promise; }