miraipie
Version:
the most powerful nodejs development kit for mirai-api-http
425 lines • 20.9 kB
TypeScript
/// <reference types="node" />
import EventEmitter from 'events';
import { ReadStream } from 'fs';
import { Logger } from 'log4js';
import { ConfigMeta, UserConfigs } from './config';
import { AboutResponse, ApiResponse, ChatMessage, Event, FileInfoResponse, FileListResponse, FriendListResponse, GroupAnnouncementsResponse, GroupConfig, GroupConfigResponse, GroupListResponse, GroupMemberInfo, GroupMemberResponse, MemberListResponse, MessageFromIdResponse, NudgeKind, PostGroupAnnouncement, ProfileResponse, SendMessageResponse, SingleMessage, SyncMessage, UploadFileResponse, UploadImageResponse, UploadVoiceResponse, VerifyResponse } from './mirai';
declare type UploadType = 'friend' | 'group' | 'temp';
declare type MiraiApiHttpAdapterApiMethodOptions = {
/** 获取插件相关信息 */
getAbout(): Promise<AboutResponse>;
/**
* 通过messageId获取消息
* @param messageId 消息id
*/
getMessageFromId(messageId: number): Promise<MessageFromIdResponse>;
/** 获取好友列表 */
getFriendList(): Promise<FriendListResponse>;
/** 获取群列表 */
getGroupList(): Promise<GroupListResponse>;
/**
* 获取群成员列表
* @param groupId 群号
*/
getMemberList(groupId: number): Promise<MemberListResponse>;
/** 获取Bot资料 */
getBotProfile(): Promise<ProfileResponse>;
/**
* 获取好友资料
* @param friendId 好友QQ号
*/
getFriendProfile(friendId: number): Promise<ProfileResponse>;
/**
* 获取群成员资料
* @param memberId 群成员QQ号
* @param groupId 群号
*/
getMemberProfile(memberId: number, groupId: number): Promise<ProfileResponse>;
/**
* 获取指定用户资料
* @param userId
* @since mirai-api-http v2.5.0
*/
getUserProfile(userId: number): Promise<ProfileResponse>;
/**
* 发送好友消息
* @param friendId 好友QQ号
* @param messageChain 消息链或消息数组
* @param quoteMessageId 引用回复的消息id
*/
sendFriendMessage(friendId: number, messageChain: SingleMessage[], quoteMessageId?: number): Promise<SendMessageResponse>;
/**
* 发送群消息
* @param groupId 群号
* @param messageChain 消息链或消息数组
* @param quoteMessageId 引用回复的消息id
*/
sendGroupMessage(groupId: number, messageChain: SingleMessage[], quoteMessageId?: number): Promise<SendMessageResponse>;
/**
* 发送群临时会话消息
* @param memberId 群成员QQ号
* @param groupId 群号
* @param messageChain 消息链或消息数组
* @param quoteMessageId 引用回复的消息id
*/
sendTempMessage(memberId: number, groupId: number, messageChain: SingleMessage[], quoteMessageId?: number): Promise<SendMessageResponse>;
/**
* 发送头像戳一戳消息
* @param targetId 戳一戳的目标
* @param subjectId 戳一戳的接收人
* @param kind 戳一戳的类型("Stranger" | "Friend" | "Group")
*/
sendNudge(targetId: number, subjectId: number, kind: NudgeKind): Promise<ApiResponse>;
/**
* 撤回消息
* @param messageId 消息id
*/
recall(messageId: number): Promise<ApiResponse>;
/**
* 删除好友
* @param friendId 好友QQ号
*/
deleteFriend(friendId: number): Promise<ApiResponse>;
/**
* 禁言群成员
* @param memberId 群成员QQ号
* @param groupId 群号
* @param time 禁言时长, 单位为秒, 最多30天, 默认为0
*/
muteMember(memberId: number, groupId: number, time: number): Promise<ApiResponse>;
/**
* 解除群成员禁言
* @param memberId 群成员QQ号
* @param groupId 群号
*/
unmuteMember(memberId: number, groupId: number): Promise<ApiResponse>;
/**
* 移除群成员
* @param memberId 群成员QQ号
* @param groupId 群号
* @param message 信息
*/
kickMember(memberId: number, groupId: number, message: string): Promise<ApiResponse>;
/**
* 退出群聊
* @param groupId 群号
*/
quitGroup(groupId: number): Promise<ApiResponse>;
/**
* 全体禁言
* @param groupId 群号
*/
muteAll(groupId: number): Promise<ApiResponse>;
/**
* 解除全体禁言
* @param groupId 群号
*/
unmuteAll(groupId: number): Promise<ApiResponse>;
/**
* 设置群精华消息
* @param messageId 消息id
*/
setEssence(messageId: number): Promise<ApiResponse>;
/**
* 获取群设置
* @param groupId 群号
*/
getGroupConfig(groupId: number): Promise<GroupConfigResponse>;
/**
* 修改群设置
* @param groupId 群号
* @param config 群设置
*/
setGroupConfig(groupId: number, config: GroupConfig): Promise<ApiResponse>;
/**
* 获取群员设置
* @param memberId 群成员QQ号
* @param groupId 群号
*/
getMemberInfo(memberId: number, groupId: number): Promise<GroupMemberResponse>;
/**
* 修改群员设置
* @param memberId 群成员QQ号
* @param groupId 群号
* @param info 群员资料
*/
setMemberInfo(memberId: number, groupId: number, info: GroupMemberInfo): Promise<ApiResponse>;
/**
* 设置管理员(机器人需要有群主权限)
* @param memberId 群成员QQ号
* @param groupId 群号
* @param admin 是否设置为管理员
* @since mirai-api-http v2.3.0
*/
setMemberAdmin(memberId: number, groupId: number, admin: boolean): Promise<ApiResponse>;
/**
* 获取群公告
* @param groupId 群号
* @param offset 分页偏移
* @param size 分页大小
* @since mirai-api-http v2.5.0
*/
getGroupAnnouncements(groupId: number, offset: number, size: number): Promise<GroupAnnouncementsResponse>;
/**
* 发布群公告
* @param groupId 群号
* @param announcement 公告内容
* @since mirai-api-http v2.5.0
*/
postGroupAnnouncement(groupId: number, announcement: PostGroupAnnouncement): Promise<GroupAnnouncementsResponse>;
/**
* 删除群公告
* @param groupId 群号
* @param announcementId 群公告id
* @since mirai-api-http v2.5.0
*/
deleteGroupAnnouncement(groupId: number, announcementId: number): Promise<ApiResponse>;
/**
* 处理添加好友申请事件
* @param eventId 事件id
* @param fromId 申请人QQ号
* @param groupId 申请人群号, 可能为0
* @param operate 操作类型 (0-同意|1-拒绝|2-拒绝并加入黑名单)
* @param message 回复的信息
*/
handleNewFriendRequest(eventId: number, fromId: number, groupId: number, operate: number, message: string): Promise<ApiResponse>;
/**
* 处理用户入群申请事件
* @param eventId 事件id
* @param fromId 申请人QQ号
* @param groupId 申请人群号
* @param operate 操作类型 (0-同意|1-拒绝|2-忽略|3-拒绝并加入黑名单|4-忽略并加入黑名单)
* @param message 回复的信息
*/
handleMemberJoinRequest(eventId: number, fromId: number, groupId: number, operate: number, message: string): Promise<ApiResponse>;
/**
* 处理Bot被邀请入群申请事件
* @param eventId 事件id
* @param fromId 邀请人(好友)QQ号
* @param groupId 邀请进入的群号
* @param operate 操作类型 (0-同意|1-拒绝)
* @param message 回复的信息
*/
handleBotInvitedJoinGroupRequest(eventId: number, fromId: number, groupId: number, operate: number, message: string): Promise<ApiResponse>;
/**
* 查看聊天文件列表
* @param directoryId 文件夹id, 空串为根文件夹
* @param directoryPath 文件夹路径
* @param groupId 群号
* @param friendId 好友QQ号
* @param offset 分页偏移
* @param size 分页大小
* @param withDownloadInfo 是否携带下载信息, 额外请求, 无必要不要携带
*/
getFileList(directoryId: string, directoryPath: string, groupId: number, friendId: number, offset: number, size: number, withDownloadInfo: boolean): Promise<FileListResponse>;
/**
* 获取聊天文件信息
* @param fileId 文件id
* @param path 文件路径
* @param groupId 群号
* @param friendId 好友QQ号
* @param withDownloadInfo 是否携带下载信息, 额外请求, 无必要不要携带
*/
getFileInfo(fileId: string, path: string, groupId: number, friendId: number, withDownloadInfo: boolean): Promise<FileInfoResponse>;
/**
* 创建聊天文件夹
* @param parentDirectoryId 父文件夹id, 空串为根文件夹
* @param parentDirectoryPath 父文件夹路径
* @param directoryName 文件夹名
* @param groupId 群号
* @param friendId 好友QQ号
*/
createFileDirectory(parentDirectoryId: string, parentDirectoryPath: string, directoryName: string, groupId: number, friendId: number): Promise<FileInfoResponse>;
/**
* 删除聊天文件
* @param id 文件或文件夹id
* @param path 文件或文件夹路径
* @param groupId 群号
* @param friendId 好友QQ号
*/
deleteFile(id: string, path: string, groupId: number, friendId: number): Promise<ApiResponse>;
/**
* 移动聊天文件
* @param id 文件或文件夹id
* @param path 文件或文件夹路径
* @param groupId 群号
* @param friendId 好友QQ号
* @param moveToDirectoryId 移动到文件夹id, 空串为根文件夹
* @param moveToDirectoryPath 移动到文件夹路径, 空串为根文件夹
*/
moveFile(id: string, path: string, groupId: number, friendId: number, moveToDirectoryId: string, moveToDirectoryPath: string): Promise<ApiResponse>;
/**
* 重命名聊天文件
* @param id 文件或文件夹id
* @param path 文件或文件夹路径
* @param groupId 群号
* @param friendId 好友QQ号
* @param name 文件名
*/
renameFile(id: string, path: string, groupId: number, friendId: number, name: string): Promise<ApiResponse>;
/** 会话认证 */
verify?(): Promise<VerifyResponse>;
/**
* 绑定QQ号
* @param qq 服务的机器人QQ号
*/
bind?(qq: number): Promise<ApiResponse>;
/**
* 释放Session
* @param qq 服务的机器人QQ号
*/
release?(qq: number): Promise<ApiResponse>;
/**
* 执行命令<br/>
* console 支持以不同消息类型作为指令的参数, 执行命令需要以消息类型作为参数, 若执行纯文本的命令, 构建多个 Plain 格式的消息 console 会将第一个消息作为指令名, 后续消息作为参数 具体参考 <a href="https://docs.mirai.mamoe.net/console/Commands.html">console 文档</a>
* @param command 命令与参数
*/
executeCommand?(command: SingleMessage[]): Promise<ApiResponse>;
/**
* 注册命令
* @param name 指令名
* @param alias 指令别名
* @param usage 使用说明
* @param description 命令描述
*/
registerCommand?(name: string, alias: string[], usage: string, description: string): Promise<ApiResponse>;
/**
* 图片文件上传
* @param uploadType 上传类型("friend" 或 "group" 或 "temp")
* @param imageData 文件内容
*/
uploadImage(uploadType: UploadType, imageData: ReadStream): Promise<UploadImageResponse>;
/**
* 语音文件上传
* @param uploadType 上传类型("friend" 或 "group" 或 "temp")
* @param voiceData 文件内容
*/
uploadVoice(uploadType: UploadType, voiceData: ReadStream): Promise<UploadVoiceResponse>;
/**
* 群文件上传
* @param uploadType 上传类型(仅支持"group")
* @param path 上传父文件夹的id, 空串为上传到根文件夹
* @param fileData 文件内容
* @param filename 文件名
*/
uploadGroupFile(uploadType: UploadType, path: string, fileData: ReadStream, filename: string): Promise<UploadFileResponse>;
/** 开启消息和事件监听 */
listen(): Promise<any>;
/** 关闭消息和事件监听 */
stop(): any;
};
declare type MiraiApiHttpAdapterHookOptions<MiraiApiHttpAdapterInstance> = {
/** adapter安装完成hook */
installed?: LifecycleHookListener<MiraiApiHttpAdapterInstance>;
/** adapter卸载完成hook */
uninstalled?: LifecycleHookListener<MiraiApiHttpAdapterInstance>;
/** adapter选用hook */
used?: LifecycleHookListener<MiraiApiHttpAdapterInstance>;
/** adapter弃用hook */
unused?: LifecycleHookListener<MiraiApiHttpAdapterInstance>;
};
declare type MiraiApiHttpAdapterMethodOptions<MiraiApiHttpAdapterInstance> = {
[key: string]: (this: MiraiApiHttpAdapterInstance, ...args: any) => any;
};
export declare type MiraiApiHttpAdapterOption<C extends ConfigMeta, D extends object, M extends MiraiApiHttpAdapterMethodOptions<MiraiApiHttpAdapter<C, D, M>>> = {
/** adapter id */
id: string;
/** 对mirai-api-http的支持版本 */
supportVersion: string;
/** 配置元定义 */
configMeta?: C;
/** adapter 额外数据 */
data?: D;
/** adapter 额外方法 */
methods?: M;
} & MiraiApiHttpAdapterHookOptions<MiraiApiHttpAdapter<C, D, M>> & MiraiApiHttpAdapterApiMethodOptions & ThisType<MiraiApiHttpAdapter<C, D, M>>;
declare type MessageReceivedListener<MiraiApiHttpAdapterInstance> = (this: MiraiApiHttpAdapterInstance, chatMessage: ChatMessage) => any;
declare type SyncMessageReceivedListener<MiraiApiHttpAdapterInstance> = (this: MiraiApiHttpAdapterInstance, syncMessage: SyncMessage) => any;
declare type EventReceivedListener<MiraiApiHttpAdapterInstance> = (this: MiraiApiHttpAdapterInstance, event: Event) => any;
declare type LifecycleHookListener<MiraiApiHttpAdapterInstance> = (this: MiraiApiHttpAdapterInstance) => any;
export declare type MiraiApiHttpAdapter<C extends ConfigMeta = {}, D extends object = object, M extends MiraiApiHttpAdapterMethodOptions<MiraiApiHttpAdapter<C, D, M>> = {}> = {
/** adapter id */
readonly id: string;
/** 对mirai-api-http的支持版本 */
readonly supportVersion: string;
/** 配置元定义 */
readonly configMeta: C;
/** 用户配置 */
configs: UserConfigs<C>;
/** 是否正在监听 */
listening: boolean;
/** logger */
logger: Logger;
/** 是否为 api adapter 标识, 恒为 true */
readonly __isApiAdapter: true;
addListener(e: 'message', listener: MessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
addListener(e: 'sync', listener: SyncMessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
addListener(e: 'event', listener: EventReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
addListener(e: 'used', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
addListener(e: 'unused', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
addListener(e: 'installed', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
addListener(e: 'uninstalled', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
addListener(e: 'listen', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
addListener(e: 'stop', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'message', listener: MessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'sync', listener: SyncMessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'event', listener: EventReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'used', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'unused', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'installed', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'uninstalled', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'listen', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
once(e: 'stop', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'message', listener: MessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'sync', listener: SyncMessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'event', listener: EventReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'used', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'unused', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'installed', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'uninstalled', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'listen', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
on(e: 'stop', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'message', listener: MessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'sync', listener: SyncMessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'event', listener: EventReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'used', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'unused', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'installed', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'uninstalled', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'listen', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependListener(e: 'stop', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'message', listener: MessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'sync', listener: SyncMessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'event', listener: EventReceivedListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'used', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'unused', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'installed', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'uninstalled', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'listen', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
prependOnceListener(e: 'stop', listener: LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>): any;
emit(e: 'message', chatMessage: ChatMessage): any;
emit(e: 'sync', syncMessage: SyncMessage): any;
emit(e: 'event', event: Event): any;
emit(e: 'used'): any;
emit(e: 'unused'): any;
emit(e: 'installed'): any;
emit(e: 'uninstalled'): any;
emit(e: 'listen'): any;
emit(e: 'stop'): any;
listeners(e: 'message'): MessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>[];
listeners(e: 'sync'): SyncMessageReceivedListener<MiraiApiHttpAdapter<C, D, M>>[];
listeners(e: 'event'): EventReceivedListener<MiraiApiHttpAdapter<C, D, M>>[];
listeners(e: 'used'): LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>[];
listeners(e: 'unused'): LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>[];
listeners(e: 'installed'): LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>[];
listeners(e: 'uninstalled'): LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>[];
listeners(e: 'listen'): LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>[];
listeners(e: 'stop'): LifecycleHookListener<MiraiApiHttpAdapter<C, D, M>>[];
} & D & M & Readonly<MiraiApiHttpAdapterApiMethodOptions> & EventEmitter;
/**
* 创建 api adapter
* @param options adapter 选项
*/
export declare function makeApiAdapter<C extends ConfigMeta, D extends object, M extends MiraiApiHttpAdapterMethodOptions<MiraiApiHttpAdapter<C, D, M>>>(options: MiraiApiHttpAdapterOption<C, D, M>): MiraiApiHttpAdapter<C, D, M>;
export {};
//# sourceMappingURL=adapter.d.ts.map