@kotori-bot/core
Version:
Kotori Core
187 lines (186 loc) • 5.22 kB
TypeScript
import type { Message, MessageMapping } from '../types';
type MessageTypeList = {
[K in keyof MessageMapping]: {
type: K;
} & MessageMapping[K];
};
/**
* Single message class.
*
* @template T - Message type
*/
export declare class MessageSingle<T extends keyof MessageMapping> extends String {
/**
* Message data.
*
* @readonly
*/
data: MessageTypeList[T];
/**
* Create a single message
*
* @param type - Message type
* @param data - Message data
*/
constructor(type: T, data: MessageMapping[T]);
/**
* Convert message to string.
*
* @param isStrict - Whether to strictly convert message, strict convert will ignore the elements else text
* @returns Message string
*/
toString(isStrict?: boolean): string;
/**
* Check whether the message is text.
*
* @returns Whether the message is text
*/
isText(): boolean;
}
declare class MessageListOrigin<T extends keyof MessageMapping> extends Array<MessageSingle<T>> {
/**
* Create a message list.
*
* @param messages - Message list
*/
constructor(...messages: Message<T>[]);
/**
* Convert message list to string.
*
* @param isStrict - Whether to strictly convert message, strict convert will ignore the elements else text
* @returns Message string
*/
toString(isStrict?: boolean): string;
/**
* Check whether the message list is pure.
*
* @param keys - Message type list
*
* @returns Whether the message list is pure
*/
isPure<T extends keyof MessageMapping>(...keys: T[]): boolean;
/**
* Check whether the message list is text.
*
* @returns Whether the message list is text
*/
isText(): boolean;
/**
* Pick message list.
*
* @param keys - Message type list
* @returns Message list
*/
pick<T extends keyof MessageMapping>(...keys: T[]): MessageList<T>;
/**
* Omit message list.
*
* @param keys - Message type list
* @returns Message list
*/
omit<T extends keyof MessageMapping>(...keys: T[]): MessageList<T>;
}
/**
* Message list class.
*
* @template T - Message type
* @class
*/
export type MessageList<T extends keyof MessageMapping> = (typeof String)['prototype'] & MessageListOrigin<T>;
export declare const MessageList: new <T extends keyof MessageMapping = keyof MessageMapping>(...args: ConstructorParameters<typeof MessageListOrigin>) => MessageList<T>;
/**
* Create a message list.
*
* @param messages - Message list
* @returns Message list
*/
export declare function Messages<T extends keyof MessageMapping = keyof MessageMapping>(...messages: Message<T>[]): MessageList<keyof MessageMapping>;
/**
* Messages namespace
*
* @namespace
*/
export declare namespace Messages {
/**
* Create a text message.
*
* @param text - Text string
* @returns Text message
*/
function text(text: string): MessageSingle<"text">;
/**
* Create a mention message.
*
* @param userId - User id
* @returns Mention message
*/
function mention(userId: string): MessageSingle<"mention">;
/**
* Create a mention all message.
*
* @returns Mention all message
*/
function mentionAll(): MessageSingle<"mentionAll">;
/**
* Create an image message.
*
* @param content - Image content
* @returns Image message
*/
function image(content: string): MessageSingle<"image">;
/**
* Create a voice message.
*
* @param content - Voice content
* @returns Voice message
*/
function voice(content: string): MessageSingle<"voice">;
/**
* Create an audio message.
*
* @param content - Audio content
* @returns Audio message
*/
function audio(content: string): MessageSingle<"audio">;
/**
* Create a video message.
*
* @param content - Video content
* @returns Video message
*/
function video(content: string): MessageSingle<"video">;
/**
* Create a file message.
*
* @param content - File content
* @returns File message
*/
function file(content: string): MessageSingle<"file">;
/**
* Create a location message.
*
* @param latitude - Latitude
* @param longitude - Longitude
* @param title - Title
* @param content - Content
* @returns Location message
*/
function location(latitude: number, longitude: number, title: string, content: string): MessageSingle<"location">;
/**
* Create a reply message.
*
* @param messageId - Message id
* @returns Reply message
*/
function reply(messageId: string): MessageSingle<"reply">;
/**
* Stringify message.
*
* @param type - Message type
* @param data - Message data
* @param isStrict - Whether to strictly convert message, strict convert will ignore the elements else text
* @returns Message string
*/
function stringify<T extends keyof MessageMapping>(type: T, data: MessageMapping[T], isStrict?: boolean): string;
}
export default Messages;