corde
Version:
A simple library for Discord bot tests
651 lines (650 loc) • 20.5 kB
TypeScript
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;
}