// @flow /** * Flowtype definitions for eris * Generated by Flowgen from a Typescript Definition * Flowgen v1.8.0 * Author: [Katalina T.](http://twitter.com/kayteh) * Repo: http://github.com/kayteh/roleypoly */ declare module 'eris' { import type EventEmitter from 'events' import type { Readable as ReadableStream } from 'stream' declare interface JSONCache { [s: string]: any; } declare interface SimpleJSON { toJSON(simple?: boolean): JSONCache; } declare interface NestedJSON { toJSON(arg?: any, cache?: Array): JSONCache; } declare type TextableChannel = TextChannel | PrivateChannel | GroupChannel; declare type AnyChannel = | TextChannel | VoiceChannel | CategoryChannel | PrivateChannel | GroupChannel; declare type AnyGuildChannel = TextChannel | VoiceChannel | CategoryChannel; declare interface CreateInviteOptions { maxAge?: number; maxUses?: number; temporary?: boolean; } declare interface Invitable { getInvites(): Promise; createInvite( options?: CreateInviteOptions, reason?: string ): Promise; } declare interface Textable { lastMessageID: string; messages: Collection; sendTyping(): Promise; getMessage(messageID: string): Promise; getMessages( limit?: number, before?: string, after?: string, around?: string ): Promise; getPins(): Promise; createMessage( content: MessageContent, file?: MessageFile ): Promise; editMessage(messageID: string, content: MessageContent): Promise; pinMessage(messageID: string): Promise; unpinMessage(messageID: string): Promise; getMessageReaction( messageID: string, reaction: string, limit?: number, before?: string, after?: string ): Promise; addMessageReaction( messageID: string, reaction: string, userID?: string ): Promise; removeMessageReaction( messageID: string, reaction: string, userID?: string ): Promise; removeMessageReactions(messageID: string): Promise; deleteMessage(messageID: string, reason?: string): Promise; unsendMessage(messageID: string): Promise; } declare interface OldCall { participants: string[]; endedTimestamp?: number; ringing: string[]; region: string; unavailable: boolean; } declare interface OldChannel { name: string; position: string; topic?: string; bitrate?: number; permissionOverwrites: Collection; } declare type FriendSuggestionReasons = Array<{ type: number, platform_type: string, name: string }>; declare interface MemberPartial { id: string; user: User; } declare interface OldPresence { status: string; game?: { name: string, type: number, url?: string }; } declare interface OldVoiceState { mute: boolean; deaf: boolean; selfMute: boolean; selfDeaf: boolean; } declare interface Emittable { on(event: string, listener: Function): *; on(event: "ready" | "disconnect", listener: () => void): *; on( event: "callCreate" | "callRing" | "callDelete", listener: (call: Call) => void ): *; on( event: "callUpdate", listener: (call: Call, oldCall: OldCall) => void ): *; on( event: "channelCreate" | "channelDelete", listener: (channel: AnyChannel) => void ): *; on( event: "channelPinUpdate", listener: ( channel: TextableChannel, timestamp: number, oldTimestamp: number ) => void ): *; on( event: "channelRecipientAdd" | "channelRecipientRemove", listener: (channel: GroupChannel, user: User) => void ): *; on( event: "channelUpdate", listener: (channel: AnyChannel, oldChannel: OldChannel) => void ): *; on( event: "friendSuggestionCreate", listener: (user: User, reasons: FriendSuggestionReasons) => void ): *; on(event: "friendSuggestionDelete", listener: (user: User) => void): *; on( event: "guildAvailable" | "guildBanAdd" | "guildBanRemove", listener: (guild: Guild, user: User) => void ): *; on( event: "guildDelete" | "guildUnavailable" | "guildCreate", listener: (guild: Guild) => void ): *; on( event: "guildEmojisUpdate", listener: (guild: Guild, emojis: Emoji[], oldEmojis: Emoji[]) => void ): *; on( event: "guildMemberAdd", listener: (guild: Guild, member: Member) => void ): *; on( event: "guildMemberChunk", listener: (guild: Guild, members: Member[]) => void ): *; on( event: "guildMemberRemove", listener: (guild: Guild, member: Member | MemberPartial) => void ): *; on( event: "guildMemberUpdate", listener: ( guild: Guild, member: Member, oldMember: { roles: string[], nick?: string } ) => void ): *; on( event: "guildRoleCreate" | "guildRoleDelete", listener: (guild: Guild, role: Role) => void ): *; on( event: "guildRoleUpdate", listener: (guild: Guild, role: Role, oldRole: RoleOptions) => void ): *; on( event: "guildUpdate", listener: (guild: Guild, oldGuild: GuildOptions) => void ): *; on(event: "hello", listener: (trace: string[], id: number) => void): *; on(event: "messageCreate", listener: (message: Message) => void): *; on( event: "messageDelete" | "messageReactionRemoveAll", listener: (message: PossiblyUncachedMessage) => void ): *; on( event: "messageDeleteBulk", listener: (messages: PossiblyUncachedMessage[]) => void ): *; on( event: "messageReactionAdd" | "messageReactionRemove", listener: ( message: PossiblyUncachedMessage, emoji: Emoji, userID: string ) => void ): *; on( event: "messageUpdate", listener: ( message: Message, oldMessage?: { attachments: Attachment[], embeds: Embed[], content: string, editedTimestamp?: number, mentionedBy?: any, tts: boolean, mentions: string[], roleMentions: string[], channelMentions: string[] } ) => void ): *; on( event: "presenceUpdate", listener: ( other: Member | Relationship, oldPresence?: OldPresence ) => void ): *; on( event: "rawWS" | "unknown", listener: (packet: RawPacket, id: number) => void ): *; on( event: "relationshipAdd" | "relationshipRemove", listener: (relationship: Relationship) => void ): *; on( event: "relationshipUpdate", listener: ( relationship: Relationship, oldRelationship: { type: number } ) => void ): *; on( event: "shardPreReady" | "connect", listener: (id: number) => void ): *; on( event: "typingStart", listener: (channel: TextableChannel, user: User) => void ): *; on( event: "unavailableGuildCreate", listener: (guild: UnavailableGuild) => void ): *; on( event: "userUpdate", listener: ( user: User, oldUser: { username: string, discriminator: string, avatar?: string } ) => void ): *; on( event: "voiceChannelJoin", listener: (member: Member, newChannel: VoiceChannel) => void ): *; on( event: "voiceChannelLeave", listener: (member: Member, oldChannel: VoiceChannel) => void ): *; on( event: "voiceChannelSwitch", listener: ( member: Member, newChannel: VoiceChannel, oldChannel: VoiceChannel ) => void ): *; on( event: "voiceStateUpdate", listener: (member: Member, oldState: OldVoiceState) => void ): *; on( event: "warn" | "debug", listener: (message: string, id: number) => void ): *; } declare interface IConstants { DefaultAvatarHashes: string[]; ImageFormats: string[]; GatewayOPCodes: { [key: string]: number }; GATEWAY_VERSION: number; Permissions: { [key: string]: number }; VoiceOPCodes: { [key: string]: number }; SystemJoinMessages: string[]; AuditLogActions: { [key: string]: number }; } declare export var Constants: IConstants; declare interface WebhookPayload { content?: string; file?: | { file: Buffer, name: string } | Array<{ file: Buffer, name: string }>; embeds?: EmbedOptions[]; username?: string; avatarURL?: string; tts?: boolean; wait?: boolean; disableEveryone?: boolean; } declare interface EmbedBase { title?: string; description?: string; url?: string; timestamp?: string; color?: number; footer?: { text: string, icon_url?: string, proxy_icon_url?: string }; image?: { url?: string, proxy_url?: string, height?: number, width?: number }; thumbnail?: { url?: string, proxy_url?: string, height?: number, width?: number }; video?: { url: string, height?: number, width?: number }; provider?: { name: string, url?: string }; fields?: Array<{ name?: string, value?: string, inline?: boolean }>; author?: { name: string, url?: string, icon_url?: string, proxy_icon_url?: string }; } declare type Embed = { type: string } & EmbedBase; declare type EmbedOptions = { type?: string } & EmbedBase; declare interface Webhook { name: string; channel_id: string; token: string; avatar?: string; guild_id: string; id: string; user: { username: string, discriminator: string, id: string, avatar?: string }; } declare interface GuildEmbed { channel_id?: string; enabled: boolean; } declare interface Attachment { url: string; proxy_url: string; size: number; id: string; filename: string; } declare interface VoiceRegion { name: string; deprecated: boolean; custom: boolean; vip: boolean; optimal: boolean; id: string; } declare interface UserSettings { theme: string; status: string; show_current_game: boolean; restricted_guilds: string[]; render_reactions: boolean; render_embeds: boolean; message_display_compact: boolean; locale: string; inline_embed_media: boolean; inline_attachment_media: boolean; guild_positions: string[]; friend_source_flags: { all: boolean }; explicit_content_filter: number; enable_tts_command: boolean; developer_mode: boolean; detect_platform_accounts: boolean; default_guilds_restricted: boolean; convert_emojis: boolean; afk_timeout: number; } declare interface GuildSettings { suppress_everyone: boolean; muted: boolean; mobile_push: boolean; message_notifications: number; guild_id: string; channel_override: Array<{ muted: boolean, message_notifications: number, channel_id: string }>; } declare interface UserProfile { premium_since?: number; mutual_guilds: Array<{ nick?: string, id: string }>; user: { username: string, discriminator: string, flags: number, id: string, avatar?: string }; connected_accounts: Array<{ verified: boolean, type: string, id: string, name: string }>; } declare interface Connection { verified: boolean; revoked: boolean; integrations: any[]; visibility: number; friend_sync: boolean; type: string; id: string; name: string; } declare interface GuildAuditLog { users: User[]; entries: GuildAuditLogEntry[]; } declare interface BaseData { id: string; [key: string]: {}; } declare type MessageContent = | string | { content?: string, tts?: boolean, disableEveryone?: boolean, embed?: EmbedOptions }; declare interface MessageFile { file: Buffer | string; name: string; } declare interface EmojiBase { name: string; icon?: string; } declare type EmojiOptions = { roles?: string[] } & EmojiBase; declare type Emoji = { roles: string[] } & EmojiBase; declare interface IntegrationOptions { expireBehavior: string; expireGracePeriod: string; enableEmoticons: string; } declare interface GuildOptions { name?: string; region?: string; icon?: string; verificationLevel?: number; defaultNotifications?: number; afkChannelID?: string; afkTimeout?: number; ownerID?: string; splash?: string; } declare interface MemberOptions { roles?: string[]; nick?: string; mute?: boolean; deaf?: boolean; channelID?: string; } declare interface RoleOptions { name?: string; permissions?: number; color?: number; hoist?: boolean; mentionable?: boolean; } declare interface GamePresence { name: string; type?: number; url?: string; } declare interface SearchOptions { sortBy?: string; sortOrder?: string; content?: string; authorID?: string; minID?: string; maxID?: string; limit?: number; offset?: number; contextSize?: number; has?: string; embedProviders?: string; embedTypes?: string; attachmentExtensions?: string; attachmentFilename?: string; channelIDs: string[]; } declare interface SearchResults { totalResults: number; results: Array< Array< Message & { hit?: boolean } > >; } declare interface VoiceResourceOptions { inlineVolume?: boolean; voiceDataTimeout?: number; inputArgs?: string[]; encoderArgs?: string[]; format?: string; frameDuration?: number; frameSize?: number; sampleRate?: number; } declare type PossiblyUncachedMessage = | Message | { id: string, channel: TextableChannel }; declare interface RawPacket { op: number; t?: string; d?: any; s?: number; } declare type ClientOptions = $Shape<{ autoreconnect: boolean; compress: boolean; connectionTimeout: number; disableEvents: { [s: string]: boolean }; disableEveryone: boolean; firstShardID: number; getAllUsers: boolean; guildCreateTimeout: number; largeThreshold: number; lastShardID: number; maxShards: number | "auto"; messageLimit: number; opusOnly: boolean; restMode: boolean; seedVoiceConnections: boolean; defaultImageFormat: string; defaultImageSize: number; ws: any; latencyThreshold: number; }> declare type CommandClientOptions = $Shape<{ defaultHelpCommand: boolean; description: string; ignoreBots: boolean; ignoreSelf: boolean; name: string; owner: string; prefix: string | string[]; defaultCommandOptions: CommandOptions; }> declare interface Hooks { preCommand?: (msg: Message, args: string[]) => void; postCheck?: (msg: Message, args: string[], checksPassed: boolean) => void; postExecution?: ( msg: Message, args: string[], executionSuccess: boolean ) => void; postCommand?: (msg: Message, args: string[], sent?: Message) => void; } declare type GenericCheckFunction = (msg: Message) => T; declare type CommandOptions = $Shape<{ aliases?: string[]; caseInsensitive?: boolean; deleteCommand?: boolean; argsRequired?: boolean; guildOnly?: boolean; dmOnly?: boolean; description?: string; fullDescription?: string; usage?: string; hooks?: Hooks; requirements?: { userIDs?: string[] | GenericCheckFunction, roleIDs?: string[] | GenericCheckFunction, roleNames?: string[] | GenericCheckFunction, permissions?: | { [s: string]: boolean } | GenericCheckFunction<{ [s: string]: boolean }>, custom?: GenericCheckFunction }; cooldown?: number; cooldownExclusions?: { userIDs?: string[], guildIDs?: string[], channelIDs?: string[] }; restartCooldown?: boolean; cooldownReturns?: number; cooldownMessage?: string | GenericCheckFunction; invalidUsageMessage?: string | GenericCheckFunction; permissionMessage?: string | GenericCheckFunction; errorMessage?: string | GenericCheckFunction; reactionButtons?: Array<{ emoji: string, type: string, response: CommandGenerator }>; reactionButtonTimeout?: number; defaultSubcommandOptions?: CommandOptions; hidden?: boolean; }> declare type CommandGeneratorFunction = ( msg: Message, args: string[] ) => Promise | Promise | MessageContent | void; declare type CommandGenerator = | CommandGeneratorFunction | MessageContent | MessageContent[] | CommandGeneratorFunction[]; declare export class ShardManager extends Collection { constructor(client: Client): *; connect(shard: Shard): void; spawn(id: number): void; toJSON(): string; } declare export default class Client extends events$EventEmitter implements SimpleJSON, Emittable { token: string; gatewayURL: string; bot: boolean; options: ClientOptions; channelGuildMap: { [s: string]: string }; shards: ShardManager; guilds: Collection; privateChannelMap: { [s: string]: string }; privateChannels: Collection; groupChannels: Collection; voiceConnections: Collection; guildShardMap: { [s: string]: number }; startTime: number; unavailableGuilds: Collection; uptime: number; user: ExtendedUser; users: Collection; relationships: Collection; userGuildSettings: { [s: string]: GuildSettings }; userSettings: UserSettings; notes: { [s: string]: string }; constructor(token: string, options?: ClientOptions): *; connect(): Promise; getGateway(): Promise; getBotGateway(): Promise<{ url: string, shards: number }>; disconnect(options: { reconnect: boolean }): void; joinVoiceChannel( channelID: string, options?: { shared?: boolean, opusOnly?: boolean } ): Promise; leaveVoiceChannel(channelID: string): void; closeVoiceConnection(guildID: string): void; editAFK(afk: boolean): void; editStatus(status?: string, game?: GamePresence): void; getChannel(channelID: string): AnyChannel; createChannel( guildID: string, name: string, type?: number, reason?: string, parentID?: string ): Promise; editChannel( channelID: string, options: { name?: string, icon?: string, ownerID?: string, topic?: string, bitrate?: number, userLimit?: number, nsfw?: boolean, parentID?: string }, reason?: string ): Promise; editChannelPosition(channelID: string, position: number): Promise; deleteChannel(channelID: string, reason?: string): Promise; sendChannelTyping(channelID: string): Promise; editChannelPermission( channelID: string, overwriteID: string, allow: number, deny: number, type: string, reason?: string ): Promise; deleteChannelPermission( channelID: string, overwriteID: string, reason?: string ): Promise; getChannelInvites(channelID: string): Promise; createChannelInvite( channelID: string, options?: { maxAge?: number, maxUses?: number, temporary?: boolean, unique?: boolean }, reason?: string ): Promise; getChannelWebhooks(channelID: string): Promise; getWebhook(webhookID: string, token?: string): Promise; createChannelWebhook( channelID: string, options: { name: string, avatar: string }, reason?: string ): Promise; editWebhook( webhookID: string, options: { name?: string, avatar?: string }, token?: string, reason?: string ): Promise; executeWebhook( webhookID: string, token: string, options: WebhookPayload ): Promise; executeSlackWebhook( webhookID: string, token: string, options?: { wait?: boolean } ): Promise; deleteWebhook( webhookID: string, token?: string, reason?: string ): Promise; getGuildWebhooks(guildID: string): Promise; getGuildAuditLogs( guildID: string, limit?: number, before?: string, actionType?: number ): Promise; createGuildEmoji( guildID: string, options: EmojiOptions, reason?: string ): Promise; editGuildEmoji( guildID: string, emojiID: string, options: { name?: string, roles?: string[] }, reason?: string ): Promise; deleteGuildEmoji( guildID: string, emojiID: string, reason?: string ): Promise; createRole( guildID: string, options?: RoleOptions, reason?: string ): Promise; editRole( guildID: string, roleID: string, options: RoleOptions, reason?: string ): Promise; editRolePosition( guildID: string, roleID: string, position: number ): Promise; deleteRole(guildID: string, roleID: string, reason?: string): Promise; getPruneCount(guildID: string, days: number): Promise; pruneMembers( guildID: string, days: number, reason?: string ): Promise; getVoiceRegions(guildID: string): Promise; getInvite(inviteID: string, withCounts?: boolean): Promise; acceptInvite(inviteID: string): Promise; deleteInvite(inviteID: string, reason?: string): Promise; getSelf(): Promise; editSelf(options: { username?: string, avatar?: string }): Promise; getDMChannel(userID: string): Promise; createGroupChannel(userIDs: string[]): Promise; getMessage(channelID: string, messageID: string): Promise; getMessages( channelID: string, limit?: number, before?: string, after?: string, around?: string ): Promise; getPins(channelID: string): Promise; createMessage( channelID: string, content: MessageContent, file?: MessageFile ): Promise; editMessage( channelID: string, messageID: string, content: MessageContent ): Promise; pinMessage(channelID: string, messageID: string): Promise; unpinMessage(channelID: string, messageID: string): Promise; getMessageReaction( channelID: string, messageID: string, reaction: string, limit?: number, before?: string, after?: string ): Promise; addMessageReaction( channelID: string, messageID: string, reaction: string, userID?: string ): Promise; removeMessageReaction( channelID: string, messageID: string, reaction: string, userID?: string ): Promise; removeMessageReactions(channelID: string, messageID: string): Promise; deleteMessage( channelID: string, messageID: string, reason?: string ): Promise; deleteMessages( channelID: string, messageIDs: string[], reason?: string ): Promise; purgeChannel( channelID: string, limit?: number, filter?: (m: Message) => boolean, before?: string, after?: string ): Promise; getGuildEmbed(guildID: string): Promise; getGuildIntegrations(guildID: string): Promise; editGuildIntegration( guildID: string, integrationID: string, options: IntegrationOptions ): Promise; deleteGuildIntegration( guildID: string, integrationID: string ): Promise; syncGuildIntegration(guildID: string, integrationID: string): Promise; getGuildInvites(guildID: string): Promise; banGuildMember( guildID: string, userID: string, deleteMessageDays?: number, reason?: string ): Promise; unbanGuildMember( guildID: string, userID: string, reason?: string ): Promise; createGuild(name: string, region: string, icon?: string): Promise; editGuild( guildID: string, options: GuildOptions, reason?: string ): Promise; getGuildBans( guildID: string ): Promise< Array<{ reason?: string, user: User }> >; editGuildMember( guildID: string, memberID: string, options: MemberOptions, reason?: string ): Promise; addGuildMemberRole( guildID: string, memberID: string, roleID: string, reason?: string ): Promise; removeGuildMemberRole( guildID: string, memberID: string, roleID: string, reason?: string ): Promise; editNickname(guildID: string, nick: string, reason?: string): Promise; kickGuildMember( guildID: string, userID: string, reason?: string ): Promise; deleteGuild(guildID: string): Promise; leaveGuild(guildID: string): Promise; getOAuthApplication( appID?: string ): Promise<{ description: string, name: string, owner: { username: string, discriminator: string, id: string, avatar?: string }, bot_public: boolean, bot_require_code_grant: boolean, id: string, icon?: string }>; addRelationship(userID: string, block?: boolean): Promise; removeRelationship(userID: string): Promise; addGroupRecipient(groupID: string, userID: string): Promise; removeGroupRecipient(groupID: string, userID: string): Promise; getUserProfile(userID: string): Promise; editUserNote(userID: string, note: string): Promise; deleteUserNote(userID: string): Promise; getSelfConnections(): Promise; editSelfConnection( platform: string, id: string, data: { friendSync: boolean, visibility: number } ): Promise; deleteSelfConnection(platform: string, id: string): Promise; getSelfSettings(): Promise; editSelfSettings(data: UserSettings): Promise; getSelfMFACodes( password: string, regenerate?: boolean ): Promise<{ backup_codes: Array<{ code: string, consumed: boolean }> }>; enableSelfMFATOTP( secret: string, code: string ): Promise<{ token: string, backup_codes: Array<{ code: string, consumed: boolean }> }>; disableSelfMFATOTP( code: string ): Promise<{ token: string }>; getSelfBilling(): Promise<{ premium_subscription?: { status: number, ended_at?: string, canceled_at?: string, created_at: string, current_period_end?: string, current_period_start?: string, plan: string }, payment_source?: { type: string, brand: string, invalid: boolean, last_4: number, expires_year: number, expires_month: number }, payment_gateway?: string }>; getSelfPayments(): Promise< Array<{ status: number, amount_refunded: number, description: string, created_at: string, currency: string, amount: number }> >; addSelfPremiumSubscription(token: string, plan: string): Promise; deleteSelfPremiumSubscription(): Promise; getRESTChannel(channelID: string): Promise; getRESTGuild(guildID: string): Promise; getRESTGuilds( limit?: number, before?: string, after?: string ): Promise; getRESTGuildChannels(guildID: string): Promise; getRESTGuildEmojis(guildID: string): Promise; getRESTGuildEmoji(guildID: string, emojiID: string): Promise; getRESTGuildMembers( guildID: string, limit?: number, after?: string ): Promise; getRESTGuildMember(guildID: string, memberID: string): Promise; getRESTGuildRoles(guildID: string): Promise; getRESTUser(userID: string): Promise; searchChannelMessages( channelID: string, query: SearchOptions ): Promise; searchGuildMessages( guildID: string, query: SearchOptions ): Promise; on(event: string, listener: Function): *; on(event: "ready" | "disconnect", listener: () => void): *; on( event: "callCreate" | "callRing" | "callDelete", listener: (call: Call) => void ): *; on( event: "callUpdate", listener: (call: Call, oldCall: OldCall) => void ): *; on( event: "channelCreate" | "channelDelete", listener: (channel: AnyChannel) => void ): *; on( event: "channelPinUpdate", listener: ( channel: TextableChannel, timestamp: number, oldTimestamp: number ) => void ): *; on( event: "channelRecipientAdd" | "channelRecipientRemove", listener: (channel: GroupChannel, user: User) => void ): *; on( event: "channelUpdate", listener: (channel: AnyChannel, oldChannel: OldChannel) => void ): *; on( event: "friendSuggestionCreate", listener: (user: User, reasons: FriendSuggestionReasons) => void ): *; on(event: "friendSuggestionDelete", listener: (user: User) => void): *; on( event: "guildAvailable" | "guildBanAdd" | "guildBanRemove", listener: (guild: Guild, user: User) => void ): *; on( event: "guildDelete" | "guildUnavailable" | "guildCreate", listener: (guild: Guild) => void ): *; on( event: "guildEmojisUpdate", listener: (guild: Guild, emojis: Emoji[], oldEmojis: Emoji[]) => void ): *; on( event: "guildMemberAdd", listener: (guild: Guild, member: Member) => void ): *; on( event: "guildMemberChunk", listener: (guild: Guild, members: Member[]) => void ): *; on( event: "guildMemberRemove", listener: (guild: Guild, member: Member | MemberPartial) => void ): *; on( event: "guildMemberUpdate", listener: ( guild: Guild, member: Member, oldMember: { roles: string[], nick?: string } ) => void ): *; on( event: "guildRoleCreate" | "guildRoleDelete", listener: (guild: Guild, role: Role) => void ): *; on( event: "guildRoleUpdate", listener: (guild: Guild, role: Role, oldRole: RoleOptions) => void ): *; on( event: "guildUpdate", listener: (guild: Guild, oldGuild: GuildOptions) => void ): *; on(event: "hello", listener: (trace: string[], id: number) => void): *; on(event: "messageCreate", listener: (message: Message) => void): *; on( event: "messageDelete" | "messageReactionRemoveAll", listener: (message: PossiblyUncachedMessage) => void ): *; on( event: "messageDeleteBulk", listener: (messages: PossiblyUncachedMessage[]) => void ): *; on( event: "messageReactionAdd" | "messageReactionRemove", listener: ( message: PossiblyUncachedMessage, emoji: Emoji, userID: string ) => void ): *; on( event: "messageUpdate", listener: ( message: Message, oldMessage?: { attachments: Attachment[], embeds: Embed[], content: string, editedTimestamp?: number, mentionedBy?: any, tts: boolean, mentions: string[], roleMentions: string[], channelMentions: string[] } ) => void ): *; on( event: "presenceUpdate", listener: ( other: Member | Relationship, oldPresence?: OldPresence ) => void ): *; on( event: "rawWS" | "unknown", listener: (packet: RawPacket, id: number) => void ): *; on( event: "relationshipAdd" | "relationshipRemove", listener: (relationship: Relationship) => void ): *; on( event: "relationshipUpdate", listener: ( relationship: Relationship, oldRelationship: { type: number } ) => void ): *; on( event: "typingStart", listener: (channel: TextableChannel, user: User) => void ): *; on( event: "unavailableGuildCreate", listener: (guild: UnavailableGuild) => void ): *; on( event: "userUpdate", listener: ( user: User, oldUser: { username: string, discriminator: string, avatar?: string } ) => void ): *; on( event: "voiceChannelJoin", listener: (member: Member, newChannel: VoiceChannel) => void ): *; on( event: "voiceChannelLeave", listener: (member: Member, oldChannel: VoiceChannel) => void ): *; on( event: "voiceChannelSwitch", listener: ( member: Member, newChannel: VoiceChannel, oldChannel: VoiceChannel ) => void ): *; on( event: "voiceStateUpdate", listener: (member: Member, oldState: OldVoiceState) => void ): *; on( event: "warn" | "debug", listener: (message: string, id: number) => void ): *; on( event: "shardDisconnect" | "error" | "shardPreReady" | "connect", listener: (err: Error, id: number) => void ): *; on( event: "shardReady" | "shardResume", listener: (id: number) => void ): *; toJSON(simple?: boolean): JSONCache; } declare export class VoiceConnection extends events$EventEmitter implements SimpleJSON { id: string; channelID: string; connecting: boolean; ready: boolean; playing: boolean; paused: boolean; volume: number; current: { startTime: number, playTime: number, pausedTimestamp?: number, pausedTime?: number, options: VoiceResourceOptions }; constructor( id: string, options?: { shard?: Shard, shared?: boolean, opusOnly?: boolean } ): *; pause(): void; play( resource: ReadableStream | string, options?: VoiceResourceOptions ): void; receive(type: string): VoiceDataStream; resume(): void; setVolume(volume: number): void; stopPlaying(): void; switchChannel(channelID: string): void; updateVoiceState(selfMute: boolean, selfDeaf: boolean): void; on(event: "debug" | "warn", listener: (message: string) => void): *; on(event: "error" | "disconnect", listener: (err: Error) => void): *; on(event: "pong", listener: (latency: number) => void): *; on(event: "speakingStart", listener: (userID: string) => void): *; on(event: "end", listener: () => void): *; on(event: string, listener: (e: mixed, ...args: Array) => void): *; toJSON(simple?: boolean): JSONCache; } declare export class SharedStream extends events$EventEmitter { playing: boolean; ended: boolean; volume: number; speaking: boolean; current: { startTime: number, playTime: number, pausedTimestamp?: number, pausedTime?: number, options: VoiceResourceOptions }; add(connection: VoiceConnection): void; play( resource: ReadableStream | string, options: VoiceResourceOptions ): void; remove(connection: VoiceConnection): void; setVolume(volume: number): void; stopPlaying(): void; } declare class VoiceDataStream { type: string; constructor(type: string): *; } declare export class VoiceConnectionManager extends Collection implements SimpleJSON { constructor(vcObject: () => T): *; join( guildID: string, channelID: string, options: VoiceResourceOptions ): Promise; leave(guildID: string): void; switch(guildID: string, channelID: string): void; toJSON(simple?: boolean): JSONCache; } declare class Base implements SimpleJSON { id: string; createdAt: number; constructor(id: string): *; inspect(): *; toJSON(simple?: boolean): JSONCache; } declare export class Bucket { tokens: number; lastReset: number; lastSend: number; tokenLimit: number; interval: number; constructor( tokenLimit: number, interval: number, latencyRef: { latency: number } ): *; queue(func: Function): void; } declare export class Collection extends Map { baseObject: (...args: any[]) => T; limit: number; constructor(baseObject: (...args: any[]) => T, limit?: number): *; add(obj: T, extra?: any, replace?: boolean): T; find(func: (i: T) => boolean): T; random(): T; filter(func: (i: T) => boolean): T[]; map(func: (i: T) => R): R[]; update(obj: T, extra?: any, replace?: boolean): T; remove( obj: | T | { id: string } ): T; } declare export class Call extends Base { id: string; createdAt: number; channel: GroupChannel; voiceStates: Collection; participants: string[]; endedTimestamp: number; ringing: string[]; region: string; unavailable: boolean; constructor(data: BaseData, channel: GroupChannel): *; } declare export class Channel extends Base { id: string; mention: string; type: number; createdAt: number; constructor(data: BaseData): *; } declare export class ExtendedUser extends User { email: string; verified: boolean; mfaEnabled: boolean; } declare export class GroupChannel extends PrivateChannel { recipients: Collection; name: string; icon: string; iconURL: string; ownerID: string; edit(options: { name?: string, icon?: string, ownerID?: string }): Promise; addRecipient(userID: string): Promise; removeRecipient(userID: string): Promise; dynamicIconURL(format: string, size: number): string; } declare export class Guild extends Base { id: string; createdAt: number; name: string; verificationLevel: number; region: string; icon: string; afkChannelID: string; systemChannelID: string; afkTimeout: number; defaultNotifications: number; mfaLevel: number; joinedAt: number; ownerID: string; splash: string; unavailable: boolean; large: boolean; maxPresences: number; channels: Collection; members: Collection; memberCount: number; roles: Collection; shard: Shard; features: string[]; emojis: Emoji[]; iconURL: string; explicitContentFilter: number; constructor(data: BaseData, client: Client): *; fetchAllMembers(): void; dynamicIconURL(format: string, size: number): string; createChannel( name: string, type: string, parentID?: string ): Promise; createEmoji( options: { name: string, image: string, roles?: string[] }, reason?: string ): Promise; editEmoji( emojiID: string, options: { name: string, roles?: string[] }, reason?: string ): Promise; deleteEmoji(emojiID: string, reason?: string): Promise; createRole(options: RoleOptions, reason?: string): Promise; getPruneCount(days: number): Promise; pruneMembers(days: number, reason?: string): Promise; getRESTChannels(): Promise; getRESTEmojis(): Promise; getRESTEmoji(emojiID: string): Promise; getRESTMembers(limit?: number, after?: string): Promise; getRESTMember(memberID: string): Promise; getRESTRoles(): Promise; getEmbed(): Promise; getVoiceRegions(): Promise; leaveVoiceChannel(): void; editRole(roleID: string, options: RoleOptions): Promise; deleteRole(roleID: string): Promise; getAuditLogs( limit?: number, before?: string, actionType?: number ): Promise; getIntegrations(): Promise; editIntegration( integrationID: string, options: IntegrationOptions ): Promise; syncIntegration(integrationID: string): Promise; deleteIntegration(integrationID: string): Promise; getInvites(): Promise; editMember( memberID: string, options: MemberOptions, reason?: string ): Promise; addMemberRole( memberID: string, roleID: string, reason?: string ): Promise; removeMemberRole( memberID: string, roleID: string, reason?: string ): Promise; kickMember(userID: string, reason?: string): Promise; banMember( userID: string, deleteMessageDays?: number, reason?: string ): Promise; unbanMember(userID: string, reason?: string): Promise; edit(options: GuildOptions, reason?: string): Promise; delete(): Promise; leave(): Promise; getBans(): Promise; editNickname(nick: string): Promise; getWebhooks(): Promise; } declare export class GuildAuditLogEntry extends Base { id: string; guild: Guild; actionType: number; reason: string; user: User; targetID: string; target: Guild | AnyGuildChannel | Member | Invite | Role | any; before: any; after: any; count: number; channel: AnyGuildChannel; deleteMemberDays: number; membersRemoved: number; member: Member | any; role: Role | any; constructor(data: BaseData, guild: Guild): *; } declare export class GuildChannel extends Channel { guild: Guild; parentID: string; name: string; position: number; permissionOverwrites: Collection; nsfw: boolean; constructor(data: BaseData, guild: Guild): *; getInvites(): Promise; createInvite( options?: CreateInviteOptions, reason?: string ): Promise; permissionsOf(memberID: string): Permission; edit( options: { name?: string, topic?: string, bitrate?: number, userLimit?: number, nsfw?: boolean }, reason?: string ): Promise; editPosition(position: number): Promise; delete(reason?: string): Promise; editPermission( overwriteID: string, allow: number, deny: number, type: string, reason?: string ): Promise; deletePermission(overwriteID: string, reason?: string): Promise; } declare export class CategoryChannel extends GuildChannel { channels: Collection; } declare export class TextChannel extends GuildChannel implements Textable, Invitable { topic: string; lastMessageID: string; messages: Collection; constructor(data: BaseData, guild: Guild, messageLimit: number): *; getInvites(): Promise; createInvite( options?: CreateInviteOptions, reason?: string ): Promise; getWebhooks(): Promise; createWebhook( options: { name: string, avatar: string }, reason?: string ): Promise; sendTyping(): Promise; getMessage(messageID: string): Promise; getMessages( limit?: number, before?: string, after?: string, around?: string ): Promise; getPins(): Promise; createMessage( content: MessageContent, file?: MessageFile ): Promise; editMessage(messageID: string, content: MessageContent): Promise; pinMessage(messageID: string): Promise; unpinMessage(messageID: string): Promise; getMessageReaction( messageID: string, reaction: string, limit?: number, before?: string, after?: string ): Promise; addMessageReaction( messageID: string, reaction: string, userID?: string ): Promise; removeMessageReaction( messageID: string, reaction: string, userID?: string ): Promise; removeMessageReactions(messageID: string): Promise; deleteMessage(messageID: string, reason?: string): Promise; unsendMessage(messageID: string): Promise; } declare export class VoiceChannel extends GuildChannel implements Invitable { bitrate: number; userLimit: number; voiceMembers: Collection; join(options: VoiceResourceOptions): Promise; leave(): void; } declare export class GuildIntegration extends Base { id: string; createdAt: number; name: string; type: string; roleID: string; user: User; account: { id: string, name: string }; enabled: boolean; syncing: boolean; expireBehavior: number; expireGracePeriod: number; enableEmoticons: boolean; subscriberCount: number; syncedAt: number; constructor(data: BaseData, guild: Guild): *; edit(options: { expireBehavior: string, expireGracePeriod: string, enableEmoticons: string }): Promise; delete(): Promise; sync(): Promise; } declare export class Invite implements SimpleJSON { code: string; channel: { id: string, name: string }; guild: { id: string, name: string, splash?: string, icon?: string, textChannelCount?: number, voiceChannelCount?: number }; inviter: User; uses: number; maxUses: number; maxAge: number; temporary: boolean; createdAt: number; revoked: boolean; presenceCount: number; memberCount: number; constructor(data: BaseData, client: Client): *; delete(reason?: string): Promise; toJSON(simple?: boolean): JSONCache; } declare export class Member extends Base { id: string; mention: string; guild: Guild; joinedAt: number; status: string; game: GamePresence; voiceState: VoiceState; nick: string; roles: string[]; user: User; permission: Permission; defaultAvatar: string; createdAt: number; bot: boolean; username: string; discriminator: string; avatar: string; defaultAvatarURL: string; avatarURL: string; staticAvatarURL: string; constructor(data: BaseData, guild: Guild): *; edit(options: MemberOptions, reason?: string): Promise; addRole(roleID: string, reason?: string): Promise; removeRole(roleID: string, reason?: string): Promise; kick(reason?: string): Promise; ban(deleteMessageDays?: number, reason?: string): Promise; unban(reason?: string): Promise; } declare export class Message extends Base { id: string; createdAt: number; channel: TextableChannel; timestamp: number; type: number; author: User; member: Member; mentions: User[]; content: string; cleanContent: string; roleMentions: string[]; channelMentions: string[]; editedTimestamp: number; tts: boolean; mentionEveryone: boolean; attachments: Attachment[]; embeds: Embed[]; reactions: { [s: string]: any, count: number, me: boolean }; prefix: string; command: Command; constructor(data: BaseData, client: Client): *; edit(content: MessageContent): Promise; pin(): Promise; unpin(): Promise; getReaction( reaction: string, limit?: number, before?: string, after?: string ): Promise; addReaction(reaction: string, userID?: string): Promise; removeReaction(reaction: string, userID?: string): Promise; removeReactions(): Promise; delete(reason?: string): Promise; } declare export class Permission { allow: number; deny: number; json: { [s: string]: boolean }; constructor(allow: number, deny: number): *; has(permission: string): boolean; } declare export class PermissionOverwrite extends Permission { id: string; createdAt: number; type: string; constructor(data: { allow: number, deny: number }): *; } declare export class PrivateChannel extends Channel implements Textable { lastMessageID: string; recipient: User; messages: Collection; ring(recipient: string[]): void; syncCall(): void; leave(): Promise; sendTyping(): Promise; getMessage(messageID: string): Promise; getMessages( limit?: number, before?: string, after?: string, around?: string ): Promise; getPins(): Promise; createMessage( content: MessageContent, file?: MessageFile ): Promise; editMessage(messageID: string, content: MessageContent): Promise; pinMessage(messageID: string): Promise; unpinMessage(messageID: string): Promise; getMessageReaction( messageID: string, reaction: string, limit?: number, before?: string, after?: string ): Promise; addMessageReaction( messageID: string, reaction: string, userID?: string ): Promise; removeMessageReaction( messageID: string, reaction: string, userID?: string ): Promise; removeMessageReactions(messageID: string): Promise; deleteMessage(messageID: string, reason?: string): Promise; unsendMessage(messageID: string): Promise; } declare export class Relationship { id: string; user: User; type: number; status: string; game: GamePresence; constructor(data: BaseData, client: Client): *; } declare export class Role extends Base { id: string; createdAt: number; guild: Guild; mention: string; name: string; mentionable: boolean; managed: boolean; hoist: boolean; color: number; position: number; permissions: Permission; json: { [s: string]: boolean }; constructor(data: BaseData, guild: Guild): *; edit(options: RoleOptions, reason?: string): Promise; editPosition(position: number): Promise; delete(reason?: string): Promise; } declare export class UnavailableGuild extends Base { id: string; createdAt: number; unavailable: boolean; shard: Shard; constructor(data: BaseData, client: Client): *; } declare export class User extends Base { id: string; mention: string; defaultAvatar: string; createdAt: number; bot: boolean; username: string; discriminator: string; avatar: string; defaultAvatarURL: string; avatarURL: string; staticAvatarURL: string; constructor(data: BaseData, client: Client): *; dynamicAvatarURL(format?: string, size?: number): string; getDMChannel(): Promise; addRelationship(block?: boolean): Promise; removeRelationship(): Promise; getProfile(): Promise; editNote(note: string): Promise; deleteNote(): Promise; } declare export class VoiceState extends Base implements NestedJSON { id: string; createdAt: number; sessionID: string; channelID: string; mute: boolean; deaf: boolean; suppress: boolean; selfMute: boolean; selfDeaf: boolean; constructor(data: BaseData): *; toJSON(arg?: any, cache?: Array): JSONCache; } declare export class Shard extends events$EventEmitter implements SimpleJSON, Emittable { id: number; connecting: boolean; ready: boolean; discordServerTrace: string[]; status: string; lastHeartbeatReceived: number; lastHeartbeatSent: number; latency: number; constructor(id: number, client: Client): *; connect(): void; disconnect(options?: { reconnect: boolean }): void; editAFK(afk: boolean): void; editStatus(status?: string, game?: GamePresence): void; on(event: string, listener: Function): *; on(event: "ready" | "disconnect", listener: () => void): *; on( event: "callCreate" | "callRing" | "callDelete", listener: (call: Call) => void ): *; on( event: "callUpdate", listener: (call: Call, oldCall: OldCall) => void ): *; on( event: "channelCreate" | "channelDelete", listener: (channel: AnyChannel) => void ): *; on( event: "channelPinUpdate", listener: ( channel: TextableChannel, timestamp: number, oldTimestamp: number ) => void ): *; on( event: "channelRecipientAdd" | "channelRecipientRemove", listener: (channel: GroupChannel, user: User) => void ): *; on( event: "channelUpdate", listener: (channel: AnyChannel, oldChannel: OldChannel) => void ): *; on( event: "friendSuggestionCreate", listener: (user: User, reasons: FriendSuggestionReasons) => void ): *; on(event: "friendSuggestionDelete", listener: (user: User) => void): *; on( event: "guildAvailable" | "guildBanAdd" | "guildBanRemove", listener: (guild: Guild, user: User) => void ): *; on( event: "guildDelete" | "guildUnavailable" | "guildCreate", listener: (guild: Guild) => void ): *; on( event: "guildEmojisUpdate", listener: (guild: Guild, emojis: Emoji[], oldEmojis: Emoji[]) => void ): *; on( event: "guildMemberAdd", listener: (guild: Guild, member: Member) => void ): *; on( event: "guildMemberChunk", listener: (guild: Guild, members: Member[]) => void ): *; on( event: "guildMemberRemove", listener: (guild: Guild, member: Member | MemberPartial) => void ): *; on( event: "guildMemberUpdate", listener: ( guild: Guild, member: Member, oldMember: { roles: string[], nick?: string } ) => void ): *; on( event: "guildRoleCreate" | "guildRoleDelete", listener: (guild: Guild, role: Role) => void ): *; on( event: "guildRoleUpdate", listener: (guild: Guild, role: Role, oldRole: RoleOptions) => void ): *; on( event: "guildUpdate", listener: (guild: Guild, oldGuild: GuildOptions) => void ): *; on(event: "hello", listener: (trace: string[], id: number) => void): *; on(event: "messageCreate", listener: (message: Message) => void): *; on( event: "messageDelete" | "messageReactionRemoveAll", listener: (message: PossiblyUncachedMessage) => void ): *; on( event: "messageDeleteBulk", listener: (messages: PossiblyUncachedMessage[]) => void ): *; on( event: "messageReactionAdd" | "messageReactionRemove", listener: ( message: PossiblyUncachedMessage, emoji: Emoji, userID: string ) => void ): *; on( event: "messageUpdate", listener: ( message: Message, oldMessage?: { attachments: Attachment[], embeds: Embed[], content: string, editedTimestamp?: number, mentionedBy?: any, tts: boolean, mentions: string[], roleMentions: string[], channelMentions: string[] } ) => void ): *; on( event: "presenceUpdate", listener: ( other: Member | Relationship, oldPresence?: OldPresence ) => void ): *; on( event: "rawWS" | "unknown", listener: (packet: RawPacket, id: number) => void ): *; on( event: "relationshipAdd" | "relationshipRemove", listener: (relationship: Relationship) => void ): *; on( event: "relationshipUpdate", listener: ( relationship: Relationship, oldRelationship: { type: number } ) => void ): *; on( event: "shardPreReady" | "connect", listener: (id: number) => void ): *; on( event: "typingStart", listener: (channel: TextableChannel, user: User) => void ): *; on( event: "unavailableGuildCreate", listener: (guild: UnavailableGuild) => void ): *; on( event: "userUpdate", listener: ( user: User, oldUser: { username: string, discriminator: string, avatar?: string } ) => void ): *; on( event: "voiceChannelJoin", listener: (member: Member, newChannel: VoiceChannel) => void ): *; on( event: "voiceChannelLeave", listener: (member: Member, oldChannel: VoiceChannel) => void ): *; on( event: "voiceChannelSwitch", listener: ( member: Member, newChannel: VoiceChannel, oldChannel: VoiceChannel ) => void ): *; on( event: "voiceStateUpdate", listener: (member: Member, oldState: OldVoiceState) => void ): *; on( event: "warn" | "debug", listener: (message: string, id: number) => void ): *; on(event: "disconnect", listener: (err: Error) => void): *; on(event: "resume", listener: () => void): *; toJSON(simple?: boolean): JSONCache; sendWS(op: number, _data: { [key: string]: any }): void; } declare export class Command { subcommands: { [s: string]: Command }; constructor( label: string, generate: CommandGenerator, options?: CommandOptions ): *; registerSubcommandAlias(alias: string, label: string): void; registerSubcommand( label: string, generator: CommandGenerator, options?: CommandOptions ): void; unregisterSubcommand(label: string): void; } declare export class CommandClient extends Client { commands: { [s: string]: Command }; constructor( token: string, options?: ClientOptions, commandOptions?: CommandClientOptions ): *; onMessageCreate(msg: Message): void; registerGuildPrefix(guildID: string, prefix: string[] | string): void; registerCommandAlias(alias: string, label: string): void; registerCommand( label: string, generator: CommandGenerator, options?: CommandOptions ): Command; unregisterCommand(label: string): void; } }