import type { ChannelInfoResponse, GetFileDataResponse, GetFilePathResponse, GetFileUrlResponse, GroupInfoResponse, GuildInfoResponse, Message, SelfInfoResponse, SendMessageResponse, UploadFileResponse, UserInfoResponse } from '../types'; import type { EventsMapping } from '../types/events'; import type Adapter from './adapter'; import type { Session } from './session'; type ReverseList = { [K in keyof EventsMapping]: Parameters[0] extends Session ? K : never; }; type SessionEvents = ReverseList[keyof ReverseList]; type Actions = Exclude; /** * Api which identify bot's standard platform apis. * * For different `api` child class, not most of them have implementation. * * @class * @abstract */ export declare abstract class Api { /** * Get supported actions for current api implementation. * * @returns Supported actions */ getSupportedActions(): Actions[]; abstract getSupportedEvents(): SessionEvents[]; /** * Current api's bot instance. * * @readonly */ readonly adapter: Adapter; /** * Api class constructor. * * @param adapter - Current api's bot instance */ constructor(adapter: Adapter); /** * Send a private message. * * @param message - Message content to send * @param userId - Target user id * @param meta - Extra meta data, optional * @returns Message id and send time * * @async */ sendPrivateMsg(message: Message, userId: string, meta?: object): Promise; /** * Send a group message. * * @param message - Message content to send * @param groupId - Target group id * @param meta - Extra meta data, optional * @returns Message id and send time * * @async */ sendGroupMsg(message: Message, groupId: string, meta?: object): Promise; /** * Send a channel message. * * @param message - Message content to send * @param guildId - Target guild id * @param channelId - Target channel id * @param meta - Extra meta data, optional * @returns Message id and send time * * @async */ sendChannelMsg(message: Message, guildId: string, channelId: string, meta?: object): Promise; /** * Delete a message. * * Required target message that is sent by self or bot had manger permission. * * @param messageId - Target message id * @param meta - Extra meta data, optional * * @async */ deleteMsg(messageId: string, meta?: object): void; /** * Get information about the bot itself. * * @returns Self info * * @async */ getSelfInfo(meta?: object): Promise; /** * Get user information. * * @param userId - Target user id, can be the friend or the stronger * @param meta - Extra meta data, optional * @returns User info * * @async */ getUserInfo(userId: string, meta?: object): Promise; /** * Get friend list. * * @param meta - Extra meta data, optional * @returns Friend list information * * @async */ getFriendList(meta?: object): Promise; /** * Get group information. * * @param groupId - Target group id * @param meta - Extra meta data, optional * @returns Group info * * @async */ getGroupInfo(groupId: string, meta?: object): Promise; /** * Get group list. * * @param meta - Extra meta data, optional * @returns Group list information * * @async */ getGroupList(meta?: object): Promise; /** * Get group member information. * * @param groupId - Target group id * @param userId - Target user id * @param meta - Extra meta data, optional * @returns Group member info * * @async */ getGroupMemberInfo(groupId: string, userId: string, meta?: object): Promise; /** * Get group member list. * * @param groupId - Target group id * @param meta - Extra meta data, optional * @returns Group member list information * * @async */ getGroupMemberList(groupId: string, meta?: object): Promise; /** * Set group information. * * @param groupId - Target group id * @param groupName - Group name * @param meta - Extra meta data, optional */ setGroupName(groupId: string, groupName: string, meta?: object): void; /** * Leave a group, if bot is owner so it will be destroy the group. * * @param groupId - Target group id * @param meta - Extra meta data, optional */ leaveGroup(groupId: string, meta?: object): void; /** * Get guild information. * * @param guildId - Target guild id * @param meta - Extra meta data, optional * @returns Guild info * * @async */ getGuildInfo(guildId: string, meta?: object): Promise; /** * Get guild list. * * @param meta - Extra meta data, optional * @returns Guild list information * * @async */ getGuildList(meta?: object): Promise; /** * Set guild information. * * @param guildId - Target guild id * @param guildName - Guild name * @param meta - Extra meta data, optional */ setGuildName(guildId: string, guildName: string, meta?: object): void; /** * Get guild member information. * * @param guildId - Target guild id * @param channelId - Target channel id * @param userId - Target user id * @param meta - Extra meta data, optional * @returns Guild member info * * @async */ getGuildMemberInfo(guildId: string, userId: string, meta?: object): Promise; /** * Get guild member list. * * @param guildId - Target guild id * @param channelId - Target channel id * @param meta - Extra meta data, optional * @returns Guild member list information * * @async */ getGuildMemberList(guildId: string, meta?: object): Promise; /** * Leave a guild. * * @param guildId - Target guild id * @param meta - Extra meta data, optional */ leaveGuild(guildId: string, meta?: object): void; /** * Get channel information. * * @param guildId - Target guild id * @param channelId - Target channel id * @param meta - Extra meta data, optional * @returns Channel info * * @async */ getChannelInfo(guildId: string, channelId: string, meta?: object): Promise; /** * Get channel list. * * @param guildId - Target guild id * @param joinedOnly - Whether to get joined channels only, default is false * @param meta - Extra meta data, optional * @returns Channel list information * * @async */ getChannelList(guildId: string, joinedOnly?: boolean, meta?: object): Promise; /** * Set channel information. * * @param guildId - Target guild id * @param channelId - Target channel id * @param channelName - Channel name * @param meta - Extra meta data, optional */ setChannelName(guildId: string, channelId: string, channelName: string, meta?: object): void; /** * Get channel member information. * * @param guildId - Target guild id * @param channelId - Target channel id * @param userId - Target user id * @param meta - Extra meta data, optional * @returns Channel member info * * @async */ getChannelMemberInfo(guildId: string, channelId: string, userId: string, meta?: object): Promise; /** * Get channel member list. * * @param guildId - Target guild id * @param channelId - Target channel id * @param meta - Extra meta data, optional * @returns Channel member list information * * @async */ getChannelMemberList(guildId: string, channelId: string, meta?: object): Promise; /** * Leave a channel. * * @param guildId - Target guild id * @param channelId - Target channel id * @param meta - Extra meta data, optional */ leaveChannel(guildId: string, channelId: string, meta?: object): void; /** * Upload file from url. * * @param name - File name * @param url - File url * @param headers - File download url headers, optional * @param meta - Extra meta data, optional * @returns File id * * @async */ uploadFileUrl(name: string, url: string, headers?: Record, meta?: object): Promise; /** * Upload file from path. * * @param name - File name * @param path - File path * @param meta - Extra meta data, optional * @returns File id * * @async */ uploadFilePath(name: string, path: string, meta?: object): Promise; /** * Upload file from data. * * @param name - File name * @param data - File data * @param meta - Extra meta data, optional * @returns File id * * @async */ uploadFileData(name: string, data: Buffer, meta?: object): Promise; /** * Get file url. * * @param filedId - File id * @param meta - Extra meta data, optional * @returns File url data * * @async */ getFileUrl(filedId: string, meta?: object): Promise; /** * Get file path. * * @param filedId - File id * @param meta - Extra meta data, optional * @returns File path data * * @async */ getFilePath(filedId: string, meta?: object): Promise; /** * Get file data. * * @param filedId - File id * @param meta - Extra meta data, optional * @returns File data * * @async */ getFileData(filedId: string, meta?: object): Promise; /** * Set group avatar. * * @param groupId - Target group id * @param image - Image data * @param meta - Extra meta data, optional * * @experimental */ setGroupAvatar(groupId: string, image: string, meta?: object): void; /** * Set group admin. * * @param groupId - Target group id * @param userId - Target user id * @param enable - Whether to set admin * @param meta - Extra meta data, optional * * @experimental */ setGroupAdmin(groupId: string, userId: string, enable: boolean, meta?: object): void; /** * Set group card. * * @param groupId - Target group id * @param userId - Target user id * @param card - Card content * @param meta - Extra meta data, optional * * @experimental */ setGroupCard(groupId: string, userId: string, card: string, meta?: object): void; /** * Set group members ban or unban. * * @param groupId - Target group id * @param userId - Target user id * @param time - Ban time, 0 means unban * @param meta - Extra meta data, optional * * @experimental */ setGroupBan(groupId: string, userId: string, time: number, meta?: object): void; /** * Set group new notice. * * @param groupId - Target group id * @param content - Notice content * @param image - Notice image, optional * @param meta - Extra meta data, optional * * @experimental */ sendGroupNotice(groupId: string, content: string, image?: string, meta?: object): void; /** * Set group whole ban * * @param groupId - Target group id * @param enable - Whether to ban */ setGroupWholeBan(groupId: string, enable?: boolean): void; /** * Set group members kicked. * * @param groupId - Target group id * @param userId - Target user id * @param meta - Extra meta data, optional * * @experimental */ setGroupKick(groupId: string, userId: string, meta?: object): void; } export default Api;