· 8 years ago · Jul 16, 2017, 08:38 PM
1// Type definitions for discord.js 11.0.0
2// Project: https://github.com/hydrabolt/discord.js
3// Definitions by:
4// acdenisSK <acdenissk69@gmail.com> (https://github.com/acdenisSK)
5// Zack Campbell <zajrik@gmail.com> (https://github.com/zajrik)
6// License: MIT
7
8declare module 'discord.js' {
9 import { EventEmitter } from 'events';
10 import { Readable as ReadableStream } from 'stream';
11 import { ChildProcess } from 'child_process';
12
13 export const version: string;
14 export class Client extends EventEmitter {
15 constructor(options?: ClientOptions);
16 browser: boolean;
17 channels: Collection<string, Channel>;
18 emojis: Collection<string, Emoji>;
19 guilds: Collection<string, Guild>;
20 options: ClientOptions;
21 ping: number;
22 pings: number[];
23 presences: Collection<string, Presence>;
24 readyAt: Date;
25 readyTimestamp: number;
26 shard: ShardClientUtil;
27 status: number;
28 token: string;
29 uptime: number;
30 user: ClientUser;
31 users: Collection<string, User>;
32 voiceConnections: Collection<string, VoiceConnection>;
33 clearInterval(timeout: NodeJS.Timer): void;
34 clearTimeout(timeout: NodeJS.Timer): void;
35 destroy(): Promise<void>;
36 fetchApplication(): Promise<ClientOAuth2Application>;
37 fetchInvite(code: string): Promise<Invite>;
38 fetchUser(id: string): Promise<User>;
39 fetchWebhook(id: string, token?: string): Promise<Webhook>;
40 generateInvite(permissions: PermissionResolvable[] | number): Promise<string>;
41 login(token: string): Promise<string>;
42 setInterval(fn: Function, delay: number, ...args: any[]): NodeJS.Timer;
43 setTimeout(fn: Function, delay: number, ...args: any[]): NodeJS.Timer;
44 sweepMessages(lifetime?: number): number;
45 syncGuilds(guilds?: Guild[] | Collection<string, Guild>): void;
46 on(event: string, listener: Function): this;
47 on(event: 'channelCreate', listener: (channel: Channel) => void): this;
48 on(event: 'channelDelete', listener: (channel: Channel) => void): this;
49 on(event: 'channelPinsUpdate', listener: (channel: Channel, time: Date) => void): this;
50 on(event: 'channelUpdate', listener: (oldChannel: Channel, newChannel: Channel) => void): this;
51 on(event: 'debug', listener: (info: string) => void): this;
52 on(event: 'disconnect', listener: () => void): this;
53 on(event: 'emojiCreate', listener: (emoji: Emoji) => void): this;
54 on(event: 'emojiCreate', listener: (emoji: Emoji) => void): this;
55 on(event: 'emojiUpdate', listener: (oldEmoji: Emoji, newEmoji: Emoji) => void): this;
56 on(event: 'error', listener: (error: Error) => void): this;
57 on(event: 'guildBanAdd', listener: (guild: Guild, user: User) => void): this;
58 on(event: 'guildBanRemove', listener: (guild: Guild, user: User) => void): this;
59 on(event: 'guildCreate', listener: (guild: Guild) => void): this;
60 on(event: 'guildDelete', listener: (guild: Guild) => void): this;
61 on(event: 'guildMemberAdd', listener: (member: GuildMember) => void): this;
62 on(event: 'guildMemberAvailable', listener: (member: GuildMember) => void): this;
63 on(event: 'guildMemberRemove', listener: (member: GuildMember) => void): this;
64 on(event: 'guildMembersChunk', listener: (members: GuildMember[]) => void): this;
65 on(event: 'guildMemberSpeaking', listener: (member: GuildMember, speaking: boolean) => void): this;
66 on(event: 'guildMemberUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this;
67 on(event: 'guildUnavailable', listener: (guild: Guild) => void): this;
68 on(event: 'guildUpdate', listener: (oldGuild: Guild, newGuild: Guild) => void): this;
69 on(event: 'message', listener: (message: Message) => void): this;
70 on(event: 'messageDelete', listener: (message: Message) => void): this;
71 on(event: 'messageDeleteBulk', listener: (messages: Collection<string, Message>) => void): this;
72 on(event: 'messageReactionAdd', listener: (messageReaction: MessageReaction, user: User) => void): this;
73 on(event: 'messageReactionRemove', listener: (messageReaction: MessageReaction, user: User) => void): this;
74 on(event: 'messageReactionRemoveAll', listener: (message: Message) => void): this;
75 on(event: 'messageUpdate', listener: (oldMessage: Message, newMessage: Message) => void): this;
76 on(event: 'presenceUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this;
77 on(event: 'ready', listener: () => void): this;
78 on(event: 'reconnecting', listener: () => void): this;
79 on(event: 'roleCreate', listener: (role: Role) => void): this;
80 on(event: 'roleDelete', listener: (role: Role) => void): this;
81 on(event: 'roleUpdate', listener: (oldRole: Role, newRole: Role) => void): this;
82 on(event: 'typingStart', listener: (channel: Channel, user: User) => void): this;
83 on(event: 'typingStop', listener: (channel: Channel, user: User) => void): this;
84 on(event: 'userNoteUpdate', listener: (user: UserResolvable, oldNote: string, newNote: string) => void): this;
85 on(event: 'userUpdate', listener: (oldUser: User, newUser: User) => void): this;
86 on(event: 'voiceStateUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this;
87 on(event: 'warn', listener: (info: string) => void): this;
88 }
89 export class Webhook {
90 avatar: string;
91 channelID: string;
92 client: Client;
93 guildID: string;
94 id: string;
95 name: string;
96 token: string;
97 delete(): Promise<void>;
98 edit(name: string, avatar: BufferResolvable): Promise<Webhook>;
99 sendCode(lang: string, content: StringResolvable, options?: WebhookMessageOptions): Promise<Message | Message[]>;
100 sendFile(attachment: BufferResolvable, fileName?: string, content?: StringResolvable, options?: WebhookMessageOptions): Promise<Message>;
101 sendMessage(content: StringResolvable, options?: WebhookMessageOptions): Promise<Message | Message[]>;
102 sendSlackMessage(body: Object): Promise<void>;
103 sendTTSMessage(content: StringResolvable, options?: WebhookMessageOptions): Promise<Message | Message[]>;
104 }
105 class SecretKey {
106 key: Uint8Array;
107 }
108 class RequestHandler {
109 constructor(restManager: {});
110 globalLimit: boolean;
111 queue: {}[];
112 restManager: {};
113 handle();
114 push(request: {});
115 }
116 export class WebhookClient extends Webhook {
117 constructor(id: string, token: string, options?: ClientOptions);
118 options: ClientOptions;
119 }
120 export class Emoji {
121 client: Client;
122 createdAt: Date;
123 createdTimestamp: number;
124 guild: Guild;
125 id: string;
126 identifier: string;
127 managed: boolean;
128 name: string;
129 requiresColons: boolean;
130 roles: Collection<string, Role>;
131 url: string;
132 equals(other: Emoji | Object): boolean;
133 toString(): string;
134 }
135 export class ReactionEmoji {
136 id: string;
137 identifier: string;
138 name: string;
139 reaction: MessageReaction;
140 toString(): string;
141 }
142 export class ClientUser extends User {
143 blocked: Collection<string, User>;
144 email: string;
145 friends: Collection<string, User>;
146 notes: Collection<string, string>;
147 verified: boolean;
148 addFriend(user?: UserResolvable): Promise<User>;
149 createGuild(name: string, region: string, icon?: BufferResolvable | Base64Resolvable): Promise<Guild>;
150 fetchMentions(options?: { limit?: number; roles?: boolean, everyone?: boolean; guild?: Guild | string }): Promise<Message[]>;
151 removeFriend(user?: UserResolvable): Promise<User>;
152 setAFK(afk: boolean): Promise<ClientUser>;
153 setAvatar(avatar: BufferResolvable | Base64Resolvable): Promise<ClientUser>;
154 setEmail(email: string, password: string): Promise<ClientUser>;
155 setGame(game: string, streamingURL?: string): Promise<ClientUser>;
156 setNote(note: string): Promise<User>;
157 setPassword(newPassword: string, oldPassword: string): Promise<ClientUser>;
158 setPresence(data: PresenceData): Promise<ClientUser>;
159 setStatus(status: PresenceStatus): Promise<ClientUser>;
160 setUsername(username: string, password?: string): Promise<ClientUser>;
161 }
162 export class Presence {
163 game: Game;
164 status: string;
165 equals(other: Presence): boolean;
166 }
167 export class Channel {
168 client: Client;
169 createdAt: Date;
170 createdTimestamp: number;
171 id: string;
172 type: 'dm' | 'group' | 'text' | 'voice';
173 delete(): Promise<Channel>;
174 }
175 export class DMChannel extends Channel {
176 lastMessageID: string;
177 messages: Collection<string, Message>;
178 recipient: User;
179 typing: boolean;
180 typingCount: number;
181 awaitMessages(filter: CollectorFilterFunction, options?: AwaitMessagesOptions): Promise<Collection<string, Message>>;
182 bulkDelete(messages: Collection<string, Message> | Message[] | number): Promise<Collection<string, Message>>;
183 createCollector(filter: CollectorFilterFunction, options?: CollectorOptions): MessageCollector;
184 fetchMessage(messageID: string): Promise<Message>;
185 fetchMessages(options?: ChannelLogsQueryOptions): Promise<Collection<string, Message>>;
186 fetchPinnedMessages(): Promise<Collection<string, Message>>;
187 send(content?: StringResolvable, options?: MessageOptions): string;
188 sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
189 sendEmbed(embed: RichEmbed, content?: string, options?: MessageOptions): Promise<Message>;
190 sendEmbed(embed: RichEmbed, options?: MessageOptions): Promise<Message>;
191 sendFile(attachment: BufferResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise<Message>;
192 sendMessage(content: string, options?: MessageOptions): Promise<Message | Message[]>;
193 startTyping(count?: number): void;
194 stopTyping(force?: boolean): void;
195 toString(): string;
196 }
197 export class GroupDMChannel extends Channel {
198 icon: string;
199 lastMessageID: string;
200 messages: Collection<string, Message>;
201 name: string;
202 owner: User;
203 ownerID: string;
204 recipients: Collection<string, User>;
205 typing: boolean;
206 typingCount: number;
207 awaitMessages(filter: CollectorFilterFunction, options?: AwaitMessagesOptions): Promise<Collection<string, Message>>;
208 bulkDelete(messages: Collection<string, Message> | Message[] | number): Promise<Collection<string, Message>>;
209 createCollector(filter: CollectorFilterFunction, options?: CollectorOptions): MessageCollector;
210 equals(channel: GroupDMChannel): boolean;
211 fetchMessage(messageID: string): Promise<Message>;
212 fetchMessages(options?: ChannelLogsQueryOptions): Promise<Collection<string, Message>>;
213 fetchPinnedMessages(): Promise<Collection<string, Message>>;
214 send(content?: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
215 sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
216 sendEmbed(embed: RichEmbed, content?: string, options?: MessageOptions): Promise<Message>;
217 sendEmbed(embed: RichEmbed, options?: MessageOptions): Promise<Message>;
218 sendFile(attachment: BufferResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise<Message>;
219 sendMessage(content: string, options?: MessageOptions): Promise<Message | Message[]>;
220 startTyping(count?: number): void;
221 stopTyping(force?: boolean): void;
222 toString(): string;
223 }
224 export class GuildChannel extends Channel {
225 guild: Guild;
226 name: string;
227 permissionOverwrites: Collection<string, PermissionOverwrites>;
228 position: number;
229 clone(name?: string, withPermissions?: boolean): Promise<GuildChannel>;
230 createInvite(options?: InviteOptions): Promise<Invite>;
231 edit(data: ChannelData): Promise<GuildChannel>;
232 equals(channel: GuildChannel): boolean;
233 overwritePermissions(userOrRole: RoleResolvable | UserResolvable, options: PermissionOverwriteOptions): Promise<void>;
234 permissionsFor(member: GuildMemberResolvable): EvaluatedPermissions;
235 setName(name: string): Promise<GuildChannel>;
236 setPosition(position: number): Promise<GuildChannel>;
237 setTopic(topic: string): Promise<GuildChannel>;
238 toString(): string;
239 }
240 export class TextChannel extends GuildChannel {
241 lastMessageID: string;
242 members: Collection<string, GuildMember>;
243 messages: Collection<string, Message>;
244 topic: string;
245 typing: boolean;
246 typingCount: number;
247 awaitMessages(filter: CollectorFilterFunction, options?: AwaitMessagesOptions): Promise<Collection<string, Message>>;
248 bulkDelete(messages: Collection<string, Message> | Message[] | number): Promise<Collection<string, Message>>;
249 createCollector(filter: CollectorFilterFunction, options?: CollectorOptions): MessageCollector;
250 createWebhook(name: string, avatar: BufferResolvable): Promise<Webhook>;
251 fetchMessage(messageID: string): Promise<Message>;
252 fetchMessages(options?: ChannelLogsQueryOptions): Promise<Collection<string, Message>>;
253 fetchPinnedMessages(): Promise<Collection<string, Message>>;
254 fetchWebhooks(): Promise<Collection<string, Webhook>>;
255 send(content?: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
256 sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
257 sendEmbed(embed: RichEmbed, content?: string, options?: MessageOptions): Promise<Message>;
258 sendEmbed(embed: RichEmbed, options?: MessageOptions): Promise<Message>;
259 sendFile(attachment: BufferResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise<Message>;
260 sendMessage(content: string, options?: MessageOptions): Promise<Message | Message[]>;
261 startTyping(count?: number): void;
262 stopTyping(force?: boolean): void;
263 }
264 export class MessageCollector extends EventEmitter {
265 constructor(channel: Channel, filter: CollectorFilterFunction, options?: CollectorOptions);
266 channel: Channel;
267 collected: Collection<string, Message>;
268 filter: CollectorFilterFunction;
269 next: Promise<Message>;
270 options: CollectorOptions;
271 stop(reason?: string): void;
272 on(event: 'end', listener: (collection: Collection<string, Message>, reason: string) => void): this;
273 on(event: 'message', listener: (message: Message, collector: MessageCollector) => void): this;
274 }
275 export class Game {
276 name: string;
277 streaming: boolean;
278 type: number;
279 url: string;
280 equals(other: Game): boolean;
281 }
282 export class PermissionOverwrites {
283 channel: GuildChannel;
284 id: string;
285 type: string;
286 delete(): Promise<PermissionOverwrites>;
287 }
288 export class Guild {
289 afkChannelID: string;
290 afkTimeout: number;
291 applicationID: string;
292 available: boolean;
293 channels: Collection<string, GuildChannel>;
294 client: Client;
295 createdAt: Date;
296 createdTimestamp: number;
297 defaultChannel: GuildChannel;
298 embedEnabled: boolean;
299 emojis: Collection<string, Emoji>;
300 features: Object[];
301 icon: string;
302 iconURL: string;
303 id: string;
304 joinedAt: Date;
305 joinedTimestamp: number;
306 large: boolean;
307 memberCount: number;
308 members: Collection<string, GuildMember>;
309 name: string;
310 owner: GuildMember;
311 ownerID: string;
312 presences: Collection<string, Presence>;
313 region: string;
314 roles: Collection<string, Role>;
315 splash: string;
316 splashURL: string;
317 verificationLevel: number;
318 voiceConnection: VoiceConnection;
319 ban(user: GuildMember, deleteDays?: number): Promise<GuildMember | User | string>;
320 createChannel(name: string, type: 'text' | 'voice', overwrites?: PermissionOverwrites[]): Promise<TextChannel | VoiceChannel>;
321 createEmoji(attachment: BufferResolvable, name: string): Promise<Emoji>;
322 createRole(data?: RoleData): Promise<Role>;
323 delete(): Promise<Guild>;
324 deleteEmoji(emoji: Emoji | string): Promise<void>;
325 edit(data: GuildEditData): Promise<Guild>;
326 equals(guild: Guild): boolean;
327 fetchBans(): Promise<Collection<string, User>>;
328 fetchInvites(): Promise<Collection<string, Invite>>;
329 fetchMember(user: UserResolvable): Promise<GuildMember>;
330 fetchMembers(query?: string): Promise<Guild>;
331 fetchWebhooks(): Collection<string, Webhook>;
332 leave(): Promise<Guild>;
333 member(user: UserResolvable): GuildMember;
334 pruneMembers(days: number, dry?: boolean): Promise<number>;
335 setAFKChannel(afkChannel: ChannelResovalble): Promise<Guild>;
336 setAFKTimeout(afkTimeout: number): Promise<Guild>;
337 setIcon(icon: Base64Resolvable): Promise<Guild>;
338 setName(name: string): Promise<Guild>;
339 setOwner(owner: GuildMemberResolvable): Promise<Guild>;
340 setRegion(region: string): Promise<Guild>;
341 setRolePosition(role: string | Role, position: number): Promise<Guild>;
342 setSplash(splash: Base64Resolvable): Promise<Guild>;
343 setVerificationLevel(level: number): Promise<Guild>;
344 sync(): void;
345 toString(): string;
346 unban(user: UserResolvable): Promise<User>;
347 }
348 export class GuildMember {
349 bannable: boolean;
350 client: Client;
351 deaf: boolean;
352 displayName: string;
353 guild: Guild;
354 highestRole: Role;
355 id: string;
356 joinedAt: Date;
357 joinedTimestamp: number;
358 kickable: boolean;
359 lastMessageID: string;
360 mute: boolean;
361 nickname: string;
362 permissions: EvaluatedPermissions;
363 presence: Presence;
364 roles: Collection<string, Role>;
365 selfDeaf: boolean;
366 selfMute: boolean;
367 serverDeaf: boolean;
368 serverMute: boolean;
369 speaking: boolean;
370 user: User;
371 voiceChannel: VoiceChannel;
372 voiceChannelID: string;
373 voiceSessionID: string;
374 addRole(role: Role | string): Promise<GuildMember>;
375 addRoles(roles: Collection<string, Role> | Role[] | string[]): Promise<GuildMember>;
376 ban(deleteDays?: number): Promise<GuildMember>;
377 deleteDM(): Promise<DMChannel>;
378 edit(data: {}): Promise<GuildMember>;
379 hasPermission(permission: PermissionResolvable, explicit?: boolean): boolean;
380 hasPermissions(permission: PermissionResolvable[], explicit?: boolean): boolean;
381 kick(): Promise<GuildMember>;
382 missingPermissions(permissions: PermissionResolvable[], explicit?: boolean): PermissionResolvable[];
383 permissionsIn(channel: ChannelResovalble): EvaluatedPermissions;
384 removeRole(role: Role | string): Promise<GuildMember>;
385 removeRoles(roles: Collection<string, Role> | Role[] | string[]): Promise<GuildMember>;
386 send(content?: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
387 sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
388 sendEmbed(embed: RichEmbed, content?: string, options?: MessageOptions): Promise<Message>;
389 sendEmbed(embed: RichEmbed, options?: MessageOptions): Promise<Message>;
390 sendFile(attachment: BufferResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise<Message>;
391 sendMessage(content: string, options?: MessageOptions): Promise<Message | Message[]>;
392 setDeaf(deaf: boolean): Promise<GuildMember>;
393 setMute(mute: boolean): Promise<GuildMember>;
394 setNickname(nickname: string): Promise<GuildMember>;
395 setRoles(roles: Collection<string, Role> | Role[] | string[]): Promise<GuildMember>;
396 setVoiceChannel(voiceChannel: ChannelResovalble): Promise<GuildMember>;
397 toString(): string;
398 }
399 export class User {
400 avatar: string;
401 avatarURL: string;
402 bot: boolean;
403 client: Client;
404 createdAt: Date;
405 createdTimestamp: number;
406 defaultAvatarURL: string;
407 discriminator: string;
408 displayAvatarURL: string;
409 dmChannel: DMChannel;
410 id: string;
411 lastMessageID: string;
412 note: string;
413 presence: Presence;
414 username: string;
415 addFriend(): Promise<User>;
416 block(): Promise<User>;
417 deleteDM(): Promise<DMChannel>;
418 equals(user: User): boolean;
419 fetchProfile(): Promise<UserProfile>;
420 removeFriend(): Promise<User>;
421 send(content?: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
422 sendCode(lang: string, content: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
423 sendEmbed(embed: RichEmbed, content?: string, options?: MessageOptions): Promise<Message>;
424 sendEmbed(embed: RichEmbed, options?: MessageOptions): Promise<Message>;
425 sendFile(attachment: BufferResolvable, fileName?: string, content?: StringResolvable, options?: MessageOptions): Promise<Message>;
426 sendMessage(content: string, options?: MessageOptions): Promise<Message | Message[]>;
427 setNote(note: string): Promise<User>;
428 toString(): string;
429 typingDurationIn(channel: ChannelResovalble): number;
430 typingIn(channel: ChannelResovalble): boolean;
431 typingSinceIn(channel: ChannelResovalble): Date;
432 unblock(): Promise<User>;
433 }
434 export class PartialGuildChannel {
435 client: Client;
436 id: string;
437 name: string;
438 type: string;
439 }
440 export class PartialGuild {
441 client: Client;
442 icon: string;
443 id: string;
444 name: string;
445 splash: string;
446 }
447 class PendingVoiceConnection {
448 channel: VoiceChannel;
449 data: Object;
450 deathTimer: NodeJS.Timer;
451 voiceManager: ClientVoiceManager;
452 setSessionID(sessionID: string);
453 setTokenAndEndpoint(token: string, endpoint: string);
454 upgrade(): VoiceConnection;
455 }
456 export class OAuth2Application {
457 client: Client;
458 createdAt: Date;
459 createdTimestamp: number;
460 description: string;
461 icon: string;
462 iconURL: string;
463 id: string;
464 name: string;
465 rpcOrigins: string[];
466 toString(): string;
467 }
468 export class ClientOAuth2Application extends OAuth2Application {
469 flags: number;
470 owner: User;
471 }
472 export class Message {
473 attachments: Collection<string, MessageAttachment>;
474 author: User;
475 channel: TextChannel | DMChannel | GroupDMChannel;
476 cleanContent: string;
477 client: Client;
478 content: string;
479 createdAt: Date;
480 createdTimestamp: number;
481 deletable: boolean;
482 editable: boolean;
483 editedAt: Date;
484 editedTimestamp: number;
485 edits: Message[];
486 embeds: MessageEmbed[];
487 guild: Guild;
488 id: string;
489 member: GuildMember;
490 mentions: {
491 users: Collection<string, User>;
492 roles: Collection<string, Role>;
493 channels: Collection<string, GuildChannel>;
494 everyone: boolean;
495 };
496 nonce: string;
497 pinnable: boolean;
498 pinned: boolean;
499 reactions: Collection<string, MessageReaction>;
500 system: boolean;
501 tts: boolean;
502 type: string;
503 webhookID: string;
504 clearReactions(): Promise<Message>;
505 delete(timeout?: number): Promise<Message>;
506 edit(content: StringResolvable, options?: MessageEditOptions): Promise<Message>;
507 editCode(lang: string, content: StringResolvable): Promise<Message>;
508 equals(message: Message, rawData: Object): boolean;
509 fetchWebhook(): Promise<Webhook>;
510 isMemberMentioned(member: GuildMember | User): boolean;
511 isMentioned(data: GuildChannel | User | Role | string): boolean;
512 pin(): Promise<Message>;
513 react(emoji: string | Emoji | ReactionEmoji): Promise<MessageReaction>;
514 reply(content: StringResolvable, options?: MessageOptions): Promise<Message | Message[]>;
515 toString(): string;
516 unpin(): Promise<Message>;
517 }
518 export class MessageEmbed {
519 author: MessageEmbedAuthor;
520 client: Client;
521 color: number;
522 createdAt: Date;
523 createdTimestamp: number;
524 description: string;
525 fields: MessageEmbedField[];
526 footer: MessageEmbedFooter;
527 hexColor: string;
528 message: Message;
529 provider: MessageEmbedProvider;
530 thumbnail: MessageEmbedThumbnail;
531 title: string;
532 type: string;
533 url: string;
534 }
535 export class MessageEmbedAuthor {
536 embed: MessageEmbed;
537 iconURL: string;
538 name: string;
539 url: string;
540 }
541 export class MessageEmbedField {
542 embed: MessageEmbed;
543 inline: boolean;
544 name: string;
545 value: string;
546 }
547 export class MessageEmbedFooter {
548 embed: MessageEmbed;
549 iconURL: string;
550 proxyIconURL: string;
551 text: string;
552 }
553 export class MessageEmbedProvider {
554 embed: MessageEmbed;
555 name: string;
556 url: string;
557 }
558 export class MessageEmbedThumbnail {
559 embed: MessageEmbed;
560 height: number;
561 proxyURL: string;
562 url: string;
563 width: number;
564 }
565 export class RichEmbed {
566 constructor(data?: RichEmbedOptions);
567 author?: { name: string; url?: string; icon_url?: string; };
568 color?: number | string;
569 description?: string;
570 fields?: { name: string; value: string; inline?: boolean; }[];
571 footer?: { text?: string; icon_url?: string; };
572 image?: { url: string; proxy_url?: string; height?: number; width?: number; };
573 thumbnail?: { url: string; height?: number; width?: number; };
574 timestamp?: Date;
575 title?: string;
576 url?: string;
577 addField(name: string, value: StringResolvable, inline?: boolean): this;
578 setAuthor(name: string, icon?: string, url?: string): this;
579 setColor(color: string | number | number[]): this;
580 setDescription(description: string): this;
581 setFooter(text: string, icon?: string): this;
582 setImage(url: string): this;
583 setThumbnail(url: string): this;
584 setTimestamp(timestamp?: Date): this;
585 setTitle(title: string): this;
586 setURL(url: string): this;
587 }
588 export class MessageAttachment {
589 client: Client;
590 filename: string;
591 filesize: number;
592 height: number;
593 id: string;
594 message: Message;
595 proxyURL: string;
596 url: string;
597 width: number;
598 }
599 export class MessageReaction {
600 count: number;
601 emoji: Emoji | ReactionEmoji;
602 me: boolean;
603 message: Message;
604 users: Collection<string, User>;
605 fetchUsers(limit?: number): Promise<Collection<string, User>>;
606 remove(user?: UserResolvable): Promise<MessageReaction>;
607 }
608 export class Invite {
609 channel: GuildChannel | PartialGuildChannel;
610 client: Client;
611 code: string;
612 createdAt: Date;
613 createdTimestamp: number;
614 expiresAt: Date;
615 expiresTimestamp: number;
616 guild: Guild | PartialGuild;
617 inviter: User;
618 maxAge: number;
619 maxUses: number;
620 temporary: boolean;
621 url: string;
622 uses: number;
623 delete(): Promise<Invite>;
624 toString(): string;
625 }
626 export class VoiceChannel extends GuildChannel {
627 bitrate: number;
628 connection: VoiceConnection;
629 joinable: boolean;
630 members: Collection<string, GuildMember>;
631 speakable: boolean;
632 userLimit: number;
633 join(): Promise<VoiceConnection>;
634 leave(): void;
635 setBitrate(bitrate: number): Promise<VoiceChannel>;
636 setUserLimit(userLimit: number): Promise<VoiceChannel>;
637 }
638 export class Shard {
639 constructor(manager: ShardingManager, id: number, args?: string[]);
640 env: Object;
641 id: string;
642 manager: ShardingManager;
643 process: ChildProcess;
644 eval(script: string): Promise<any>;
645 fetchClientValue(prop: string): Promise<any>;
646 send(message: any): Promise<Shard>;
647 }
648 export class ShardingManager extends EventEmitter {
649 constructor(file: string, options?: {
650 totalShards?: number;
651 respawn?: boolean;
652 shardArgs?: string[];
653 token?: string;
654 });
655 file: string;
656 respawn: boolean;
657 shardArgs: string[];
658 shards: Collection<number, Shard>;
659 token: string;
660 totalShards: number;
661 broadcast(message: any): Promise<Shard[]>;
662 broadcastEval(script: string): Promise<any[]>;
663 createShard(id: number): Promise<Shard>;
664 fetchClientValues(prop: string): Promise<any[]>;
665 spawn(amount?: number, delay?: number): Promise<Collection<number, Shard>>;
666 on(event: 'launch', listener: (shard: Shard) => void): this;
667 }
668 export class ShardClientUtil {
669 constructor(client: Client);
670 id: number;
671 count: number;
672 broadcastEval(script: string): Promise<any[]>;
673 fetchClientValues(prop: string): Promise<any[]>;
674 send(message: any): Promise<void>;
675 singleton(client: Client): ShardClientUtil;
676 }
677 export class UserConnection {
678 id: string;
679 integrations: Object[];
680 name: string;
681 revoked: boolean;
682 type: string;
683 user: User;
684 }
685 export class UserProfile {
686 client: Client;
687 connections: Collection<string, UserConnection>;
688 mutualGuilds: Collection<string, Guild>;
689 premium: boolean;
690 user: User;
691 }
692 export class StreamDispatcher extends EventEmitter {
693 passes: number;
694 paused: boolean;
695 time: number;
696 totalStreamTime: number;
697 volume: number;
698 end(): void;
699 pause(): void;
700 resume(): void;
701 setVolume(volume: number): void;
702 setVolumeDecibels(db: number): void;
703 setVolumeLogarithmic(value: number): void;
704 on(event: 'debug', listener: (information: string) => void): this;
705 on(event: 'end', listener: () => void): this;
706 on(event: 'error', listener: (err: Error) => void): this;
707 on(event: 'speaking', listener: (value: boolean) => void): this;
708 on(event: 'start', listener: () => void): this;
709 }
710 export class EvaluatedPermissions {
711 member: GuildMember;
712 raw: number;
713 hasPermission(permission: PermissionResolvable, explicit?: boolean): boolean;
714 hasPermissions(permission: PermissionResolvable[], explicit?: boolean): boolean;
715 serialize(): Permissions;
716 }
717 export class Role {
718 client: Client;
719 color: number;
720 createdAt: Date;
721 createdTimestamp: number;
722 guild: Guild;
723 hexColor: string;
724 hoist: boolean;
725 id: string;
726 managed: boolean;
727 members: Collection<string, GuildMember>;
728 mentionable: boolean;
729 name: string;
730 permissions: number;
731 position: number;
732 static comparePositions(role1: Role, role2: Role): number;
733 comparePositionTo(role: Role): number;
734 delete(): Promise<Role>;
735 edit(data: RoleData): Promise<Role>;
736 equals(role: Role): boolean;
737 hasPermission(permission: PermissionResolvable, explicit?: boolean): boolean;
738 hasPermissions(permissions: PermissionResolvable[], explicit?: boolean): boolean;
739 serialize(): Permissions;
740 setColor(color: string | number): Promise<Role>;
741 setHoist(hoist: boolean): Promise<Role>;
742 setMentionable(mentionable: boolean): Promise<Role>;
743 setName(name: string): Promise<Role>;
744 setPermissions(permissions: PermissionResolvable[]): Promise<Role>;
745 setPosition(position: number): Promise<Role>;
746 toString(): string;
747 }
748 export class ClientVoiceManager {
749 client: Client;
750 connections: Collection<string, VoiceConnection>;
751 pending: Collection<string, VoiceConnection>;
752 joinChannel(channel: VoiceChannel): Promise<VoiceConnection>;
753 sendVoiceStateUpdate(channel: VoiceChannel, options?: Object);
754 }
755 class AudioPlayer extends EventEmitter {
756 dispatcher: StreamDispatcher;
757 voiceConnection: VoiceConnection;
758 }
759 export class VoiceConnection extends EventEmitter {
760 channel: VoiceChannel;
761 player: AudioPlayer;
762 receivers: VoiceReceiver[];
763 speaking: boolean;
764 voiceManager: ClientVoiceManager;
765 createReceiver(): VoiceReceiver;
766 disconnect();
767 playConvertedStream(stream: ReadableStream, options?: StreamOptions): StreamDispatcher;
768 playFile(file: string, options?: StreamOptions): StreamDispatcher;
769 playStream(stream: ReadableStream, options?: StreamOptions): StreamDispatcher;
770 on(event: 'debug', listener: (message: string) => void): this;
771 on(event: 'disconnect', listener: (error: Error) => void): this;
772 on(event: 'error', listener: (error: Error) => void): this;
773 on(event: 'ready', listener: () => void): this;
774 on(event: 'speaking', listener: (user: User, speaking: boolean) => void): this;
775 on(event: 'warn', listener: (warning: string | Error) => void): this;
776 }
777 export class VoiceReceiver extends EventEmitter {
778 destroyed: boolean;
779 voiceConnection: VoiceConnection;
780 createOpusStream(user: UserResolvable): ReadableStream;
781 createPCMStream(user: UserResolvable): ReadableStream;
782 destroy(): void;
783 recreate(): void;
784 on(event: 'opus', listener: (user: User, buffer: Buffer) => void): this;
785 on(event: 'pcm', listener: (user: User, buffer: Buffer) => void): this;
786 on(event: 'warn', listener: (message: string) => void): this;
787 }
788 export class Collection<K, V> extends Map<K, V> {
789 array(): V[];
790 concat(...collections: Collection<any, any>[]): Collection<any, any>;
791 deleteAll(): Promise<V>[];
792 every(fn: Function, thisArg?: Object): boolean;
793 exists(prop: keyof V, value: any): boolean;
794 filter(fn: Function, thisArg?: Object): Collection<K, V>;
795 filterArray(fn: Function, thisArg?: Object): V[];
796 find(propOrFn: keyof V | Function, value?: any): V;
797 findAll(prop: keyof V, value: any): V[];
798 findKey(propOrFn: keyof V | Function, value?: any): K;
799 first(): V;
800 firstKey(): K;
801 keyArray(): K[];
802 last(): V;
803 lastKey(): K;
804 map(fn: Function, thisArg?: Object): any[];
805 random(): V;
806 randomKey(): K;
807 reduce(fn: Function, startVal?: any): any;
808 some(fn: Function, thisArg?: Object): boolean;
809 }
810 interface AwaitMessagesOptions extends CollectorOptions { errors?: string[]; }
811 type Base64String = string;
812 type Base64Resolvable = Buffer | Base64String;
813 type BufferResolvable = Buffer | string;
814 type ChannelData = {
815 name?: string;
816 position?: number;
817 topic?: string;
818 bitrate?: number;
819 userLimit?: number;
820 };
821 type ChannelLogsQueryOptions = {
822 limit?: number
823 before?: string
824 after?: string
825 around?: string
826 };
827 type ChannelResovalble = Channel | Guild | Message | string;
828 type ClientOptions = {
829 apiRequestMethod?: string;
830 shardId?: number;
831 shardCount?: number;
832 maxMessageCache?: number;
833 messageCacheLifetime?: number;
834 messageSweepInterval?: number;
835 fetchAllMembers?: boolean;
836 disableEveryone?: boolean;
837 sync?: boolean;
838 restWsBridgeTimeout?: number;
839 restTimeOffset?: number;
840 disabledEvents?: WSEventType[];
841 ws?: WebSocketOptions;
842 };
843 type CollectorFilterFunction = (message?: Message, collector?: MessageCollector) => boolean;
844 interface CollectorOptions { time?: number; max?: number; maxMatches?: number; }
845 type EmojiIdentifierResolvable = string | Emoji | ReactionEmoji;
846 type FileOptions = { attachment: BufferResolvable; name?: string; }
847 type GuildEditData = {
848 name?: string;
849 region?: string;
850 verificationLevel?: number;
851 afkChannel?: ChannelResovalble;
852 afkTimeout?: number;
853 icon?: Base64Resolvable;
854 owner?: GuildMemberResolvable;
855 splash?: Base64Resolvable;
856 };
857 type GuildMemberResolvable = GuildMember | User;
858 type GuildResolvable = Guild | string;
859 type InviteOptions = { temporary?: boolean; maxAge?: number; maxUses?: number; };
860 type InviteResolvable = string;
861 type MessageEditOptions = { embed: RichEmbedOptions; };
862 type MessageOptions = {
863 tts?: boolean;
864 nonce?: string;
865 embed?: RichEmbedOptions,
866 disableEveryone?: boolean;
867 file?: FileOptions | string;
868 code?: string;
869 split?: boolean | SplitOptions;
870 };
871 type PermissionOverwriteOptions = Permissions;
872 type PermissionResolvable = PermissionString | PermissionString[] | number[];
873 interface Permissions {
874 CREATE_INSTANT_INVITE?: boolean;
875 KICK_MEMBERS?: boolean;
876 BAN_MEMBERS?: boolean;
877 ADMINISTRATOR?: boolean;
878 MANAGE_CHANNELS?: boolean;
879 MANAGE_GUILD?: boolean;
880 READ_MESSAGES?: boolean;
881 SEND_MESSAGES?: boolean;
882 SEND_TTS_MESSAGES?: boolean;
883 MANAGE_MESSAGES?: boolean;
884 EMBED_LINKS?: boolean;
885 ATTACH_FILES?: boolean;
886 READ_MESSAGE_HISTORY?: boolean;
887 MENTION_EVERYONE?: boolean;
888 EXTERNAL_EMOJIS?: boolean;
889 CONNECT?: boolean;
890 SPEAK?: boolean;
891 MUTE_MEMBERS?: boolean;
892 DEAFEN_MEMBERS?: boolean;
893 MOVE_MEMBERS?: boolean;
894 USE_VAD?: boolean;
895 CHANGE_NICKNAME?: boolean;
896 MANAGE_NICKNAMES?: boolean;
897 MANAGE_ROLES_OR_PERMISSIONS?: boolean;
898 MANAGE_WEBHOOKS?: boolean;
899 MANAGE_EMOJIS?: boolean;
900 }
901 type PermissionString = 'CREATE_INSTANT_INVITE'
902 | 'KICK_MEMBERS'
903 | 'BAN_MEMBERS'
904 | 'ADMINISTRATOR'
905 | 'MANAGE_CHANNELS'
906 | 'MANAGE_GUILD'
907 | 'ADD_REACTIONS'
908 | 'READ_MESSAGES'
909 | 'SEND_MESSAGES'
910 | 'SEND_TTS_MESSAGES'
911 | 'MANAGE_MESSAGES'
912 | 'EMBED_LINKS'
913 | 'ATTACH_FILES'
914 | 'READ_MESSAGE_HISTORY'
915 | 'MENTION_EVERYONE'
916 | 'EXTERNAL_EMOJIS'
917 | 'CONNECT'
918 | 'SPEAK'
919 | 'MUTE_MEMBERS'
920 | 'DEAFEN_MEMBERS'
921 | 'MOVE_MEMBERS'
922 | 'USE_VAD'
923 | 'CHANGE_NICKNAME'
924 | 'MANAGE_NICKNAMES'
925 | 'MANAGE_ROLES_OR_PERMISSIONS'
926 | 'MANAGE_WEBHOOKS'
927 | 'MANAGE_EMOJIS';
928 type PresenceData = {
929 status?: PresenceStatus;
930 afk?: boolean;
931 game?: {
932 name?: string;
933 url?: string;
934 }
935 }
936 type PresenceStatus = 'online' | 'idle' | 'invisible' | 'dnd';
937 type RichEmbedOptions = {
938 title?: string;
939 description?: string;
940 url?: string;
941 timestamp?: Date;
942 color?: number | string;
943 fields?: { name: string; value: string; inline?: boolean; }[];
944 author?: { name: string; url?: string; icon_url?: string; };
945 thumbnail?: { url: string; height?: number; width?: number; };
946 image?: { url: string; proxy_url?: string; height?: number; width?: number; };
947 video?: { url: string; height: number; width: number; };
948 footer?: { text?: string; icon_url?: string; };
949 };
950 type RoleData = {
951 name?: string;
952 color?: number | string;
953 hoist?: boolean;
954 position?: number;
955 permissions?: PermissionString[];
956 mentionable?: boolean;
957 };
958 type RoleResolvable = Role | string;
959 type SplitOptions = { maxLength?: number; char?: string; prepend?: string; append?: string; };
960 type StreamOptions = { seek?: number; volume?: number; passes?: number; };
961 type StringResolvable = any[] | string | any;
962 type UserResolvable = User | string | Message | Guild | GuildMember;
963 type WebhookMessageOptions = {
964 tts?: boolean;
965 disableEveryone?: boolean;
966 };
967 type WebSocketOptions = { large_threshold?: number; compress?: boolean; };
968 type WSEventType = 'READY'
969 | 'GUILD_SYNC'
970 | 'GUILD_CREATE'
971 | 'GUILD_DELETE'
972 | 'GUILD_UPDATE'
973 | 'GUILD_MEMBER_ADD'
974 | 'GUILD_MEMBER_REMOVE'
975 | 'GUILD_MEMBER_UPDATE'
976 | 'GUILD_MEMBERS_CHUNK'
977 | 'GUILD_ROLE_CREATE'
978 | 'GUILD_ROLE_DELETE'
979 | 'GUILD_ROLE_UPDATE'
980 | 'GUILD_BAN_ADD'
981 | 'GUILD_BAN_REMOVE'
982 | 'CHANNEL_CREATE'
983 | 'CHANNEL_DELETE'
984 | 'CHANNEL_UPDATE'
985 | 'CHANNEL_PINS_UPDATE'
986 | 'MESSAGE_CREATE'
987 | 'MESSAGE_DELETE'
988 | 'MESSAGE_UPDATE'
989 | 'MESSAGE_DELETE_BULK'
990 | 'MESSAGE_REACTION_ADD'
991 | 'MESSAGE_REACTION_REMOVE'
992 | 'MESSAGE_REACTION_REMOVE_ALL'
993 | 'USER_UPDATE'
994 | 'USER_NOTE_UPDATE'
995 | 'PRESENCE_UPDATE'
996 | 'VOICE_STATE_UPDATE'
997 | 'TYPING_START'
998 | 'VOICE_SERVER_UPDATE'
999 | 'RELATIONSHIP_ADD'
1000 | 'RELATIONSHIP_REMOVE';
1001}