@ayanaware/bentocord
Version:
Bentocord is a Bento plugin designed to rapidly build fully functional Discord Bots.
132 lines (131 loc) • 5.82 kB
TypeScript
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>;
}