UNPKG

corde

Version:

A simple library for Discord bot tests

651 lines (650 loc) 20.5 kB
import { Channel, Client, Collection, Guild, GuildEmoji, GuildMember, Message, MessageReaction, PartialDMChannel, PartialGuildMember, PartialMessage, PartialUser, Presence, Role, Speaking, User, VoiceState, } from "discord.js"; import { IEmoji, IMessageIdentifier, IRoleIdentifier } from "../types"; export interface EventResume { count: number; index: number; nonce: string | undefined; } export interface SearchMessageReactionsOptions { emojis?: IEmoji[]; messageIdentifier?: IMessageIdentifier; authorId?: string; timeout?: number; channelId?: string; } /** * Encapsulation of Discord.js events. * @internal */ export declare class Events { protected readonly _client: Client; constructor(client: Client); /** * Emitted when the client becomes ready to start working. * @param fn Operation to be executed after client becomes ready. * @internal */ onReady(fn: () => void): void; /** * Emitted once the client becomes ready to start working. * @internal */ onceReady(): Promise<void>; /** * Emitted when a **bot** removes a emoji from a message. * @internal */ onMessageReactionRemoveEmoji(fn: (reaction: MessageReaction) => void): void; /** * Emitted once a **bot** removes a emoji from a message. * @returns Reaction removed. * @internal */ onceMessageReactionRemoveEmoji(): Promise<MessageReaction>; /** * Emitted when a channel is created. * @param fn function to receive the event. * @internal */ onChannelCreate(fn: (channel: Channel) => void): void; /** * Emitted once a channel is created. * @returns Created channel. * @internal */ onceChannelCreate(): Promise<Channel>; /** * Emitted whenever a channel is deleted. * @param fn function to receive the deleted channel. * @internal */ onChannelDelete(fn: (deletedChannel: Channel) => void): void; /** * Emitted once a channel is deleted. * @returns Deleted channel. * @internal */ onceChannelDelete(): Promise<Channel>; /** * Emitted whenever the pins of a channel are updated. * Due to the nature of the WebSocket event, not much information can be provided easily here - * you need to manually check the pins yourself. * * @param fn function to receive the channel and the time that it was updated. * @internal */ onChannelPinsUpdate(fn: (channel: Channel, updateTime: Date) => void): void; /** * Emitted once the pins of a channel are updated. * Due to the nature of the WebSocket event, not much information can be provided easily here - * you need to manually check the pins yourself. * * @returns `Channel` and `date` of it's change. * @internal */ onceChannelPinsUpdate(): Promise<[Channel, Date]>; /** * Emitted whenever a channel is updated - e.g. name change, topic change. * @param fn function to receive the channel change * @internal */ onChannelUpdate(fn: (oldChannel: Channel, newChannel: Channel) => void): void; /** * Emitted once a channel is updated - e.g. name change, topic change. * @returns `Old channel` and `new value` of the channel. * @internal */ onceChannelUpdate(): Promise<[Channel, Channel]>; /** * Emitted for general debugging information. * @param fn Function to handle debug info. * @internal */ onDebug(fn: (arg: string) => void): void; /** * Emitted once for general debugging information. * @internal */ onceDebug(): Promise<string>; /** * Emitted whenever a guild role is deleted. * @param fn function to receive the deleted role. * @internal */ onRoleDelete(fn: (role: Role) => void): void; /** * Emitted once a guild role is deleted. * If `roleIdentifier` is informed, returns the deleted role that * match with `roleIdentifier` value, if not, returns the first role deleted. * * Waits for a determined timeout, rejecting this async function if reaches * the timeout value. * * @param roleIdentifier Identifiers of the role. * @param timeout Time that this functions should wait for a response. * @returns Deleted role. * @internal */ onceRoleDelete( roleIdentifier?: IRoleIdentifier, timeout?: number, guildId?: string, ): Promise<Role>; /** * Emitted whenever the client's WebSocket disconnects and will no longer attempt to reconnect. * @param fn function to receive the event. * @internal */ onDisconnect(fn: (closeEvent: CloseEvent, code: number) => void): void; /** * Emitted once the client's WebSocket disconnects and will no longer attempt to reconnect. * @returns Close event. * @internal */ onceDisconnect(): Promise<[CloseEvent, number]>; /** * Emitted whenever a custom emoji is created in a guild. * @param fn function to receive the created emoji. * @internal */ onEmojiCreate(fn: (createdEmoji: GuildEmoji) => void): void; /** * Emitted once a custom emoji is created in a guild. * @returns Created emoji. * @internal */ onceEmojiCreate(): Promise<GuildEmoji>; /** * Emitted whenever a custom guild emoji is deleted. * @param fn function to receive the deleted emoji. * @internal */ onEmojiDelete(fn: (emojiDeleted: GuildEmoji) => void): void; /** * Emitted once a custom guild emoji is deleted. * @returns The emoji that was deleted. * @internal */ onceEmojiDelete(): Promise<GuildEmoji>; /** * Emitted whenever a custom guild emoji is updated. * @param fn function to receice the old and the new value of the emoji. * @internal */ onEmojiUpdate(fn: (oldEmoji: GuildEmoji, newEmoji: GuildEmoji) => void): void; /** * Emitted once a custom guild emoji is updated. * @returns `Old` and `new` role value. * @internal */ onceEmojiUpdate(): Promise<[GuildEmoji, GuildEmoji]>; /** * Emitted whenever the client's WebSocket encounters a connection error. * @param fn function to receive the error. * @internal */ onError(fn: (error: Error) => void): void; /** * Emitted once the client's WebSocket encounters a connection error. * @return Found error. * @internal */ onceError(): Promise<Error>; /** * Emitted whenever a member is banned from a guild. * @param fn function to receive the guild where the user was removed from, * and the user itself. * @internal */ onGuildBan(fn: (guild: Guild, user: User) => void): void; /** * Emitted once a member is banned from a guild. * @returns `guild` where the user was banned from, and the `user` itself * @internal */ onceGuildBan(): Promise<[Guild, User]>; /** * Emitted whenever a member is unbanned from a guild. * @param fn function to receive the guild that the user was removed * from ban, and the user. * @internal */ onGuildBanRemove(fn: (guild: Guild, user: User) => void): void; /** * Emitted once a member is unbanned from a guild. * @returns the `guild` that the user was removed * from ban, and the `user`. * @internal */ onceGuildBanRemove(): Promise<[Guild, User]>; /** * Emitted whenever the client joins a guild. * @param fn function to receive the created guild. * @internal */ onGuildCreate(fn: (createdGuild: Guild) => void): void; /** * Emitted once the client joins a guild. * @returns Created guild. * @internal */ onceGuildCreate(): Promise<Guild>; /** * Emitted whenever a guild is deleted/left. * @param fn function to receive the deleted guild. * @internal */ onGuildDelete(fn: (deletedGuild: Guild) => void): void; /** * Emitted once a guild is deleted/left. * @returns Deleted guild. * @internal */ onceGuildDelete(): Promise<Guild>; /** * Emitted whenever a user joins a guild. * @param fn function to receive the member who was added to guild. * @internal */ onGuildMemberAdd(fn: (member: GuildMember) => void): void; /** * Emitted once a user joins a guild. * @returns Member who was added to guild. * @internal */ onceGuildMemberAdd(): Promise<GuildMember>; /** * Emitted whenever a member becomes available in a large guild. * @param fn function to receive the guild who is available. * @internal */ onGuildMemberAvailable(fn: (member: GuildMember | PartialGuildMember) => void): void; /** * Emitted once a member becomes available in a large guild. * @returns Guild who is available. * @internal */ onceGuildMemberAvailable(): Promise<GuildMember | PartialGuildMember>; /** * Emitted whenever a member leaves a guild, or is kicked. * @param fn function to receive the member of guild who kicked. * @internal */ onGuildMemberRemove(fn: (member: GuildMember | PartialGuildMember) => void): void; /** * Emitted once a member leaves a guild, or is kicked. * @returns Member of guild who kicked. * @internal */ onceGuildMemberRemove(): Promise<GuildMember | PartialGuildMember>; /** * Emitted whenever a chunk of guild members is received (all members come from the same guild). * @param fn function to receive the collection of members that the guild received. * @internal */ onGuildMemberChunk( fn: (members: Collection<string, GuildMember>, guild: Guild, eventResume: EventResume) => void, ): void; /** * Emitted once a chunk of guild members is received (all members come from the same guild). * @returns The collection of members that the guild received. * @internal */ onceGuildMemberChunk(): Promise<[Collection<string, GuildMember>, Guild, EventResume]>; /** * Emitted whenever a guild member starts/stops speaking. * @param fn function to receive the guild's member who is speaking. * @internal */ onGuildMemberSpeaking( fn: (member: GuildMember | PartialGuildMember, speaking: Readonly<Speaking>) => void, ): void; /** * Emitted once a guild member starts/stops speaking. * @returns The guild's member who is speaking. * @internal */ onceGuildMemberSpeaking(): Promise<[GuildMember | PartialGuildMember, Readonly<Speaking>]>; /** * Emitted whenever a guild member changes - i.e. new role, removed role, nickname. * @param fn function to receive the old and the new value of the guild member. * @internal */ onGuildMemberUpdate( fn: (oldMember: GuildMember | PartialGuildMember, newMember: GuildMember) => void, ): void; /** * Emitted once a guild member changes - i.e. new role, removed role, nickname. * @returns Old and the new value of the guild member. * @internal */ onceGuildMemberUpdate(): Promise<[GuildMember | PartialGuildMember, GuildMember]>; /** * Emitted whenever a guild becomes unavailable, likely due to a server outage. * @param fn function to receive the unvailable guild. * @internal */ onGuildUnavailable(fn: (guild: Guild) => void): void; /** * Emitted once a guild becomes unavailable, likely due to a server outage. * @returns Unvailable guild. * @internal */ onceGuildUnavailable(): Promise<Guild>; /** * Emitted whenever a guild is updated - e.g. name change. * @param fn function to receive the old and new value of the updated guild. * @internal */ onGuildUpdate(fn: (oldGuild: Guild, newGuild: Guild) => void): void; /** * Emitted once a guild is updated - e.g. name change. * @returns The old and new value of the updated guild. * @internal */ onceGuildUpdate(): Promise<[Guild, Guild]>; /** * Emitted whenever a message is created. * @param fn function to receive the created message. * @internal */ onMessage(fn: (message: Message) => void): void; /** * Emitted once a message is created. * @returns Created message. * @internal */ onceMessage(authorId?: string, channelId?: string | null, timeout?: number): Promise<Message>; /** * Emitted whenever a message is deleted. * @param fn function to receive the deleted message. * @internal */ onMessageDelete(fn: (deletedMessage: Message | PartialMessage) => void): void; /** * Emitted once a message is deleted. * @returns Deleted message. * @internal */ onceMessageDelete(): Promise<Message | PartialMessage>; /** * Emitted whenever messages are deleted in bulk. * @param fn function to receive the collection of messages that * was deleted. * @internal */ onMessageDeleteBulk( fn: (deletedMessages: Collection<string, Message | PartialMessage>) => void, ): void; /** * Emitted once messages are deleted in bulk. * @returns Collection of messages that was deleted. * @internal */ onceMessageDeleteBulk(): Promise<Collection<string, Message | PartialMessage>>; /** * Emitted whenever a reaction is added to a message. * @param fn function to receive the added reaction and it's author. * @internal */ onMessageReactionAdd( fn: (addedReaction: MessageReaction, author: User | PartialUser) => void, ): void; /** * Emitted once a reaction is added to a message. * @returns Added reaction and it's author. * @internal */ onceMessageReactionAdd(): Promise<[MessageReaction, User | PartialUser]>; /** * @param filter * @returns A list of relation of reactions added and the author. * @internal */ onceMessageReactionsAdd( filter?: SearchMessageReactionsOptions, ): Promise<[MessageReaction, void | User | PartialUser][]>; /** * @param filter * @returns A list of relation of reactions removed and the author. * @internal */ onceMessageReactionsRemove( filter?: SearchMessageReactionsOptions, ): Promise<[MessageReaction, void | User | PartialUser][]>; private _onceMessageReactionUpdate; /** * Emitted whenever a **user** remove a reaction from a message * @param fn function to receive the removed reaction and the author * of the remotion. * @internal */ onMessageReactionRemove( fn: (removedReaction: MessageReaction, author: User | PartialUser) => void, ): void; /** * Emitted once a reaction is removed from a message. * @returns Removed reaction and the author of the remotion. * @internal */ onceMessageReactionRemove(): Promise<[MessageReaction, User | PartialUser]>; /** * Emitted whenever all reactions are removed from a message. * @param fn function to receive the message who had it's reactions * removed. * @internal */ onMessageReactionRemoveAll(fn: (message: Message | PartialMessage) => void): void; /** * Emitted whenever all reactions are removed from a message. * @param fn Message who had it's reactions removed. * @internal */ onceMessageReactionRemoveAll(): Promise<Message | PartialMessage>; /** * Emitted whenever a message is updated - e.g. embed or content change. * @param fn function to receive the old and new value of a message. * @internal */ onMessageUpdate( fn: (oldMessage: Message | PartialMessage, newMessage: Message | PartialMessage) => void, ): void; /** * Emitted once a message is updated - e.g. embed or content change. * @returns `Old` and `new` value of a message. * @internal */ onceMessageUpdate(): Promise<[Message | PartialMessage, Message | PartialMessage]>; /** * Emitted once a message is pinned * * @param messageIdentifier IIdentifier of the message * @param timeout timeout to wait * @returns The pinned message * @internal */ onceMessagePinned( messageIdentifier?: IMessageIdentifier, timeout?: number, channelId?: string, ): Promise<Message | PartialMessage>; /** * Emitted once a message is unPinned * * @param messageIdentifier IIdentifier of the message * @param timeout timeout to wait * @returns The pinned message * @internal */ onceMessageUnPinned( messageIdentifier?: IMessageIdentifier, timeout?: number, channelId?: string, ): Promise<Message | PartialMessage>; private _onceMessageSetPinneble; /** * Emitted once a message with `id` x or `content` y, or its embed message has changed. * * @param messageIdentifier IIdentifier of the message * @param timeout time to wait for change * @returns A message who had his content changed * @internal */ onceMessageContentOrEmbedChange( messageIdentifier?: IMessageIdentifier, timeout?: number, channelId?: string, ): Promise<Message>; private messagesHasDifferentsEmbeds; /** * Emitted whenever a guild member's presence changes, or they change one of their details. * @param fn function to receive the old and new presence values. * @internal */ onPresenceUpdate(fn: (oldMember: Presence | undefined, newMember: Presence) => void): void; /** * Emitted once a guild member's presence changes, or they change one of their details. * @returns Old and new presence values. * @internal */ oncePresenceUpdate(): Promise<[Presence, Presence]>; /** * Emitted whenever a role is created. * @param fn function to receive the created role. * @internal */ onRoleCreate(fn: (createdRole: Role) => void): void; /** * Emitted once a role is created. * @returns Created role. * @internal */ onceRoleCreate(): Promise<Role>; /** * Emitted whenever a guild role is updated. * @param fn function to receive the old and the new role value. * @internal */ onRoleUpdate(fn: (oldRole: Role, newRole: Role) => void): void; /** * Emitted once a guild role is updated. * @returns `old` and the `new` role value. * @internal */ onceRoleUpdate(): Promise<[Role, Role]>; /** * @internal */ onceRoleRenamed( roleIdentifier?: IRoleIdentifier, timeout?: number, guildId?: string, ): Promise<Role>; /** * @internal */ onceRolePositionUpdate( roleIdentifier?: IRoleIdentifier, timeout?: number, guildId?: string, ): Promise<Role>; /** * @internal */ onceRoleUpdateColor( roleIdentifier?: IRoleIdentifier, timeout?: number, guildId?: string, ): Promise<Role>; /** * @internal */ onceRoleHoistUpdate( roleIdentifier?: IRoleIdentifier, timeout?: number, guildId?: string, ): Promise<Role>; /** * @internal */ onceRoleMentionableUpdate( roleIdentifier?: IRoleIdentifier, timeout?: number, guildId?: string, ): Promise<Role>; /** * Waits for changes in permission of a specific role. * @param roleIdentifier `id` or `name` to identify the role. * @returns Specified role that had his permissions updated. * @internal */ onceRolePermissionUpdate( roleIdentifier: IRoleIdentifier, timeout?: number, guildId?: string, ): Promise<Role>; private roleMatchRoleData; private rolesPermissionsMatch; /** * Emitted whenever a user starts typing in a channel. * @param fn function to receive the channel (where) and the user (who) * is typing. * @internal */ onTypingStart(fn: (channel: Channel | PartialDMChannel, user: User | PartialUser) => void): void; /** * Emitted once a user starts typing in a channel. * @returns `Channel` (where) and the `user` (who) is typing. * @internal */ onceTypingStart(): Promise<[Channel | PartialDMChannel, User | PartialUser]>; /** * Emitted whenever a user's details (e.g. username) are changed. * @param fn function to receive the old and the new value of the user. * @internal */ onUserUpdate(fn: (oldUser: User | PartialUser, newUser: User) => void): void; /** * Emitted once a user's details (e.g. username) are changed. * @returns `Old` and the `new` value of the user. * @internal */ onceUserUpdate(): Promise<[User | PartialUser, User]>; /** * Emitted whenever a user changes voice state - e.g. joins/leaves a channel, mutes/unmutes. * @param fn function to receive the old and the new voiceState value. * @internal */ onVoiceStateUpdate(fn: (oldMember: VoiceState, newMember: VoiceState) => void): void; /** * Emitted once a user changes voice state - e.g. joins/leaves a channel, mutes/unmutes. * @returns `Old` and the `new` voiceState value. * @internal */ onceVoiceStateUpdate(): Promise<[VoiceState, VoiceState]>; /** * Execute an event `once` returning it's response. * @param event event's name. * @internal */ private _once; private _onRoleUpdateWithTimeout; }