diff --git a/package.json b/package.json index 147904163..9ab5e3ae5 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "10.0.1", "description": "A powerful library for interacting with the Discord API", "main": "./src/index", + "types": "./typings/index.d.ts", "scripts": { "test": "eslint src && docgen --source src --custom docs/index.yml", "docs": "docgen --source src --custom docs/index.yml --output docs/docs.json", @@ -29,6 +30,7 @@ }, "homepage": "https://github.com/hydrabolt/discord.js#readme", "dependencies": { + "@types/node": "^6.0.51", "pako": "^1.0.3", "superagent": "^3.0.0", "tweetnacl": "^0.14.3", diff --git a/typings/index.d.ts b/typings/index.d.ts new file mode 100644 index 000000000..6538718fb --- /dev/null +++ b/typings/index.d.ts @@ -0,0 +1,761 @@ +// Type definitions for discord.js 10.0.1 +// Project: https://github.com/hydrabolt/discord.js +// Definitions by: acdenisSK (https://github.com/acdenisSK) + +declare module "discord.js" { + import { EventEmitter } from "events"; + import { Readable as ReadableStream } from "stream"; + import { ChildProcess } from "child_process"; + + export const version: string; + export class Client extends EventEmitter { + constructor(options?: ClientOptions); + email: string; + emojis: Collection; + guilds: Collection; + channels: Collection; + options: ClientOptions; + password: string; + readyAt: Date; + readyTimestamp: number; + status: number; + token: string; + uptime: number; + user: ClientUser; + users: Collection; + voiceConnections: Collection; + clearInterval(timeout: NodeJS.Timer): void; + clearTimeout(timeout: NodeJS.Timer): void; + destroy(): Promise; + fetchInvite(code: string): Promise; + fetchUser(id: string): Promise; + login(tokenOrEmail: string, password?: string): Promise; + setInterval(fn: Function, delay: number, ...args: any[]): NodeJS.Timer; + setTimeout(fn: Function, delay: number, ...args: any[]): NodeJS.Timer; + sweepMessages(lifetime?: number): number; + syncGuilds(guilds?: Guild[]): void; + on(event: string, listener: Function): this; + on(event: "debug", listener: (the: string) => void): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "guildBanAdd", listener: (user: User) => void): this; + on(event: "guildBanRemove", listener: (user: User) => void): this; + on(event: "guildCreate", listener: (guild: Guild) => void): this; + on(event: "guildDelete", listener: (guild: Guild) => void): this; + on(event: "guildEmojiCreate", listener: (emoji: Emoji) => void): this; + on(event: "guildEmojiDelete", listener: (emoji: Emoji) => void): this; + on(event: "guildEmojiUpdate", listener: (oldEmoji: Emoji, newEmoji: Emoji) => void): this; + on(event: "guildMemberAdd", listener: (member: GuildMember) => void): this; + on(event: "guildMemberAvailable", listener: (member: GuildMember) => void): this; + on(event: "guildMemberRemove", listener: (member: GuildMember) => void): this; + on(event: "guildMembersChunk", listener: (members: GuildMember[]) => void): this; + on(event: "guildMemberSpeaking", listener: (member: GuildMember, speaking: boolean) => void): this; + on(event: "guildMemberUpdate", listener: (oldMember: GuildMember, newMember: GuildMember) => void): this; + on(event: "roleCreate", listener: (role: Role) => void): this; + on(event: "roleDelete", listener: (role: Role) => void): this; + on(event: "roleUpdate", listener: (oldRole: Role, newRole: Role) => void): this; + on(event: "guildUnavailable", listener: (guild: Guild) => void): this; + on(event: "guildUpdate", listener: (oldGuild: Guild, newGuild: Guild) => void): this; + on(event: "channelCreate", listener: (channel: Channel) => void): this; + on(event: "channelDelete", listener: (channel: Channel) => void): this; + on(event: "channelPinsUpdate", listener: (channel: Channel, time: Date) => void): this; + on(event: "channelUpdate", listener: (oldChannel: Channel, newChannel: Channel) => void): this; + on(event: "message", listener: (message: Message) => void): this; + on(event: "messageDelete", listener: (message: Message) => void): this; + on(event: "messageDeleteBulk", listener: (messages: Collection) => void): this; + on(event: "messageUpdate", listener: (oldMessage: Message, newMessage: Message) => void): this; + on(event: "presenceUpdate", listener: (oldUser: User, newUser: User) => void): this; + on(event: "ready", listener: () => void): this; + on(event: "reconnecting", listener: () => void): this; + on(event: "typingStart", listener: (channel: Channel, user: User) => void): this; + on(event: "typingStop", listener: (channel: Channel, user: User) => void): this; + on(event: "userUpdate", listener: (oldClientUser: ClientUser, newClientUser: ClientUser) => void): this; + on(event: "voiceStateUpdate", listener: (oldMember: GuildMember, newMember: GuildMember) => void): this; + on(event: "warn", listener: (the: string) => void): this; + } + export class Webhook { + avatar: string; + client: Client; + guildID: string; + channelID: string; + id: string; + name: string; + token: string; + delete(): Promise; + edit(name: string, avatar: FileResolvable): Promise; + sendCode(lang: string, content: StringResolvable, options?: WebhookMessageOptions): Promise; + sendFile(attachment: FileResolvable, fileName?: string, content?: StringResolvable, options?: WebhookMessageOptions): Promise; + sendMessage(content: StringResolvable, options?: WebhookMessageOptions): Promise; + sendSlackMessage(body: Object): Promise; + sendTTSMessage(content: StringResolvable, options?: WebhookMessageOptions): Promise; + } + class SecretKey { + key: Uint8Array; + } + class RequestHandler { // docs going nowhere again, yay + constructor(restManager: {}); + globalLimit: boolean; + queue: {}[]; + restManager: {}; + handle(); + push(request: {}); + } + export class WebhookClient extends Webhook { + contructor(id: string, token: string, options?: ClientOptions); + options: ClientOptions; + } + export class Emoji { + client: Client; + createdAt: Date; + createdTimestamp: number; + guild: Guild; + id: string; + managed: boolean; + name: string; + requiresColons: boolean; + roles: Collection; + url: string; + toString(): string; + } + export class ReactionEmoji { + id: string; + identifier: string; + name: string; + reaction: MessageReaction; + toString(): string; + } + export class ClientUser extends User { + email: string; + verified: boolean; + blocked: Collection; + friends: Collection; + addFriend(user: UserResolvable): Promise; + removeFriend(user: UserResolvable): Promise; + setAvatar(avatar: Base64Resolvable): Promise; + setEmail(email: string): Promise; + setPassword(password: string): Promise; + setStatus(status?: string): Promise; + setGame(game: string, streamingURL?: string): Promise; + setPresence(data: Object): Promise; + setUsername(username: string): Promise; + createGuild(name: string, region: string, icon?: FileResolvable): Promise; + } + export class Presence { + game: Game; + status: string; + equals(other: Presence): boolean; + } + export class Channel { + client: Client; + createdAt: Date; + createdTimestamp: number; + id: string; + type: string; + delete(): Promise; + } + export class DMChannel extends Channel { + lastMessageID: string; + messages: Collection; + recipient: User; + typing: boolean; + typingCount: number; + awaitMessages(filter: CollectorFilterFunction, options?: AwaitMessagesOptions): Promise>; + bulkDelete(messages: Collection | Message[] | number): Collection; + createCollector(filter: CollectorFilterFunction, options?: CollectorOptions): MessageCollector; + fetchMessage(messageID: string): Promise; + fetchMessages(options?: ChannelLogsQueryOptions): Promise>; + fetchPinnedMessages(): Promise>; + sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise; + sendFile(attachment: FileResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise; + sendMessage(content: string, options?: MessageOptions): Promise; + sendTTSMessage(content: string, options?: MessageOptions): Promise; + startTyping(count?: number): void; + stopTyping(force?: boolean): void; + toString(): string; + } + export class GroupDMChannel extends Channel { + lastMessageID: string; + messages: Collection; + recipients: Collection; + owner: User; + typing: boolean; + typingCount: number; + awaitMessages(filter: CollectorFilterFunction, options?: AwaitMessagesOptions): Promise>; + bulkDelete(messages: Collection | Message[] | number): Collection; + createCollector(filter: CollectorFilterFunction, options?: CollectorOptions): MessageCollector; + fetchMessage(messageID: string): Promise; + fetchMessages(options?: ChannelLogsQueryOptions): Promise>; + fetchPinnedMessages(): Promise>; + sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise; + sendFile(attachment: FileResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise; + sendMessage(content: string, options?: MessageOptions): Promise; + sendTTSMessage(content: string, options?: MessageOptions): Promise; + startTyping(count?: number): void; + stopTyping(force?: boolean): void; + toString(): string; + } + export class GuildChannel extends Channel { + guild: Guild; + name: string; + permissionOverwrites: Collection; + position: number; + createInvite(options?: InviteOptions): Promise; + equals(channel: GuildChannel): boolean; + overwritePermissions(userOrRole: Role | User, options: PermissionOverwriteOptions): Promise; + permissionsFor(member: GuildMemberResolvable): EvaluatedPermissions; + setName(name: string): Promise; + setPosition(position: number): Promise; + setTopic(topic: string): Promise; + toString(): string; + } + export class TextChannel extends GuildChannel { + lastMessageID: string; + members: Collection; + messages: Collection; + topic: string; + typing: boolean; + typingCount: number; + awaitMessages(filter: CollectorFilterFunction, options?: AwaitMessagesOptions): Promise>; + bulkDelete(messages: Collection | Message[] | number): Collection; + createCollector(filter: CollectorFilterFunction, options?: CollectorOptions): MessageCollector; + fetchMessage(messageID: string): Promise; + fetchMessages(options?: ChannelLogsQueryOptions): Promise>; + fetchPinnedMessages(): Promise>; + sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise; + sendFile(attachment: FileResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise; + sendMessage(content: string, options?: MessageOptions): Promise; + sendTTSMessage(content: string, options?: MessageOptions): Promise; + startTyping(count?: number): void; + stopTyping(force?: boolean): void; + } + export class MessageCollector extends EventEmitter { + constructor(channel: Channel, filter: CollectorFilterFunction, options?: CollectorOptions); + collected: Collection; + filter: CollectorFilterFunction; + channel: Channel; + options: CollectorOptions; + stop(reason?: string): void; + on(event: "end", listener: (collection: Collection, reason: string) => void): this; + on(event: "message", listener: (message: Message, collector: MessageCollector) => void): this; + } + export class Game { + name: string; + streaming: boolean; + url: string; + type: number; + equals(other: Game): boolean; + } + export class PermissionOverwrites { + channel: GuildChannel; + id: string; + type: string; + delete(): Promise; + } + export class Guild { + afkChannelID: string; + afkTimeout: number; + available: boolean; + client: Client; + createdAt: Date; + createdTimestamp: number; + defaultChannel: GuildChannel; + embedEnabled: boolean; + emojis: Collection; + features: Object[]; + channels: Collection; + icon: string; + iconURL: string; + id: string; + joinDate: Date; + large: boolean; + memberCount: number; + members: Collection; + name: string; + owner: GuildMember; + ownerID: string; + region: string; + roles: Collection; + splash: string; + verificationLevel: number; + voiceConnection: VoiceConnection; + ban(user: GuildMember, deleteDays?: number): Promise; + createChannel(name: string, type: "text" | "voice"): Promise; + createRole(data?: RoleData): Promise; + delete(): Promise; + edit(data: {}): Promise; + equals(guild: Guild): boolean; + fetchBans(): Promise>; + fetchInvites(): Promise>; + fetchMember(user: UserResolvable): Promise; + fetchMembers(query?: string): Promise; + leave(): Promise; + member(user: UserResolvable): GuildMember; + pruneMembers(days: number, dry?: boolean): Promise; + setAFKChannel(afkChannel: ChannelResovalble): Promise; + setAFKTimeout(afkTimeout: number): Promise; + setIcon(icon: Base64Resolvable): Promise; + setName(name: string): Promise; + setOwner(owner: GuildMemberResolvable): Promise; + setRegion(region: string): Promise; + setSplash(splash: Base64Resolvable): Promise; + setVerificationLevel(level: number): Promise; + sync(): void; + toString(): string; + unban(user: UserResolvable): Promise; + } + export class GuildMember { + bannable: boolean; + client: Client; + deaf: boolean; + guild: Guild; + highestRole: Role; + id: string; + joinDate: Date; + kickable: boolean; + mute: boolean; + nickname: string; + permissions: EvaluatedPermissions; + roles: Collection; + selfDeaf: boolean; + selfMute: boolean; + serverDeaf: boolean; + serverMute: boolean; + speaking: boolean; + user: User; + voiceChannel: VoiceChannel; + voiceChannelID: string; + voiceSessionID: string; + addRole(role: Role | string): Promise; + addRoles(roles: Collection | Role[] | string[]): Promise; + ban(deleteDays?: number): Promise; + deleteDM(): Promise; + edit(data: {}): Promise; + hasPermission(permission: PermissionResolvable, explicit?: boolean): boolean; + hasPermissions(permission: Permissions[], explicit?: boolean): boolean; + kick(): Promise; + permissionsIn(channel: ChannelResovalble): EvaluatedPermissions; + removeRole(role: Role | string): Promise; + removeRoles(roles: Collection | Role[] | string[]): Promise; + sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise; + sendFile(attachment: FileResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise; + sendMessage(content: string, options?: MessageOptions): Promise; + sendTTSMessage(content: string, options?: MessageOptions): Promise; + setDeaf(deaf: boolean): Promise; + setMute(mute: boolean): Promise; + setNickname(nickname: string): Promise; + setRoles(roles: Collection | Role[] | string[]): Promise; + setVoiceChannel(voiceChannel: ChannelResovalble): Promise; + toString(): string; + } + export class User { + avatar: string; + avatarURL: string; + bot: boolean; + client: Client; + createdAt: Date; + createdTimestamp: number; + discriminator: string; + presence: Presence; + id: string; + status: string; + username: string; + block(): Promise; + unblock(): Promise; + fetchProfile(): Promise; + deleteDM(): Promise; + equals(user: User): boolean; + sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise; + sendFile(attachment: FileResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise; + sendMessage(content: string, options?: MessageOptions): Promise; + sendTTSMessage(content: string, options?: MessageOptions): Promise; + toString(): string; + } + export class PartialGuildChannel { + client: Client; + id: string; + name: string; + type: string; + } + export class PartialGuild { + client: Client; + icon: string; + id: string; + name: string; + splash: string; + } + class PendingVoiceConnection { + data: Object; + deathTimer: NodeJS.Timer; + channel: VoiceChannel; + voiceManager: ClientVoiceManager; + setSessionID(sessionID: string); + setTokenAndEndpoint(token: string, endpoint: string); + upgrade(): VoiceConnection; + } + export class OAuth2Application { + client: Client; + createdAt: Date; + createdTimestamp: number; + description: string; + icon: string; + iconURL: string; + id: string; + name: string; + rpcOrigins: string[]; + toString(): string; + } + export class ClientOAuth2Application extends OAuth2Application { + flags: number; + owner: User; + } + export class Message { + attachments: Collection; + author: User; + channel: TextChannel | DMChannel | GroupDMChannel; + cleanContent: string; + client: Client; + content: string; + createdAt: Date; + createdTimestamp: number; + deletable: boolean; + editable: boolean; + editedAt: Date; + editedTimestamp: number; + edits: Message[]; + embeds: MessageEmbed[]; + guild: Guild; + id: string; + member: GuildMember; + mentions: { + users: Collection; + roles: Collection; + channels: Collection; + everyone: boolean; + }; + nonce: string; + pinnable: boolean; + pinned: boolean; + reactions: Collection; + system: boolean; + tts: boolean; + type: string; + addReaction(emoji: string): MessageReaction; // Not really documented but still worth using/making typings for it. + delete(timeout?: number): Promise; + edit(content: StringResolvable): Promise; + editCode(lang: string, content: StringResolvable): Promise; + equals(message: Message, rawData: Object): boolean; + isMentioned(data: GuildChannel | User | Role | string): boolean; + pin(): Promise; + reply(content: StringResolvable, options?: MessageOptions): Promise; + toString(): string; + unpin(): Promise; + } + export class MessageEmbed { + author: MessageEmbedAuthor; + client: Client; + description: string; + message: Message; + provider: MessageEmbedProvider; + thumbnail: MessageEmbedThumbnail; + title: string; + type: string; + url: string; + } + export class MessageEmbedThumbnail { + embed: MessageEmbed; + height: number; + proxyURL: string; + url: string; + width: number; + } + export class MessageEmbedProvider { + embed: MessageEmbed; + name: string; + url: string; + } + export class MessageEmbedAuthor { + embed: MessageEmbed; + name: string; + url: string; + } + export class MessageAttachment { + client: Client; + filename: string; + filesize: number; + height: number; + id: string; + message: Message; + proxyURL: string; + url: string; + width: number; + } + export class MessageReaction { + count: number; + emoji: Emoji | ReactionEmoji; + me: boolean; + message: Message; + users: Collection; + fetchUsers(limit?: number): Promise>; + remove(user?: UserResolvable): Promise; + } + export class Invite { + client: Client; + code: string; + createdAt: Date; + createdTimestamp: number; + guild: Guild | PartialGuild; + channel: GuildChannel | PartialGuildChannel; + inviter: User; + maxUses: number; + temporary: boolean; + url: string; + uses: number; + delete(): Promise; + toString(): string; + } + export class VoiceChannel extends GuildChannel { + bitrate: number; + connection: VoiceConnection; + members: Collection; + userLimit: number; + join(): Promise; + leave(): null; + setBitrate(bitrate: number): Promise; + } + export class Shard { + id: string; + manager: ShardingManager; + process: ChildProcess; + eval(script: string): Promise; + fetchClientValue(prop: string): Promise; + send(message: any): Promise; + } + export class ShardingManager extends EventEmitter { + constructor(file: string, options?: { + totalShards?: number; + respawn?: boolean; + shardArgs?: string[]; + token?: string; + }); + file: string; + respawn: boolean; + shardArgs: string[]; + shards: Collection; + totalShards: number; + broadcast(message: any): Promise; + broadcastEval(script: string): Promise; + createShard(id: number): Promise; + fetchClientValues(prop: string): Promise; + spawn(amount?: number, delay?: number): Promise>; + on(event: "launch", listener: (shard: Shard) => void): this; + } + export class ShardClientUtil { + contructor(client: Client); + id: number; + count: number; + broadcastEval(script: string): Promise; + fetchClientValues(prop: string): Promise; + send(message: any): Promise; + singleton(client: Client): ShardClientUtil; + } + export class UserConnection { + id: string; + integrations: Object[]; + name: string; + revoked: boolean; + type: string; + user: User; + } + export class UserProfile { + client: Client; + connections: Collection; + mutualGuilds: Collection; + user: User; + } + export class StreamDispatcher extends EventEmitter { + passes: number; + time: number; + totalStreamTime: number; + volume: number; + end(): void; + pause(): void; + resume(): void; + setVolume(volume: number): void; + setVolumeDecibels(db: number): void; + setVolumeLogarithmic(value: number): void; + on(event: "debug", listener: (information: string) => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "speaking", listener: (value: boolean) => void): this; + on(event: "start", listener: () => void): this; + } + interface Permissions { + CREATE_INSTANT_INVITE: boolean; + KICK_MEMBERS: boolean; + BAN_MEMBERS: boolean; + ADMINISTRATOR: boolean; + MANAGE_CHANNELS: boolean; + MANAGE_GUILD: boolean; + READ_MESSAGES: boolean; + SEND_MESSAGES: boolean; + SEND_TTS_MESSAGES: boolean; + MANAGE_MESSAGES: boolean; + EMBED_LINKS: boolean; + ATTACH_FILES: boolean; + READ_MESSAGE_HISTORY: boolean; + MENTION_EVERYONE: boolean; + USE_EXTERNAL_EMOJIS: boolean; + CONNECT: boolean; + SPEAK: boolean; + MUTE_MEMBERS: boolean; + DEAFEN_MEMBERS: boolean; + MOVE_MEMBERS: boolean; + USE_VAD: boolean; + CHANGE_NICKNAME: boolean; + MANAGE_NICKNAMES: boolean; + MANAGE_ROLES: boolean; + MANAGE_WEBHOOKS: boolean; + } + export class EvaluatedPermissions { + member: GuildMember; + raw: number; + hasPermission(permission: PermissionResolvable, explicit?: boolean): boolean; + hasPermissions(permission: PermissionResolvable[], explicit?: boolean): boolean; + serialize(): Permissions; + } + export class Role { + client: Client; + color: number; + createdAt: Date; createdTimestamp: number; + guild: Guild; + hexColor: string; + hoist: boolean; + id: string; + managed: boolean; + members: Collection; + mentionable: boolean; + name: string; + permissions: number; + position: number; + delete(): Promise; + edit(data: RoleData): Promise; + equals(role: Role): boolean; + hasPermission(permission: PermissionResolvable, explicit?: boolean): boolean; + hasPermissions(permissions: PermissionResolvable[], explicit?: boolean): boolean; + serialize(): Permissions; + setColor(color: string | number): Promise; + setHoist(hoist: boolean): Promise; + setName(name: string): Promise; + setPermissions(permissions: string[]): Promise; + setPosition(position: number): Promise; + toString(): string; + } + export class ClientVoiceManager { + client: Client; + connections: Collection; + pending: Collection; + joinChannel(channel: VoiceChannel): Promise; + sendVoiceStateUpdate(channel: VoiceChannel, options?: Object); + } + class AudioPlayer extends EventEmitter { + dispatcher: StreamDispatcher; + voiceConnection: VoiceConnection; + } + export class VoiceConnection extends EventEmitter { + authentication: Object; + channel: VoiceChannel; + player: AudioPlayer; + receivers: VoiceReceiver[]; + sockets: Object; + ssrcMap: Map; + voiceManager: ClientVoiceManager; + createReceiver(): VoiceReceiver; + disconnect(); + playConvertedStream(stream: ReadableStream, options?: StreamOptions): StreamDispatcher; + playFile(file: string, options?: StreamOptions): StreamDispatcher; + playStream(stream: ReadableStream, options?: StreamOptions): StreamDispatcher; + on(event: "disconnect", listener: (error: Error) => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "ready", listener: () => void): this; + on(event: "speaking", listener: (user: User, speaking: boolean) => void): this; + } + export class VoiceReceiver extends EventEmitter { + connection: VoiceConnection; + destroyed: boolean; + createOpusStream(user: User): ReadableStream; + createPCMStream(user: User): ReadableStream; + destroy(): void; + recreate(): void; + on(event: "opus", listener: (user: User, buffer: Buffer) => void): this; + on(event: "pcm", listener: (user: User, buffer: Buffer) => void): this; + on(event: "warn", listener: (message: string) => void): this; + } + export class Collection extends Map { + array(): value[]; + concat(...collections: Collection[]): Collection; + deleteAll(): Promise; + every(fn: Function, thisArg?: Object): boolean; + exists(prop: string, value: any): boolean; + filter(fn: Function, thisArg?: Object): Collection; + filterArray(fn: Function, thisArg?: Object): value[]; + find(propOrFn: string | Function, value?: any): value; + findAll(prop: string, value: any): value[]; + findKey(propOrFn: string | Function, value?: any): key; + first(): value; + firstKey(): key; + keyArray(): key[]; + last(): value; + lastKey(): key; + map(fn: Function, thisArg?: Object): any[]; + random(): value; + randomKey(): key; + reduce(fn: Function, startVal?: any): any; + some(fn: Function, thisArg?: Object): boolean; + } + type CollectorOptions = { time?: number; max?: number }; + type AwaitMessagesOptions = { time?: number; max?: number; errors?: string[]; }; + type Base64Resolvable = Buffer | string; + type CollectorFilterFunction = (message: Message, collector: MessageCollector) => boolean; + type FileResolvable = Buffer | string; + type GuildMemberResolvable = GuildMember | User; + type GuildResolvable = Guild; + type ChannelLogsQueryOptions = { limit?: number; before?: string; after?: string; around?: string }; + type ChannelResovalble = Channel | Guild | Message | string; + type InviteOptions = { temporary?: boolean; maxAge?: number; maxUses?: number; }; + type MessageOptions = { tts?: boolean; nonce?: string; disableEveryone?: boolean; split?: boolean | SplitOptions; }; + type PermissionOverwriteOptions = Permissions; + type PermissionResolvable = string | string[] | number[]; + type SplitOptions = { maxLength?: number; char?: string; prepend?: string; append?: string; }; + type StreamOptions = { seek?: number; volume?: number; passes?: number; }; + type StringResolvable = any[] | string | any; + type UserResolvable = User | string | Message | Guild | GuildMember; + type WebSocketOptions = { large_threshold?: number; compress?: boolean; }; + type ClientOptions = { + apiRequestMethod?: string; + shardId?: number; + shardCount?: number; + maxMessageCache?: number; + messageCacheLifetime?: number; + messageSweepInterval?: number; + fetchAllMembers?: boolean; + disableEveryone?: boolean; + restWsBridgeTimeout?: number; + ws?: WebSocketOptions; + }; + type WebhookMessageOptions = { + tts?: boolean; + disableEveryone?: boolean; + }; + type WebhookOptions = { + large_threshold?: number; + compress?: boolean; + }; + type RoleData = { + name?: string; + color?: number | string; + hoist?: boolean; + position?: number; + permissions?: string[]; + mentionable?: boolean; + }; +} diff --git a/typings/tsconfig.json b/typings/tsconfig.json new file mode 100644 index 000000000..8c9dfd770 --- /dev/null +++ b/typings/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": false, + "strictNullChecks": true, + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts" + ] +} \ No newline at end of file