UNPKG

@kotori-bot/core

Version:
178 lines (177 loc) 4.72 kB
import { type EventDataApiBase, type Message, type MessageQuick, type CommandResult, type EventDataPrivateMsg, type EventDataGroupMsg, type EventDataChannelMsg } from '../types'; import type { Adapter } from './adapter'; import { formatFactory } from '../utils/factory'; import { CommandError } from '../utils/error'; import type { Api } from './api'; import type { Elements } from './elements'; import type { I18n } from '@kotori-bot/i18n'; declare class SessionOrigin<T extends EventDataApiBase = EventDataApiBase> implements EventDataApiBase { /** * Api instance of current session. * * @readonly */ readonly api: Api; /** * Elements instance of current session. * * @readonly */ readonly el: Elements; /** * I18n instance of current session. * * @readonly */ readonly i18n: I18n; /** * Session unique id, generated base on `type`. `userId`, `groupId`, `guildId`, `channelId`. * * @readonly */ readonly id: string; /** * Send message to current session. * * @param message - Message to send * @returns Message id and sent time */ send(message: Message): Promise<import("../types").SendMessageResponse>; /** * Format message template with data. * * @param template - Message template * @param data - Data to format * @returns Formatted message */ readonly format: ReturnType<typeof formatFactory>; /** * Send message to current session, it's packed base on `session.send()`, `session.i18n` and `session.format()`. * * @param message - Message to send * @returns Message id and sent time * * @async */ quick(message: MessageQuick): Promise<void>; /** * Get message from current session. * * @param message - Message to get * @returns Message id and sent time */ json(message: unknown): Promise<import("../types").SendMessageResponse>; /** * Prompt message to current session. * * @param message - Message to prompt * @returns Message from current session * * @async */ prompt(message?: Message): Promise<Message>; /** * Confirm message to current session. * * @param options - Options to confirm * @returns Message from current session * * @async */ confirm(options?: { message: Message; sure: Message; }): Promise<boolean>; /** * Create a command error. * * @param type - Error type * @param data - Error data * @returns Command error */ error<K extends keyof CommandResult>(type: K, data?: CommandResult[K]): CommandError; readonly t: I18n['t']; /** * Session type * * @readonly */ readonly type: EventDataApiBase['type']; /** * Session time, milliseconds timestamp. * * @readonly */ readonly time: number; /** * Session related user id if exists. * * @readonly */ readonly userId?: string; /** * Session related operator id if exists. * * @readonly */ readonly operatorId?: string; /** * Session related message id if exists. * * @readonly */ readonly messageId?: string; /** * Session related group id if exists. * * @readonly */ readonly groupId?: string; /** * Session related channel id if exists. * * @readonly */ readonly channelId?: string; /** * Session related guild id if exists. * * @readonly */ readonly guildId?: string; /** * Session related meta data if exists, it is customized by the specific adapter. * * @readonly */ readonly meta?: EventDataApiBase['meta']; /** * Create a session instance. * * @param data - Session data * @param adapter - Adapter instance * * @constructor */ constructor(data: T, adapter: Adapter); } /** * Session instance. * * @class Session * @extends {SessionOrigin} * @template T */ export type Session<T extends EventDataApiBase = EventDataApiBase> = SessionOrigin<T> & T; export type SessionMsg = Session<EventDataPrivateMsg | EventDataGroupMsg | EventDataChannelMsg>; export type SessionMsgPrivate = Session<EventDataPrivateMsg>; export type SessionMsgGroup = Session<EventDataGroupMsg>; export type SessionMsgChannel = Session<EventDataChannelMsg>; /** * Session event. * * @class * @template T - Session event data type */ export declare const Session: new <T extends EventDataApiBase = EventDataApiBase>(data: T, bot: Adapter) => Session<T>; export {};