miraipie
Version:
the most powerful nodejs development kit for mirai-api-http
313 lines • 10.7 kB
TypeScript
import { MessageChain } from './message';
import { FileOverview, Friend, Group, GroupAnnouncement, GroupConfig, GroupMember, GroupMemberInfo, GroupPermission, PostGroupAnnouncement, Profile, SingleMessage } from './mirai';
/**
* 聊天窗口, 用以模拟QQ客户端的聊天环境
*/
export declare abstract class Chat {
/**
* 当前窗口联系人
*/
readonly contact: Friend | Group | GroupMember;
/**
* 当前窗口消息发送人(只有群聊时和 contact 不同)
*/
readonly sender: Friend | GroupMember;
/**
* 聊天窗类型
*/
readonly type: ChatType;
/**
* 撤回消息
* @param messageId 消息id
* @return 是否撤回成功
*/
static recall(messageId: number): Promise<boolean>;
/**
* 打开指定好友的聊天窗, 没有找到时返回null
* @param friendId 好友QQ号
* @since 1.1.15
* @example
* const chat = await Chat.findFriend(10000000);
* await chat.send('Hello World!');
*/
static findFriend(friendId: number): Promise<FriendChat>;
/**
* 打开指定群聊的聊天窗, 没有找到时返回null, 该聊天窗会将群主作为聊天窗的消息发送人
* @param groupId 群号
* @since 1.1.15
* @example
* const chat = await Chat.findGroup(20000000);
* await chat.send('Hello World!');
*/
static findGroup(groupId: number): Promise<GroupChat>;
/**
* 发送一条消息<br/>
* 使用该方法向当前聊天对象发送一条消息
* @param message 待发送的消息
* @param quoteMessageId 引用回复的消息id
* @return 已发送消息的消息id
* @example
* chat.send('Hello World!'); // 纯文本消息
* chat.send(AtAll()); // 单个单一消息
* chat.send([AtAll(), Plain('Hello World!')]); // 单一消息列表
* chat.send(MessageChain.from([AtAll(), Plain('Hello World!')])); // 消息链对象
* chat.send('Hello World!', 123456); // 发送消息并引用回复消息
*/
send(message: string | SingleMessage | MessageChain | SingleMessage[], quoteMessageId?: number): Promise<number>;
/**
* 等待聊天窗口的下一条消息
* @param timeout 超时时间, 单位毫秒, 默认为0(不超时)
* @return 下一条消息的消息链
* @example
* async function kick(chat: Chat, someone: number) {
* await chat.send('真的要移出成员吗?');
* const next = await chat.nextMessage();
* const confirmString = next.selected('Plain').toDisplayString();
* if (confirmString === '是') {
* // 移出成员...
* await chat.send('已移出成员');
* }
* }
*/
abstract nextMessage(timeout?: number): Promise<MessageChain>;
/**
* 向当前聊天对象发送一个头像戳一戳
* @param targetId 戳一戳行为目标QQ号
* @return 是否发送成功
*/
abstract sendNudge(targetId?: number): Promise<boolean>;
/** 判断是否为好友聊天窗口 */
isFriendChat(): this is FriendChat;
/** 判断是否为群聊聊天窗口 */
isGroupChat(): this is GroupChat;
/** 判断是否为临时聊天窗口 */
isTempChat(): this is TempChat;
/**
* 发送消息
* @param messageChain 消息链
* @param quoteMessageId 引用回复消息id
*/
protected abstract _send(messageChain: MessageChain, quoteMessageId?: number): Promise<number>;
}
/**
* 好友聊天窗
*/
export declare class FriendChat extends Chat {
readonly contact: Friend;
readonly sender: Friend;
readonly type = "FriendChat";
nextMessage(timeout?: number): Promise<MessageChain>;
sendNudge(targetId?: number): Promise<boolean>;
protected _send(messageChain: MessageChain, quoteMessageId?: number): Promise<number>;
constructor(contact: Friend);
/**
* 获取聊天对象的个人资料
* @return 聊天对象的个人资料
*/
getProfile(): Promise<Profile>;
/**
* 删除好友(慎用)
* @return 是否删除成功
*/
delete(): Promise<boolean>;
}
/**
* 群聊聊天窗
*/
export declare class GroupChat extends Chat {
readonly sender: GroupMember;
readonly contact: Group;
readonly type = "GroupChat";
nextMessage(timeout?: number): Promise<MessageChain>;
sendNudge(targetId: number): Promise<boolean>;
protected _send(messageChain: MessageChain, quoteMessageId?: number): Promise<number>;
constructor(sender: GroupMember);
/** 机器人在本群权限 */
get permission(): GroupPermission;
/**
* 设置群精华消息
* @param messageId 消息id
* @return 是否设置成功
*/
static setEssence(messageId: number): Promise<boolean>;
/**
* 等待下一条群消息, 无论发送人是谁
* @since 1.1.14
* @param timeout 超时时间, 单位毫秒, 默认为0(不超时)
*/
nextGroupMessage(timeout?: number): Promise<MessageChain>;
/**
* 获取群成员列表
* @return 群成员列表
*/
getMemberList(): Promise<GroupMember[]>;
/**
* 获取成员的个人资料
* @param memberId 成员QQ号(默认为当前消息发送人)
* @return 聊天对象的个人资料
*/
getProfile(memberId?: number): Promise<Profile>;
/**
* 获取群公告列表
* @since 1.2.9
* @param offset 分页偏移
* @param size 分页大小
* @return 群公告列表
*/
getAnnouncements(offset?: number, size?: number): Promise<GroupAnnouncement[]>;
/**
* 发布群公告
* @since 1.2.9
* @param groupId 群号
* @param announcement 公告内容
* @return 群公告
*/
postAnnouncement(groupId: number, announcement: PostGroupAnnouncement): Promise<GroupAnnouncement[]>;
/**
* 删除群公告
* @since 1.2.9
* @param announcementId 群公告id
* @return 是否删除成功
*/
deleteAnnouncement(announcementId: number): Promise<boolean>;
/**
* 获取成员信息
* @param memberId 成员QQ号(默认为当前消息发送人)
* @return 成员信息
*/
getInfo(memberId?: number): Promise<GroupMember>;
/**
* 修改成员信息
* @param info 成员信息
* @param memberId 成员QQ号(默认为当前消息发送人)
* @return 是否修改成功
*/
setInfo(info: GroupMemberInfo, memberId?: number): Promise<boolean>;
/**
* 禁言成员
* @param time 禁言时长(秒)
* @param memberId 成员QQ号(默认为当前消息发送人)
* @return 是否禁言成功
*/
mute(time?: number, memberId?: number): Promise<boolean>;
/**
* 取消禁言成员
* @param memberId 成员QQ号(默认为当前消息发送人)
* @return 是否取消成功
*/
unmute(memberId?: number): Promise<boolean>;
/**
* 踢出成员
* @param message 留言
* @param memberId 成员QQ号(默认为当前消息发送人)
* @return 是否踢出成功
*/
kick(message?: string, memberId?: number): Promise<boolean>;
/**
* 退出群聊
* @return 是否退出成功
*/
quit(): Promise<boolean>;
/**
* 全体禁言
* @return 是否禁言成功
*/
muteAll(): Promise<boolean>;
/**
* 取消全体禁言
* @return 是否取消成功
*/
unmuteAll(): Promise<boolean>;
/**
* 获取群设置
* @return 群设置
*/
getConfig(): Promise<GroupConfig>;
/**
* 修改群设置
* @param config 群设置
* @return 是否修改成功
*/
setConfig(config: GroupConfig): Promise<boolean>;
/**
* 设置或取消管理员
* @since 1.1.14
* @param admin 是否为管理员
* @param memberId 成员QQ号(默认为当前消息发送人)
* @return 是否操作成功
*/
setAdmin(admin?: boolean, memberId?: number): Promise<boolean>;
/**
* 获取群文件列表
* @param directoryPathOrId 文件夹路径或id
* @param offset 分页偏移
* @param size 分页大小
* @return 文件列表
*/
getFileList(directoryPathOrId?: string, offset?: number, size?: number): Promise<FileOverview[]>;
/**
* 获取文件详情
* @param pathOrId 文件路径或id
* @return 文件概览
*/
getFileInfo(pathOrId: string): Promise<FileOverview>;
/**
* 创建群文件夹
* @param directoryName 文件夹名称
* @param parentDirectoryPathOrId 父文件夹路径或id
* @return 文件夹概览
*/
createDirectory(directoryName: string, parentDirectoryPathOrId?: string): Promise<FileOverview>;
/**
* 删除群文件
* @param pathOrId 文件路径或id
* @return 是否删除成功
*/
deleteFile(pathOrId: string): Promise<boolean>;
/**
* 移动群文件
* @param pathOrId 文件路径或id
* @param moveToDirectoryPathOrId 移动到文件夹路径或id
* @return 是否移动成功
*/
moveFile(pathOrId: string, moveToDirectoryPathOrId?: string): Promise<boolean>;
/**
* 重命名群文件
* @param pathOrId 文件路径或id
* @param name 文件名
* @return 是否重命名成功
*/
renameFile(pathOrId: string, name: string): Promise<boolean>;
/**
* 打开私聊窗口
* @since 1.1.14
* @return 当前消息发送人的私聊窗口
*/
openTempChat(): TempChat;
}
/**
* 临时消息聊天窗
*/
export declare class TempChat extends Chat {
readonly contact: GroupMember;
readonly sender: GroupMember;
readonly type = "TempChat";
nextMessage(timeout?: number): Promise<MessageChain>;
sendNudge(targetId?: number): Promise<boolean>;
protected _send(messageChain: MessageChain, quoteMessageId?: number): Promise<number>;
constructor(contact: GroupMember);
/**
* 获取聊天对象的个人资料
* @return 聊天对象的个人资料
*/
getProfile(): Promise<Profile>;
}
/** 聊天窗口类型映射 */
export declare type ChatTypeMap = {
FriendChat: FriendChat;
GroupChat: GroupChat;
TempChat: TempChat;
};
/** 聊天窗口类型 */
export declare type ChatType = keyof ChatTypeMap;
//# sourceMappingURL=chat.d.ts.map