UNPKG

oicq

Version:
305 lines (304 loc) 10.1 kB
/// <reference types="node" /> import { Gender, GroupRole } from "./common"; import { PrivateMessage, GroupMessage, DiscussMessage, Sendable } from "./message"; import { GuildMessageEvent } from "./internal/guild"; import { Friend } from "./friend"; import { Group, Discuss } from "./group"; import { Member } from "./member"; import { MemberInfo } from "./entities"; import { LoginErrorCode } from "./errors"; /** 发消息的返回值 */ export interface MessageRet { message_id: string; seq: number; rand: number; time: number; } export interface MessageEvent { /** * 快速回复 * @param quote 引用这条消息(默认false) */ reply(content: Sendable, quote?: boolean): Promise<MessageRet>; } /** 私聊消息事件 */ export interface PrivateMessageEvent extends PrivateMessage, MessageEvent { /** 好友对象 */ friend: Friend; } /** 群消息事件 */ export interface GroupMessageEvent extends GroupMessage, MessageEvent { /** 快速撤回 */ recall(): Promise<boolean>; /** 群对象 */ group: Group; /** 发送者群员对象 */ member: Member; } /** 讨论组消息事件 */ export interface DiscussMessageEvent extends DiscussMessage, MessageEvent { discuss: Discuss; } export interface RequestEvent { post_type: "request"; user_id: number; nickname: string; /** @cqhttp cqhttp方法用 */ flag: string; seq: number; time: number; /** 快速操作方法 */ approve(yes?: boolean): Promise<boolean>; } /** 好友申请 */ export interface FriendRequestEvent extends RequestEvent { request_type: "friend"; /** 为single时对方已将你加为单向好友 */ sub_type: "add" | "single"; comment: string; source: string; age: number; sex: Gender; } /** 群申请 */ export interface GroupRequestEvent extends RequestEvent { request_type: "group"; sub_type: "add"; group_id: number; group_name: string; comment: string; inviter_id?: number; tips: string; } /** 群邀请 */ export interface GroupInviteEvent extends RequestEvent { request_type: "group"; sub_type: "invite"; group_id: number; group_name: string; /** 邀请者在群里的权限 */ role: GroupRole; } /** 好友通知共通属性 */ export interface FriendNoticeEvent { post_type: "notice"; notice_type: "friend"; /** 对方账号 */ user_id: number; /** 好友对象 */ friend: Friend; } /** 好友增加 */ export interface FriendIncreaseEvent extends FriendNoticeEvent { sub_type: "increase"; nickname: string; } /** 好友减少 */ export interface FriendDecreaseEvent extends FriendNoticeEvent { sub_type: "decrease"; nickname: string; } /** 好友消息撤回 */ export interface FriendRecallEvent extends FriendNoticeEvent { sub_type: "recall"; operator_id: number; /** @cqhttp cqhttp方法用 */ message_id: string; seq: number; rand: number; time: number; } /** 好友戳一戳 */ export interface FriendPokeEvent extends FriendNoticeEvent { sub_type: "poke"; operator_id: number; target_id: number; action: string; suffix: string; } /** 群通知共通属性 */ export interface GroupNoticeEvent { post_type: "notice"; notice_type: "group"; /** 群号 */ group_id: number; /** 群对象 */ group: Group; } /** 群员增加 */ export interface MemberIncreaseEvent extends GroupNoticeEvent { sub_type: "increase"; user_id: number; nickname: string; } /** 群员减少 */ export interface MemberDecreaseEvent extends GroupNoticeEvent { sub_type: "decrease"; operator_id: number; user_id: number; dismiss: boolean; member?: MemberInfo; } /** 群消息撤回 */ export interface GroupRecallEvent extends GroupNoticeEvent { sub_type: "recall"; user_id: number; operator_id: number; /** @cqhttp cqhttp方法用 */ message_id: string; seq: number; rand: number; time: number; } /** 群戳一戳 */ export interface GroupPokeEvent extends GroupNoticeEvent { sub_type: "poke"; /** @deprecated 群中该值永远等于target_id */ user_id: number; operator_id: number; target_id: number; action: string; suffix: string; } /** 管理员变更 */ export interface GroupAdminEvent extends GroupNoticeEvent { sub_type: "admin"; user_id: number; set: boolean; } /** 群禁言 */ export interface GroupMuteEvent extends GroupNoticeEvent { sub_type: "ban"; operator_id: number; user_id: number; duration: number; /** 匿名禁言才有此属性 */ nickname?: string; } /** 群转让 */ export interface GroupTransferEvent extends GroupNoticeEvent { sub_type: "transfer"; operator_id: number; user_id: number; } /** 事件地图 */ export interface EventMap<T = any> { /** 收到二维码 */ "system.login.qrcode": (this: T, event: { image: Buffer; }) => void; /** 收到滑动验证码 */ "system.login.slider": (this: T, event: { url: string; }) => void; /** 设备锁验证事件 */ "system.login.device": (this: T, event: { url: string; phone: string; }) => void; /** 登录遇到错误 */ "system.login.error": (this: T, event: { code: LoginErrorCode | number; message: string; }) => void; /** 上线事件 */ "system.online": (this: T, event: undefined) => void; /**下线事件(网络原因,默认自动重连) */ "system.offline.network": (this: T, event: { message: string; }) => void; /**下线事件(服务器踢) */ "system.offline.kickoff": (this: T, event: { message: string; }) => void; "system.offline": (this: T, event: { message: string; }) => void; /** 好友申请 */ "request.friend.add": (this: T, event: FriendRequestEvent) => void; /** 对方已将你加为单向好友,可回添对方 */ "request.friend.single": (this: T, event: FriendRequestEvent) => void; "request.friend": (this: T, event: FriendRequestEvent) => void; /** 加群申请 */ "request.group.add": (this: T, event: GroupRequestEvent) => void; /** 群邀请 */ "request.group.invite": (this: T, event: GroupInviteEvent) => void; "request.group": (this: T, event: GroupRequestEvent | GroupInviteEvent) => void; /** 所有request */ "request": (this: T, event: FriendRequestEvent | GroupRequestEvent | GroupInviteEvent) => void; /** 所有私聊消息 */ "message.private": (this: T, event: PrivateMessageEvent) => void; /** 从好友 */ "message.private.friend": (this: T, event: PrivateMessageEvent) => void; /** 从群临时会话 */ "message.private.group": (this: T, event: PrivateMessageEvent) => void; /** 从其他途径 */ "message.private.other": (this: T, event: PrivateMessageEvent) => void; /** 从我的设备 */ "message.private.self": (this: T, event: PrivateMessageEvent) => void; /** 所有群消息 */ "message.group": (this: T, event: GroupMessageEvent) => void; /** 普通群消息 */ "message.group.normal": (this: T, event: GroupMessageEvent) => void; /** 匿名群消息 */ "message.group.anonymous": (this: T, event: GroupMessageEvent) => void; /** 讨论组消息 */ "message.discuss": (this: T, event: DiscussMessageEvent) => void; /** 所有消息 */ "message": (this: T, event: PrivateMessageEvent | GroupMessageEvent | DiscussMessageEvent) => void; /** 新增好友事件 */ "notice.friend.increase": (this: T, event: FriendIncreaseEvent) => void; /** 好友(被)删除事件 */ "notice.friend.decrease": (this: T, event: FriendDecreaseEvent) => void; /** 好友消息撤回事件 */ "notice.friend.recall": (this: T, event: FriendRecallEvent) => void; /** 好友戳一戳事件 */ "notice.friend.poke": (this: T, event: FriendPokeEvent) => void; /** 入群・群员增加事件 */ "notice.group.increase": (this: T, event: MemberIncreaseEvent) => void; /** 踢群・退群事件 */ "notice.group.decrease": (this: T, event: MemberDecreaseEvent) => void; /** 群消息撤回事件 */ "notice.group.recall": (this: T, event: GroupRecallEvent) => void; /** 管理员变更事件 */ "notice.group.admin": (this: T, event: GroupAdminEvent) => void; /** 群禁言事件 */ "notice.group.ban": (this: T, event: GroupMuteEvent) => void; /** 群转让事件 */ "notice.group.transfer": (this: T, event: GroupTransferEvent) => void; /** 群戳一戳事件 */ "notice.group.poke": (this: T, event: GroupPokeEvent) => void; /** 所有好友notice事件 */ "notice.friend": (this: T, event: FriendIncreaseEvent | FriendDecreaseEvent | FriendRecallEvent | FriendPokeEvent) => void; /** 所有群notice事件 */ "notice.group": (this: T, event: MemberIncreaseEvent | MemberDecreaseEvent | GroupRecallEvent | GroupAdminEvent | GroupMuteEvent | GroupTransferEvent | GroupPokeEvent) => void; /** 所有notice事件 */ "notice": (this: T, event: Parameters<EventMap["notice.friend"]>[0] | Parameters<EventMap["notice.group"]>[0]) => void; /** 私聊同步 */ "sync.message": (this: T, event: PrivateMessage) => void; /** 消息已读同步 */ "sync.read.private": (this: T, event: { user_id: number; time: number; }) => void; "sync.read.group": (this: T, event: { group_id: number; seq: number; }) => void; "sync.read": (this: T, event: { user_id: number; time: number; } | { group_id: number; seq: number; }) => void; /** 隐藏事件: 监听所有收到的包 */ "internal.sso": (this: T, cmd: string, payload: Buffer, seq: number) => void; /** 隐藏事件: 对方正在输入 */ "internal.input": (this: T, event: { user_id: number; end: boolean; }) => void; /** 频道相关: 频道消息 */ "guild.message": (this: T, event: GuildMessageEvent) => void; }