diff --git a/discord.wsrewrite.js b/discord.wsrewrite.js index 3affaf75..d80eb4be 100644 --- a/discord.wsrewrite.js +++ b/discord.wsrewrite.js @@ -24520,39 +24520,42 @@ class SequentialRequestHandler extends RequestHandler { execute(item) { this.busy = true; return new Promise(resolve => { - item.request.gen().end((err, res) => { - if (res && res.headers) { - this.requestLimit = Number(res.headers['x-ratelimit-limit']); - this.requestResetTime = Number(res.headers['x-ratelimit-reset']) * 1000; - this.requestRemaining = Number(res.headers['x-ratelimit-remaining']); - this.timeDifference = Date.now() - new Date(res.headers.date).getTime(); - } - if (err) { - if (err.status === 429) { - this.queue.unshift(item); - this.restManager.client.setTimeout(() => { - this.globalLimit = false; - resolve(); - }, Number(res.headers['retry-after']) + this.restManager.client.options.restTimeOffset); - if (res.headers['x-ratelimit-global']) this.globalLimit = true; - } else { - item.reject(err); - resolve(err); + item.request + .gen() + .on('error', e => item.reject(e)) + .end((err, res) => { + if (res && res.headers) { + this.requestLimit = Number(res.headers['x-ratelimit-limit']); + this.requestResetTime = Number(res.headers['x-ratelimit-reset']) * 1000; + this.requestRemaining = Number(res.headers['x-ratelimit-remaining']); + this.timeDifference = Date.now() - new Date(res.headers.date).getTime(); } - } else { - this.globalLimit = false; - const data = res && res.body ? res.body : {}; - item.resolve(data); - if (this.requestRemaining === 0) { - this.restManager.client.setTimeout( + if (err) { + if (err.status === 429) { + this.queue.unshift(item); + this.restManager.client.setTimeout(() => { + this.globalLimit = false; + resolve(); + }, Number(res.headers['retry-after']) + this.restManager.client.options.restTimeOffset); + if (res.headers['x-ratelimit-global']) this.globalLimit = true; + } else { + item.reject(err); + resolve(err); + } + } else { + this.globalLimit = false; + const data = res && res.body ? res.body : {}; + item.resolve(data); + if (this.requestRemaining === 0) { + this.restManager.client.setTimeout( () => resolve(data), this.requestResetTime - Date.now() + this.timeDifference + this.restManager.client.options.restTimeOffset ); - } else { - resolve(data); + } else { + resolve(data); + } } - } - }); + }); }); } @@ -24656,6 +24659,11 @@ class WebSocketManager extends EventEmitter { return this.connection.destroy(); } + send(packet) { + if (!this.connection) return this.debug('No connection to websocket'); + return this.connection.send(packet); + } + connect(gateway) { if (!this.connection) { this.connection = new WebSocketConnection(this, gateway); diff --git a/discord.wsrewrite.min.js b/discord.wsrewrite.min.js index ee964d47..2f8225cf 100644 --- a/discord.wsrewrite.min.js +++ b/discord.wsrewrite.min.js @@ -22,4 +22,4 @@ ${t} \`\`\``,split&&(split.prepend=`\`\`\`${"boolean"!=typeof code?code||"":""} `,split.append="\n```")),(disableEveryone||void 0===disableEveryone&&this.client.options.disableEveryone)&&(t=t.replace(/@(everyone|here)/g,"@​$1")),reply&&!(e instanceof h||e instanceof p)&&"dm"!==e.type){const e=this.client.resolver.resolveUserID(reply),n=`<@${reply instanceof p&&reply.nickname?"!":""}${e}>`;t=`${n}${t?`, ${t}`:""}`,split&&(split.prepend=`${n}, ${split.prepend||""}`)}split&&(t=l.splitMessage(t,split))}else if(reply&&!(e instanceof h||e instanceof p)&&"dm"!==e.type){const e=this.client.resolver.resolveUserID(reply);t=`<@${reply instanceof p&&reply.nickname?"!":""}${e}>`}const r=e=>{if(t instanceof Array){const s=[];!function t(r,o){const a=o===r.length?{tts:tts,embed:embed}:{tts:tts};e.send(r[o],a,o===r.length?n:null).then(e=>{s.push(e);if(o>=r.length-1)return i(s);return t(r,++o)})}(t,0)}else this.rest.makeRequest("post",a.Channel(e).messages,!0,{content:t,tts:tts,nonce:nonce,embed:embed},n).then(e=>i(this.client.actions.MessageCreate.handle(e).message),s)};e instanceof h||e instanceof p?this.createDM(e).then(r,s):r(e)})}updateMessage(e,t,{embed:embed,code:code,reply:reply}={}){if(void 0!==t&&(t=this.client.resolver.resolveString(t)),void 0===code||"boolean"==typeof code&&!0!==code||(t=l.escapeMarkdown(this.client.resolver.resolveString(t),!0),t=`\`\`\`${"boolean"!=typeof code?code||"":""} ${t} -\`\`\``),reply&&"dm"!==e.channel.type){const e=this.client.resolver.resolveUserID(reply),n=`<@${reply instanceof p&&reply.nickname?"!":""}${e}>`;t=`${n}${t?`, ${t}`:""}`}return this.rest.makeRequest("patch",a.Message(e),!0,{content:t,embed:embed}).then(e=>this.client.actions.MessageUpdate.handle(e).updated)}deleteMessage(e){return this.rest.makeRequest("delete",a.Message(e),!0).then(()=>this.client.actions.MessageDelete.handle({id:e.id,channel_id:e.channel.id}).message)}ackMessage(e){return this.rest.makeRequest("post",a.Message(e).ack,!0,{token:this._ackToken}).then(t=>{t.token&&(this._ackToken=t.token);return e})}ackTextChannel(e){return this.rest.makeRequest("post",a.Channel(e).ack,!0,{token:this._ackToken}).then(t=>{t.token&&(this._ackToken=t.token);return e})}ackGuild(e){return this.rest.makeRequest("post",a.Guild(e).ack,!0).then(()=>e)}bulkDeleteMessages(e,t,n){return n&&(t=t.filter(e=>Date.now()-u.deconstruct(e).date.getTime()<12096e5)),this.rest.makeRequest("post",a.Channel(e).messages.bulkDelete,!0,{messages:t}).then(()=>this.client.actions.MessageDeleteBulk.handle({channel_id:e.id,ids:t}).messages)}search(e,t){if("string"==typeof t&&(t={content:t}),t.before&&(t.before instanceof Date||(t.before=new Date(t.before)),t.maxID=s.fromNumber(t.before.getTime()-14200704e5).shiftLeft(22).toString()),t.after&&(t.after instanceof Date||(t.after=new Date(t.after)),t.minID=s.fromNumber(t.after.getTime()-14200704e5).shiftLeft(22).toString()),t.during){t.during instanceof Date||(t.during=new Date(t.during));const e=t.during.getTime()-14200704e5;t.minID=s.fromNumber(e).shiftLeft(22).toString(),t.maxID=s.fromNumber(e+864e5).shiftLeft(22).toString()}t.channel&&(t.channel=this.client.resolver.resolveChannelID(t.channel)),t.author&&(t.author=this.client.resolver.resolveUserID(t.author)),t.mentions&&(t.mentions=this.client.resolver.resolveUserID(t.options.mentions)),t={content:t.content,max_id:t.maxID,min_id:t.minID,has:t.has,channel_id:t.channel,author_id:t.author,author_type:t.authorType,context_size:t.contextSize,sort_by:t.sortBy,sort_order:t.sortOrder,limit:t.limit,offset:t.offset,mentions:t.mentions,mentions_everyone:t.mentionsEveryone,link_hostname:t.linkHostname,embed_provider:t.embedProvider,embed_type:t.embedType,attachment_filename:t.attachmentFilename,attachment_extension:t.attachmentExtension};for(const e in t)void 0===t[e]&&delete t[e];const n=(i.stringify(t).match(/[^=&?]+=[^=&?]+/g)||[]).join("&");let r;if(e instanceof E)r=a.Channel(e).search;else{if(!(e instanceof y))throw new TypeError("Target must be a TextChannel, DMChannel, GroupDMChannel, or Guild.");r=a.Guild(e).search}return this.rest.makeRequest("get",`${r}?${n}`,!0).then(e=>{const t=e.messages.map(e=>e.map(e=>new d(this.client.channels.get(e.channel_id),e,this.client)));return{totalResults:e.total_results,messages:t}})}createChannel(e,t,n,i){return i instanceof c&&(i=i.array()),this.rest.makeRequest("post",a.Guild(e).channels,!0,{name:t,type:n,permission_overwrites:i}).then(e=>this.client.actions.ChannelCreate.handle(e).channel)}createDM(e){const t=this.getExistingDM(e);return t?Promise.resolve(t):this.rest.makeRequest("post",a.User(this.client.user).channels,!0,{recipient_id:e.id}).then(e=>this.client.actions.ChannelCreate.handle(e).channel)}createGroupDM(e){const t=this.client.user.bot?{access_tokens:e.accessTokens,nicks:e.nicks}:{recipients:e.recipients};return this.rest.makeRequest("post",a.User("@me").channels,!0,t).then(e=>new w(this.client,e))}addUserToGroupDM(e,t){const n=this.client.user.bot?{nick:t.nick,access_token:t.accessToken}:{recipient:t.id};return this.rest.makeRequest("put",a.Channel(e).Recipient(t.id),!0,n).then(()=>e)}getExistingDM(e){return this.client.channels.find(t=>t.recipient&&t.recipient.id===e.id)}deleteChannel(e){return(e instanceof h||e instanceof p)&&(e=this.getExistingDM(e)),e?this.rest.makeRequest("delete",a.Channel(e),!0).then(t=>{t.id=e.id;return this.client.actions.ChannelDelete.handle(t).channel}):Promise.reject(new Error("No channel to delete."))}updateChannel(e,t){const n={};return n.name=(t.name||e.name).trim(),n.topic=t.topic||e.topic,n.position=t.position||e.position,n.bitrate=t.bitrate||e.bitrate,n.user_limit=t.userLimit||e.userLimit,this.rest.makeRequest("patch",a.Channel(e),!0,n).then(e=>this.client.actions.ChannelUpdate.handle(e).updated)}leaveGuild(e){return e.ownerID===this.client.user.id?Promise.reject(new Error("Guild is owned by the client.")):this.rest.makeRequest("delete",a.User("@me").Guild(e.id),!0).then(()=>this.client.actions.GuildDelete.handle({id:e.id}).guild)}createGuild(e){return e.icon=this.client.resolver.resolveBase64(e.icon)||null,e.region=e.region||"us-central",new Promise((t,n)=>{this.rest.makeRequest("post",a.guilds,!0,e).then(e=>{if(this.client.guilds.has(e.id))return t(this.client.guilds.get(e.id));const i=n=>{n.id===e.id&&(this.client.removeListener(o.Events.GUILD_CREATE,i),this.client.clearTimeout(s),t(n))};this.client.on(o.Events.GUILD_CREATE,i);const s=this.client.setTimeout(()=>{this.client.removeListener(o.Events.GUILD_CREATE,i);n(new Error("Took too long to receive guild data."))},1e4);return},n)})}deleteGuild(e){return this.rest.makeRequest("delete",a.Guild(e),!0).then(()=>this.client.actions.GuildDelete.handle({id:e.id}).guild)}getUser(e,t){return this.rest.makeRequest("get",a.User(e),!0).then(e=>t?this.client.actions.UserGet.handle(e).user:new h(this.client,e))}updateCurrentUser(e,t){const n=this.client.user,i={};return i.username=e.username||n.username,i.avatar=this.client.resolver.resolveBase64(e.avatar)||n.avatar,n.bot||(i.email=e.email||n.email,i.password=t,e.new_password&&(i.new_password=e.newPassword)),this.rest.makeRequest("patch",a.User("@me"),!0,i).then(e=>this.client.actions.UserUpdate.handle(e).updated)}updateGuild(e,t){const n={};return t.name&&(n.name=t.name),t.region&&(n.region=t.region),t.verificationLevel&&(n.verification_level=Number(t.verificationLevel)),t.afkChannel&&(n.afk_channel_id=this.client.resolver.resolveChannel(t.afkChannel).id),t.afkTimeout&&(n.afk_timeout=Number(t.afkTimeout)),t.icon&&(n.icon=this.client.resolver.resolveBase64(t.icon)),t.owner&&(n.owner_id=this.client.resolver.resolveUser(t.owner).id),t.splash&&(n.splash=this.client.resolver.resolveBase64(t.splash)),this.rest.makeRequest("patch",a.Guild(e),!0,n).then(e=>this.client.actions.GuildUpdate.handle(e).updated)}kickGuildMember(e,t){return this.rest.makeRequest("delete",a.Guild(e).Member(t),!0).then(()=>this.client.actions.GuildMemberRemove.handle({guild_id:e.id,user:t.user}).member)}createGuildRole(e,t){return t.color&&(t.color=this.client.resolver.resolveColor(t.color)),t.permissions&&(t.permissions=r.resolve(t.permissions)),this.rest.makeRequest("post",a.Guild(e).roles,!0,t).then(t=>this.client.actions.GuildRoleCreate.handle({guild_id:e.id,role:t}).role)}deleteGuildRole(e){return this.rest.makeRequest("delete",a.Guild(e.guild).Role(e.id),!0).then(()=>this.client.actions.GuildRoleDelete.handle({guild_id:e.guild.id,role_id:e.id}).role)}setChannelOverwrite(e,t){return this.rest.makeRequest("put",`${a.Channel(e).permissions}/${t.id}`,!0,t)}deletePermissionOverwrites(e){return this.rest.makeRequest("delete",`${a.Channel(e.channel).permissions}/${e.id}`,!0).then(()=>e)}getChannelMessages(e,t={}){const n=[];t.limit&&n.push(`limit=${t.limit}`),t.around?n.push(`around=${t.around}`):t.before?n.push(`before=${t.before}`):t.after&&n.push(`after=${t.after}`);let i=a.Channel(e).messages;return n.length>0&&(i+=`?${n.join("&")}`),this.rest.makeRequest("get",i,!0)}getChannelMessage(e,t){const n=e.messages.get(t);return n?Promise.resolve(n):this.rest.makeRequest("get",a.Channel(e).Message(t),!0)}putGuildMember(e,t,n){if(n.access_token=n.accessToken,n.roles){const e=n.roles;(e instanceof c||e instanceof Array&&e[0]instanceof f)&&(n.roles=e.map(e=>e.id))}return this.rest.makeRequest("put",a.Guild(e).Member(t.id),!0,n).then(t=>this.client.actions.GuildMemberGet.handle(e,t).member)}getGuildMember(e,t,n){return this.rest.makeRequest("get",a.Guild(e).Member(t.id),!0).then(t=>n?this.client.actions.GuildMemberGet.handle(e,t).member:new p(e,t))}updateGuildMember(e,t){t.channel&&(t.channel_id=this.client.resolver.resolveChannel(t.channel).id),t.roles&&(t.roles=t.roles.map(e=>e instanceof f?e.id:e));let n=a.Member(e);if(e.id===this.client.user.id){const i=Object.keys(t);1===i.length&&"nick"===i[0]&&(n=a.Member(e).nickname)}return this.rest.makeRequest("patch",n,!0,t).then(t=>e.guild._updateMember(e,t).mem)}addMemberRole(e,t){return new Promise((n,i)=>{if(e._roles.includes(t.id))return n(e);const s=(e,i)=>{!e._roles.includes(t.id)&&i._roles.includes(t.id)&&(this.client.removeListener(o.Events.GUILD_MEMBER_UPDATE,s),n(i))};this.client.on(o.Events.GUILD_MEMBER_UPDATE,s);const r=this.client.setTimeout(()=>this.client.removeListener(o.Events.GUILD_MEMBER_UPDATE,s),1e4);return this.rest.makeRequest("put",a.Member(e).Role(t.id),!0).catch(e=>{this.client.removeListener(o.Events.GUILD_BAN_REMOVE,s);this.client.clearTimeout(r);i(e)})})}removeMemberRole(e,t){return new Promise((n,i)=>{if(!e._roles.includes(t.id))return n(e);const s=(e,i)=>{e._roles.includes(t.id)&&!i._roles.includes(t.id)&&(this.client.removeListener(o.Events.GUILD_MEMBER_UPDATE,s),n(i))};this.client.on(o.Events.GUILD_MEMBER_UPDATE,s);const r=this.client.setTimeout(()=>this.client.removeListener(o.Events.GUILD_MEMBER_UPDATE,s),1e4);return this.rest.makeRequest("delete",a.Member(e).Role(t.id),!0).catch(e=>{this.client.removeListener(o.Events.GUILD_BAN_REMOVE,s);this.client.clearTimeout(r);i(e)})})}sendTyping(e){return this.rest.makeRequest("post",a.Channel(e).typing,!0)}banGuildMember(e,t,n=0){const i=this.client.resolver.resolveUserID(t);return i?this.rest.makeRequest("put",`${a.Guild(e).bans}/${i}?delete-message-days=${n}`,!0,{"delete-message-days":n}).then(()=>{if(t instanceof p)return t;const n=this.client.resolver.resolveUser(i);if(n)return(t=this.client.resolver.resolveGuildMember(e,n))||n;return i}):Promise.reject(new Error("Couldn't resolve the user ID to ban."))}unbanGuildMember(e,t){return new Promise((n,i)=>{const s=this.client.resolver.resolveUserID(t);if(!s)throw new Error("Couldn't resolve the user ID to unban.");const r=(t,i)=>{t.id===e.id&&i.id===s&&(this.client.removeListener(o.Events.GUILD_BAN_REMOVE,r),this.client.clearTimeout(c),n(i))};this.client.on(o.Events.GUILD_BAN_REMOVE,r);const c=this.client.setTimeout(()=>{this.client.removeListener(o.Events.GUILD_BAN_REMOVE,r);i(new Error("Took too long to receive the ban remove event."))},1e4);this.rest.makeRequest("delete",`${a.Guild(e).bans}/${s}`,!0).catch(e=>{this.client.removeListener(o.Events.GUILD_BAN_REMOVE,r);this.client.clearTimeout(c);i(e)})})}getGuildBans(e){return this.rest.makeRequest("get",a.Guild(e).bans,!0).then(e=>{const t=new c;for(const n of e){const e=this.client.dataManager.newUser(n.user);t.set(e.id,e)}return t})}updateGuildRole(e,t){const n={};return n.name=t.name||e.name,n.position=void 0!==t.position?t.position:e.position,n.color=this.client.resolver.resolveColor(t.color||e.color),n.hoist=void 0!==t.hoist?t.hoist:e.hoist,n.mentionable=void 0!==t.mentionable?t.mentionable:e.mentionable,t.permissions?n.permissions=r.resolve(t.permissions):n.permissions=e.permissions,this.rest.makeRequest("patch",a.Guild(e.guild).Role(e.id),!0,n).then(t=>this.client.actions.GuildRoleUpdate.handle({role:t,guild_id:e.guild.id}).updated)}pinMessage(e){return this.rest.makeRequest("put",a.Channel(e.channel).Pin(e.id),!0).then(()=>e)}unpinMessage(e){return this.rest.makeRequest("delete",a.Channel(e.channel).Pin(e.id),!0).then(()=>e)}getChannelPinnedMessages(e){return this.rest.makeRequest("get",a.Channel(e).pins,!0)}createChannelInvite(e,t){const n={};return n.temporary=t.temporary,n.max_age=t.maxAge,n.max_uses=t.maxUses,this.rest.makeRequest("post",a.Channel(e).invites,!0,n).then(e=>new m(this.client,e))}deleteInvite(e){return this.rest.makeRequest("delete",a.Invite(e.code),!0).then(()=>e)}getInvite(e){return this.rest.makeRequest("get",a.Invite(e),!0).then(e=>new m(this.client,e))}getGuildInvites(e){return this.rest.makeRequest("get",a.Guild(e).invites,!0).then(e=>{const t=new c;for(const n of e){const e=new m(this.client,n);t.set(e.code,e)}return t})}pruneGuildMembers(e,t,n){return this.rest.makeRequest(n?"get":"post",`${a.Guild(e).prune}?days=${t}`,!0).then(e=>e.pruned)}createEmoji(e,t,n,i){const s={image:t,name:n};return i&&(s.roles=i.map(e=>e.id?e.id:e)),this.rest.makeRequest("post",a.Guild(e).emojis,!0,s).then(t=>this.client.actions.GuildEmojiCreate.handle(e,t).emoji)}updateEmoji(e,t){const n={};return t.name&&(n.name=t.name),t.roles&&(n.roles=t.roles.map(e=>e.id?e.id:e)),this.rest.makeRequest("patch",a.Guild(e.guild).Emoji(e.id),!0,n).then(t=>this.client.actions.GuildEmojiUpdate.handle(e,t).emoji)}deleteEmoji(e){return this.rest.makeRequest("delete",a.Guild(e.guild).Emoji(e.id),!0).then(()=>this.client.actions.GuildEmojiDelete.handle(e).data)}getWebhook(e,t){return this.rest.makeRequest("get",a.Webhook(e,t),!t).then(e=>new g(this.client,e))}getGuildWebhooks(e){return this.rest.makeRequest("get",a.Guild(e).webhooks,!0).then(e=>{const t=new c;for(const n of e)t.set(n.id,new g(this.client,n));return t})}getChannelWebhooks(e){return this.rest.makeRequest("get",a.Channel(e).webhooks,!0).then(e=>{const t=new c;for(const n of e)t.set(n.id,new g(this.client,n));return t})}createWebhook(e,t,n){return this.rest.makeRequest("post",a.Channel(e).webhooks,!0,{name:t,avatar:n}).then(e=>new g(this.client,e))}editWebhook(e,t,n){return this.rest.makeRequest("patch",a.Webhook(e.id,e.token),!1,{name:t,avatar:n}).then(t=>{e.name=t.name;e.avatar=t.avatar;return e})}deleteWebhook(e){return this.rest.makeRequest("delete",a.Webhook(e.id,e.token),!1)}sendWebhookMessage(e,t,{avatarURL:avatarURL,tts:tts,disableEveryone:disableEveryone,embeds:embeds,username:username}={},n=null){return username=username||e.name,void 0!==t&&(t=this.client.resolver.resolveString(t)),t&&(disableEveryone||void 0===disableEveryone&&this.client.options.disableEveryone)&&(t=t.replace(/@(everyone|here)/g,"@​$1")),this.rest.makeRequest("post",`${a.Webhook(e.id,e.token)}?wait=true`,!1,{username:username,avatar_url:avatarURL,content:t,tts:tts,embeds:embeds},n)}sendSlackWebhookMessage(e,t){return this.rest.makeRequest("post",`${a.Webhook(e.id,e.token)}/slack?wait=true`,!1,t)}fetchUserProfile(e){return this.rest.makeRequest("get",a.User(e).profile,!0).then(t=>new v(e,t))}fetchMeMentions(e){return e.guild&&(e.guild=e.guild.id?e.guild.id:e.guild),this.rest.makeRequest("get",a.User("@me").mentions(e.limit,e.roles,e.everyone,e.guild)).then(e=>e.body.map(e=>new d(this.client.channels.get(e.channel_id),e,this.client)))}addFriend(e){return this.rest.makeRequest("post",a.User("@me"),!0,{username:e.username,discriminator:e.discriminator}).then(()=>e)}removeFriend(e){return this.rest.makeRequest("delete",a.User("@me").Relationship(e.id),!0).then(()=>e)}blockUser(e){return this.rest.makeRequest("put",a.User("@me").Relationship(e.id),!0,{type:2}).then(()=>e)}unblockUser(e){return this.rest.makeRequest("delete",a.User("@me").Relationship(e.id),!0).then(()=>e)}updateChannelPositions(e,t){const n=new Array(t.length);for(let e=0;ethis.client.actions.GuildChannelsPositionUpdate.handle({guild_id:e,channels:t}).guild)}setRolePositions(e,t){return this.rest.makeRequest("patch",a.Guild(e).roles,!0,t).then(()=>this.client.actions.GuildRolesPositionUpdate.handle({guild_id:e,roles:t}).guild)}setChannelPositions(e,t){return this.rest.makeRequest("patch",a.Guild(e).channels,!0,t).then(()=>this.client.actions.GuildChannelsPositionUpdate.handle({guild_id:e,channels:t}).guild)}addMessageReaction(e,t){return this.rest.makeRequest("put",a.Message(e).Reaction(t).User("@me"),!0).then(()=>e._addReaction(l.parseEmoji(t),e.client.user))}removeMessageReaction(e,t,n){const i=a.Message(e).Reaction(t).User(n===this.client.user.id?"@me":n);return this.rest.makeRequest("delete",i,!0).then(()=>this.client.actions.MessageReactionRemove.handle({user_id:n,message_id:e.id,emoji:l.parseEmoji(t),channel_id:e.channel.id}).reaction)}removeMessageReactions(e){return this.rest.makeRequest("delete",a.Message(e).reactions,!0).then(()=>e)}getMessageReactionUsers(e,t,n=100){return this.rest.makeRequest("get",a.Message(e).Reaction(t,n),!0)}getApplication(e){return this.rest.makeRequest("get",a.OAUTH2.Application(e),!0).then(e=>new b(this.client,e))}resetApplication(e){return this.rest.makeRequest("post",a.OAUTH2.Application(e).reset,!0).then(e=>new b(this.client,e))}setNote(e,t){return this.rest.makeRequest("put",a.User(e).note,!0,{note:t}).then(()=>e)}acceptInvite(e){return e.id&&(e=e.id),new Promise((t,n)=>this.rest.makeRequest("post",a.Invite(e),!0).then(e=>{const i=n=>{n.id===e.id&&(t(n),this.client.removeListener(o.Events.GUILD_CREATE,i))};this.client.on(o.Events.GUILD_CREATE,i);this.client.setTimeout(()=>{this.client.removeListener(o.Events.GUILD_CREATE,i);n(new Error("Accepting invite timed out"))},12e4)}))}patchUserSettings(e){return this.rest.makeRequest("patch",o.Endpoints.User("@me").settings,!0,e)}}e.exports=x},function(e,t,n){const i=n(64);class s extends i{constructor(e,t){super(e,t),this.client=e.client,this.limit=1/0,this.resetTime=null,this.remaining=1,this.timeDifference=0,this.resetTimeout=null}push(e){super.push(e),this.handle()}execute(e){e&&e.request.gen().end((t,n)=>{n&&n.headers&&(this.limit=Number(n.headers["x-ratelimit-limit"]),this.resetTime=1e3*Number(n.headers["x-ratelimit-reset"]),this.remaining=Number(n.headers["x-ratelimit-remaining"]),this.timeDifference=Date.now()-new Date(n.headers.date).getTime());if(t)if(429===t.status){if(this.queue.unshift(e),n.headers["x-ratelimit-global"]&&(this.globalLimit=!0),this.resetTimeout)return;this.resetTimeout=this.client.setTimeout(()=>{this.remaining=this.limit;this.globalLimit=!1;this.handle();this.resetTimeout=null},Number(n.headers["retry-after"])+this.client.options.restTimeOffset)}else e.reject(t),this.handle();else{this.globalLimit=!1;const t=n&&n.body?n.body:{};e.resolve(t),this.handle()}})}handle(){super.handle(),this.remaining<=0||0===this.queue.length||this.globalLimit||(this.execute(this.queue.shift()),this.remaining--,this.handle())}}e.exports=s},function(e,t,n){const i=n(64);class s extends i{constructor(e,t){super(e,t),this.endpoint=t,this.timeDifference=0,this.busy=!1}push(e){super.push(e),this.handle()}execute(e){return this.busy=!0,new Promise(t=>{e.request.gen().end((n,i)=>{i&&i.headers&&(this.requestLimit=Number(i.headers["x-ratelimit-limit"]),this.requestResetTime=1e3*Number(i.headers["x-ratelimit-reset"]),this.requestRemaining=Number(i.headers["x-ratelimit-remaining"]),this.timeDifference=Date.now()-new Date(i.headers.date).getTime());if(n)429===n.status?(this.queue.unshift(e),this.restManager.client.setTimeout(()=>{this.globalLimit=!1;t()},Number(i.headers["retry-after"])+this.restManager.client.options.restTimeOffset),i.headers["x-ratelimit-global"]&&(this.globalLimit=!0)):(e.reject(n),t(n));else{this.globalLimit=!1;const n=i&&i.body?i.body:{};e.resolve(n),0===this.requestRemaining?this.restManager.client.setTimeout(()=>t(n),this.requestResetTime-Date.now()+this.timeDifference+this.restManager.client.options.restTimeOffset):t(n)}})})}handle(){super.handle(),this.busy||0===this.remaining||0===this.queue.length||this.globalLimit||this.execute(this.queue.shift()).then(()=>{this.busy=!1;this.handle()})}}e.exports=s},function(e,t,n){(function(t){const i=n(0);class s{constructor(){this.build(this.constructor.DEFAULT)}set({url:url,version:version}={}){this.build({url:url||this.constructor.DFEAULT.url,version:version||this.constructor.DEFAULT.version})}build(e){this.userAgent=`DiscordBot (${e.url}, ${e.version}) Node.js/${t.version}`}}s.DEFAULT={url:i.Package.homepage.split("#")[0],version:i.Package.version},e.exports=s}).call(t,n(6))},function(e,t,n){const i=n(12).EventEmitter,s=n(0),r=n(66),o=n(65);class a extends i{constructor(e){super(),this.client=e,this.packetManager=new r(this),this.status=s.Status.IDLE,this.connection=null}heartbeat(){return this.connection?this.connection.heartbeat():this.debug("No connection to heartbeat")}debug(e){return this.client.emit("debug",`[ws] ${e}`)}destroy(){return this.connection?this.connection.destroy():this.debug("Attempted to destroy WebSocket but no connection exists!")}connect(e){if(!this.connection)return this.connection=new o(this,e),!0;switch(this.connection.status){case s.Status.IDLE:case s.Status.DISCONNECTED:return this.connection.connect(e,5500),!0;default:return this.debug(`Couldn't connect to ${e} as the websocket is at state ${this.connection.status}`),!1}}}e.exports=a},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.ChannelCreate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.actions.ChannelDelete.handle(n);i.channel&&t.emit(s.Events.CHANNEL_DELETE,i.channel)}}e.exports=r},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.channels.get(n.channel_id),r=new Date(n.last_pin_timestamp);i&&r&&t.emit(s.Events.CHANNEL_PINS_UPDATE,i,r)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.ChannelUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id),r=t.users.get(n.user.id);i&&r&&t.emit(s.Events.GUILD_BAN_ADD,i,r)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildBanRemove.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.id);i?i.available||n.unavailable||(i.setup(n),this.packetManager.ws.checkIfReady()):t.dataManager.newGuild(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.actions.GuildDelete.handle(n);i.guild&&t.emit(s.Events.GUILD_DELETE,i.guild)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildEmojisUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id);i&&(i.memberCount++,i._addMember(n))}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildMemberRemove.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id);if(i){const e=i.members.get(n.user.id);e&&i._updateMember(e,n)}}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id);if(i){const e=n.members.map(e=>i._addMember(e,!1));t.emit(s.Events.GUILD_MEMBERS_CHUNK,e,i),t.ws.lastHeartbeatAck=!0}}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildRoleCreate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildRoleDelete.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildRoleUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildSync.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.actions.MessageCreate.handle(n);i.message&&t.emit(s.Events.MESSAGE_CREATE,i.message)}}e.exports=r},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.actions.MessageDelete.handle(n);i.message&&t.emit(s.Events.MESSAGE_DELETE,i.message)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageDeleteBulk.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageReactionAdd.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageReactionRemove.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageReactionRemoveAll.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0),r=n(4);class o extends i{handle(e){const t=this.packetManager.client,n=e.d;let i=t.users.get(n.user.id);const o=t.guilds.get(n.guild_id);if(!i){if(!n.user.username)return;i=t.dataManager.newUser(n.user)}const a=r.cloneObject(i);if(i.patch(n.user),i.equals(a)||t.emit(s.Events.USER_UPDATE,a,i),o){let e=o.members.get(i.id);if(e||"offline"===n.status||(e=o._addMember({user:i,roles:n.roles,deaf:!1,mute:!1},!1),t.emit(s.Events.GUILD_MEMBER_AVAILABLE,e)),e){if(0===t.listenerCount(s.Events.PRESENCE_UPDATE))return void o._setPresence(i.id,n);const a=r.cloneObject(e);e.presence&&(a.frozenPresence=r.cloneObject(e.presence)),o._setPresence(i.id,n),t.emit(s.Events.PRESENCE_UPDATE,a,e)}else o._setPresence(i.id,n)}}}e.exports=o},function(e,t,n){const i=n(1),s=n(39);class r extends i{handle(e){const t=this.packetManager.client,n=e.d;t.ws.heartbeat(),n.user.user_settings=n.user_settings;const i=new s(t,n.user);t.user=i,t.readyAt=new Date,t.users.set(i.id,i);for(const e of n.guilds)t.dataManager.newGuild(e);for(const e of n.private_channels)t.dataManager.newChannel(e);for(const e of n.relationships){const n=t.dataManager.newUser(e.user);1===e.type?t.user.friends.set(n.id,n):2===e.type&&t.user.blocked.set(n.id,n)}n.presences=n.presences||[];for(const e of n.presences)t.dataManager.newUser(e.user),t._setPresence(e.user.id,e);if(n.notes)for(const e in n.notes){let i=n.notes[e];i.length||(i=null),t.user.notes.set(e,i)}!t.user.bot&&t.options.sync&&t.setInterval(t.syncGuilds.bind(t),3e4),t.once("ready",t.syncGuilds.bind(t)),t.users.has("1")||t.dataManager.newUser({id:"1",username:"Clyde",discriminator:"0000",avatar:"https://discordapp.com/assets/f78426a064bc9dd24847519259bc42af.png",bot:!0,status:"online",game:null,verified:!0});const r=t.setTimeout(()=>{t.ws.connection.triggerReady()},1200*n.guilds.length);t.once("ready",()=>t.clearTimeout(r));const o=this.packetManager.ws;o.sessionID=n.session_id,o._trace=n._trace,t.emit("debug",`READY ${o._trace.join(" -> ")} ${o.sessionID}`),o.checkIfReady()}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;1===n.type?t.fetchUser(n.id).then(e=>{t.user.friends.set(e.id,e)}):2===n.type&&t.fetchUser(n.id).then(e=>{t.user.blocked.set(e.id,e)})}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;2===n.type?t.user.blocked.has(n.id)&&t.user.blocked.delete(n.id):1===n.type&&t.user.friends.has(n.id)&&t.user.friends.delete(n.id)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=t.ws;n._trace=e.d._trace;const i=n.sequence-n.resumeStart;n.resumeStart=-1,t.emit("debug",`RESUMED ${n._trace.join(" -> ")} | replayed ${i} events. `),t.emit("resume",i),n.connection.triggerReady(),n.heartbeat()}}e.exports=s},function(e,t,n){function i(e,t){return e.client.setTimeout(()=>{e.client.emit(r.Events.TYPING_STOP,e,t,e._typing.get(t.id));e._typing.delete(t.id)},6e3)}const s=n(1),r=n(0);class o extends s{handle(e){const t=this.packetManager.client,n=e.d,s=t.channels.get(n.channel_id),o=t.users.get(n.user_id),c=new Date(1e3*n.timestamp);if(s&&o){if("voice"===s.type)return void t.emit(r.Events.WARN,`Discord sent a typing packet to voice channel ${s.id}`);if(s._typing.has(o.id)){const e=s._typing.get(o.id);e.lastTimestamp=c,e.resetTimeout(i(s,o))}else s._typing.set(o.id,new a(t,c,c,i(s,o))),t.emit(r.Events.TYPING_START,s,o)}}}class a{constructor(e,t,n,i){this.client=e,this.since=t,this.lastTimestamp=n,this._timeout=i}resetTimeout(e){this.client.clearTimeout(this._timeout),this._timeout=e}get elapsedTime(){return Date.now()-this.since}}e.exports=o},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.UserNoteUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client;t.user.settings.patch(e.d),t.emit(s.Events.USER_SETTINGS_UPDATE,t.user.settings)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.UserUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.emit("self.voiceServer",n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0),r=n(4);class o extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id);if(i){const e=i.members.get(n.user_id);if(e){const i=r.cloneObject(e);e.voiceChannel&&e.voiceChannel.id!==n.channel_id&&e.voiceChannel.members.delete(i.id),n.channel_id||(e.speaking=null),e.user.id===t.user.id&&n.channel_id&&t.emit("self.voiceStateUpdate",n);const o=t.channels.get(n.channel_id);o&&o.members.set(e.user.id,e),e.serverMute=n.mute,e.serverDeaf=n.deaf,e.selfMute=n.self_mute,e.selfDeaf=n.self_deaf,e.voiceSessionID=n.session_id,e.voiceChannelID=n.channel_id,t.emit(s.Events.VOICE_STATE_UPDATE,i,e)}}}}e.exports=o},function(e,t,n){const i=n(4);e.exports={Client:n(68),Shard:n(71),ShardClientUtil:n(72),ShardingManager:n(73),WebhookClient:n(69),Collection:n(3),Constants:n(0),EvaluatedPermissions:n(9),Permissions:n(9),Snowflake:n(7),SnowflakeUtil:n(7),Util:i,util:i,version:n(38).version,escapeMarkdown:i.escapeMarkdown,fetchRecommendedShards:i.fetchRecommendedShards,splitMessage:i.splitMessage,Channel:n(14),ClientUser:n(39),ClientUserSettings:n(40),DMChannel:n(41),Emoji:n(17),Game:n(11).Game,GroupDMChannel:n(28),Guild:n(24),GuildChannel:n(25),GuildMember:n(18),Invite:n(42),Message:n(19),MessageAttachment:n(43),MessageCollector:n(44),MessageEmbed:n(45),MessageMentions:n(46),MessageReaction:n(47),OAuth2Application:n(48),PartialGuild:n(49),PartialGuildChannel:n(50),PermissionOverwrites:n(51),Presence:n(11).Presence,ReactionEmoji:n(29),RichEmbed:n(70),Role:n(15),TextChannel:n(52),User:n(16),VoiceChannel:n(53),Webhook:n(30)},"browser"===n(23).platform()&&(window.Discord=e.exports)},function(e,t,n){const i=n(67),s=n(3);class r extends i{constructor(e,t,n={}){super(e.client,t,n),this.message=e,this.users=new s,this.total=0,this.client.on("messageReactionAdd",this.listener)}handle(e){return e.message.id!==this.message.id?null:{key:e.emoji.id||e.emoji.name,value:e}}postCheck(e,t){return this.users.set(t.id,t),this.options.max&&++this.total>=this.options.max?"limit":this.options.maxEmojis&&this.collected.size>=this.options.maxEmojis?"emojiLimit":this.options.maxUsers&&this.users.size>=this.options.maxUsers?"userLimit":null}cleanup(){this.client.removeListener("messageReactionAdd",this.listener)}}e.exports=r},function(e,t){class n{constructor(e,t){this.user=e,this.setup(t)}setup(e){this.type=e.type,this.name=e.name,this.id=e.id,this.revoked=e.revoked,this.integrations=e.integrations}}e.exports=n},function(e,t,n){const i=n(3),s=n(180);class r{constructor(e,t){this.user=e,Object.defineProperty(this,"client",{value:e.client}),this.mutualGuilds=new i,this.connections=new i,this.setup(t)}setup(e){this.premium=e.premium,this.premiumSince=e.premium_since?new Date(e.premium_since):null;for(const t of e.mutual_guilds)this.client.guilds.has(t.id)&&this.mutualGuilds.set(t.id,this.client.guilds.get(t.id));for(const t of e.connected_accounts)this.connections.set(t.id,new s(this.user,t))}}e.exports=r},function(e,t){class n{constructor(e){this.id=e.id,this.name=e.name,this.vip=e.vip,this.deprecated=e.deprecated,this.optimal=e.optimal,this.custom=e.custom,this.sampleHostname=e.sample_hostname}}e.exports=n},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){}]); \ No newline at end of file +\`\`\``),reply&&"dm"!==e.channel.type){const e=this.client.resolver.resolveUserID(reply),n=`<@${reply instanceof p&&reply.nickname?"!":""}${e}>`;t=`${n}${t?`, ${t}`:""}`}return this.rest.makeRequest("patch",a.Message(e),!0,{content:t,embed:embed}).then(e=>this.client.actions.MessageUpdate.handle(e).updated)}deleteMessage(e){return this.rest.makeRequest("delete",a.Message(e),!0).then(()=>this.client.actions.MessageDelete.handle({id:e.id,channel_id:e.channel.id}).message)}ackMessage(e){return this.rest.makeRequest("post",a.Message(e).ack,!0,{token:this._ackToken}).then(t=>{t.token&&(this._ackToken=t.token);return e})}ackTextChannel(e){return this.rest.makeRequest("post",a.Channel(e).ack,!0,{token:this._ackToken}).then(t=>{t.token&&(this._ackToken=t.token);return e})}ackGuild(e){return this.rest.makeRequest("post",a.Guild(e).ack,!0).then(()=>e)}bulkDeleteMessages(e,t,n){return n&&(t=t.filter(e=>Date.now()-u.deconstruct(e).date.getTime()<12096e5)),this.rest.makeRequest("post",a.Channel(e).messages.bulkDelete,!0,{messages:t}).then(()=>this.client.actions.MessageDeleteBulk.handle({channel_id:e.id,ids:t}).messages)}search(e,t){if("string"==typeof t&&(t={content:t}),t.before&&(t.before instanceof Date||(t.before=new Date(t.before)),t.maxID=s.fromNumber(t.before.getTime()-14200704e5).shiftLeft(22).toString()),t.after&&(t.after instanceof Date||(t.after=new Date(t.after)),t.minID=s.fromNumber(t.after.getTime()-14200704e5).shiftLeft(22).toString()),t.during){t.during instanceof Date||(t.during=new Date(t.during));const e=t.during.getTime()-14200704e5;t.minID=s.fromNumber(e).shiftLeft(22).toString(),t.maxID=s.fromNumber(e+864e5).shiftLeft(22).toString()}t.channel&&(t.channel=this.client.resolver.resolveChannelID(t.channel)),t.author&&(t.author=this.client.resolver.resolveUserID(t.author)),t.mentions&&(t.mentions=this.client.resolver.resolveUserID(t.options.mentions)),t={content:t.content,max_id:t.maxID,min_id:t.minID,has:t.has,channel_id:t.channel,author_id:t.author,author_type:t.authorType,context_size:t.contextSize,sort_by:t.sortBy,sort_order:t.sortOrder,limit:t.limit,offset:t.offset,mentions:t.mentions,mentions_everyone:t.mentionsEveryone,link_hostname:t.linkHostname,embed_provider:t.embedProvider,embed_type:t.embedType,attachment_filename:t.attachmentFilename,attachment_extension:t.attachmentExtension};for(const e in t)void 0===t[e]&&delete t[e];const n=(i.stringify(t).match(/[^=&?]+=[^=&?]+/g)||[]).join("&");let r;if(e instanceof E)r=a.Channel(e).search;else{if(!(e instanceof y))throw new TypeError("Target must be a TextChannel, DMChannel, GroupDMChannel, or Guild.");r=a.Guild(e).search}return this.rest.makeRequest("get",`${r}?${n}`,!0).then(e=>{const t=e.messages.map(e=>e.map(e=>new d(this.client.channels.get(e.channel_id),e,this.client)));return{totalResults:e.total_results,messages:t}})}createChannel(e,t,n,i){return i instanceof c&&(i=i.array()),this.rest.makeRequest("post",a.Guild(e).channels,!0,{name:t,type:n,permission_overwrites:i}).then(e=>this.client.actions.ChannelCreate.handle(e).channel)}createDM(e){const t=this.getExistingDM(e);return t?Promise.resolve(t):this.rest.makeRequest("post",a.User(this.client.user).channels,!0,{recipient_id:e.id}).then(e=>this.client.actions.ChannelCreate.handle(e).channel)}createGroupDM(e){const t=this.client.user.bot?{access_tokens:e.accessTokens,nicks:e.nicks}:{recipients:e.recipients};return this.rest.makeRequest("post",a.User("@me").channels,!0,t).then(e=>new w(this.client,e))}addUserToGroupDM(e,t){const n=this.client.user.bot?{nick:t.nick,access_token:t.accessToken}:{recipient:t.id};return this.rest.makeRequest("put",a.Channel(e).Recipient(t.id),!0,n).then(()=>e)}getExistingDM(e){return this.client.channels.find(t=>t.recipient&&t.recipient.id===e.id)}deleteChannel(e){return(e instanceof h||e instanceof p)&&(e=this.getExistingDM(e)),e?this.rest.makeRequest("delete",a.Channel(e),!0).then(t=>{t.id=e.id;return this.client.actions.ChannelDelete.handle(t).channel}):Promise.reject(new Error("No channel to delete."))}updateChannel(e,t){const n={};return n.name=(t.name||e.name).trim(),n.topic=t.topic||e.topic,n.position=t.position||e.position,n.bitrate=t.bitrate||e.bitrate,n.user_limit=t.userLimit||e.userLimit,this.rest.makeRequest("patch",a.Channel(e),!0,n).then(e=>this.client.actions.ChannelUpdate.handle(e).updated)}leaveGuild(e){return e.ownerID===this.client.user.id?Promise.reject(new Error("Guild is owned by the client.")):this.rest.makeRequest("delete",a.User("@me").Guild(e.id),!0).then(()=>this.client.actions.GuildDelete.handle({id:e.id}).guild)}createGuild(e){return e.icon=this.client.resolver.resolveBase64(e.icon)||null,e.region=e.region||"us-central",new Promise((t,n)=>{this.rest.makeRequest("post",a.guilds,!0,e).then(e=>{if(this.client.guilds.has(e.id))return t(this.client.guilds.get(e.id));const i=n=>{n.id===e.id&&(this.client.removeListener(o.Events.GUILD_CREATE,i),this.client.clearTimeout(s),t(n))};this.client.on(o.Events.GUILD_CREATE,i);const s=this.client.setTimeout(()=>{this.client.removeListener(o.Events.GUILD_CREATE,i);n(new Error("Took too long to receive guild data."))},1e4);return},n)})}deleteGuild(e){return this.rest.makeRequest("delete",a.Guild(e),!0).then(()=>this.client.actions.GuildDelete.handle({id:e.id}).guild)}getUser(e,t){return this.rest.makeRequest("get",a.User(e),!0).then(e=>t?this.client.actions.UserGet.handle(e).user:new h(this.client,e))}updateCurrentUser(e,t){const n=this.client.user,i={};return i.username=e.username||n.username,i.avatar=this.client.resolver.resolveBase64(e.avatar)||n.avatar,n.bot||(i.email=e.email||n.email,i.password=t,e.new_password&&(i.new_password=e.newPassword)),this.rest.makeRequest("patch",a.User("@me"),!0,i).then(e=>this.client.actions.UserUpdate.handle(e).updated)}updateGuild(e,t){const n={};return t.name&&(n.name=t.name),t.region&&(n.region=t.region),t.verificationLevel&&(n.verification_level=Number(t.verificationLevel)),t.afkChannel&&(n.afk_channel_id=this.client.resolver.resolveChannel(t.afkChannel).id),t.afkTimeout&&(n.afk_timeout=Number(t.afkTimeout)),t.icon&&(n.icon=this.client.resolver.resolveBase64(t.icon)),t.owner&&(n.owner_id=this.client.resolver.resolveUser(t.owner).id),t.splash&&(n.splash=this.client.resolver.resolveBase64(t.splash)),this.rest.makeRequest("patch",a.Guild(e),!0,n).then(e=>this.client.actions.GuildUpdate.handle(e).updated)}kickGuildMember(e,t){return this.rest.makeRequest("delete",a.Guild(e).Member(t),!0).then(()=>this.client.actions.GuildMemberRemove.handle({guild_id:e.id,user:t.user}).member)}createGuildRole(e,t){return t.color&&(t.color=this.client.resolver.resolveColor(t.color)),t.permissions&&(t.permissions=r.resolve(t.permissions)),this.rest.makeRequest("post",a.Guild(e).roles,!0,t).then(t=>this.client.actions.GuildRoleCreate.handle({guild_id:e.id,role:t}).role)}deleteGuildRole(e){return this.rest.makeRequest("delete",a.Guild(e.guild).Role(e.id),!0).then(()=>this.client.actions.GuildRoleDelete.handle({guild_id:e.guild.id,role_id:e.id}).role)}setChannelOverwrite(e,t){return this.rest.makeRequest("put",`${a.Channel(e).permissions}/${t.id}`,!0,t)}deletePermissionOverwrites(e){return this.rest.makeRequest("delete",`${a.Channel(e.channel).permissions}/${e.id}`,!0).then(()=>e)}getChannelMessages(e,t={}){const n=[];t.limit&&n.push(`limit=${t.limit}`),t.around?n.push(`around=${t.around}`):t.before?n.push(`before=${t.before}`):t.after&&n.push(`after=${t.after}`);let i=a.Channel(e).messages;return n.length>0&&(i+=`?${n.join("&")}`),this.rest.makeRequest("get",i,!0)}getChannelMessage(e,t){const n=e.messages.get(t);return n?Promise.resolve(n):this.rest.makeRequest("get",a.Channel(e).Message(t),!0)}putGuildMember(e,t,n){if(n.access_token=n.accessToken,n.roles){const e=n.roles;(e instanceof c||e instanceof Array&&e[0]instanceof f)&&(n.roles=e.map(e=>e.id))}return this.rest.makeRequest("put",a.Guild(e).Member(t.id),!0,n).then(t=>this.client.actions.GuildMemberGet.handle(e,t).member)}getGuildMember(e,t,n){return this.rest.makeRequest("get",a.Guild(e).Member(t.id),!0).then(t=>n?this.client.actions.GuildMemberGet.handle(e,t).member:new p(e,t))}updateGuildMember(e,t){t.channel&&(t.channel_id=this.client.resolver.resolveChannel(t.channel).id),t.roles&&(t.roles=t.roles.map(e=>e instanceof f?e.id:e));let n=a.Member(e);if(e.id===this.client.user.id){const i=Object.keys(t);1===i.length&&"nick"===i[0]&&(n=a.Member(e).nickname)}return this.rest.makeRequest("patch",n,!0,t).then(t=>e.guild._updateMember(e,t).mem)}addMemberRole(e,t){return new Promise((n,i)=>{if(e._roles.includes(t.id))return n(e);const s=(e,i)=>{!e._roles.includes(t.id)&&i._roles.includes(t.id)&&(this.client.removeListener(o.Events.GUILD_MEMBER_UPDATE,s),n(i))};this.client.on(o.Events.GUILD_MEMBER_UPDATE,s);const r=this.client.setTimeout(()=>this.client.removeListener(o.Events.GUILD_MEMBER_UPDATE,s),1e4);return this.rest.makeRequest("put",a.Member(e).Role(t.id),!0).catch(e=>{this.client.removeListener(o.Events.GUILD_BAN_REMOVE,s);this.client.clearTimeout(r);i(e)})})}removeMemberRole(e,t){return new Promise((n,i)=>{if(!e._roles.includes(t.id))return n(e);const s=(e,i)=>{e._roles.includes(t.id)&&!i._roles.includes(t.id)&&(this.client.removeListener(o.Events.GUILD_MEMBER_UPDATE,s),n(i))};this.client.on(o.Events.GUILD_MEMBER_UPDATE,s);const r=this.client.setTimeout(()=>this.client.removeListener(o.Events.GUILD_MEMBER_UPDATE,s),1e4);return this.rest.makeRequest("delete",a.Member(e).Role(t.id),!0).catch(e=>{this.client.removeListener(o.Events.GUILD_BAN_REMOVE,s);this.client.clearTimeout(r);i(e)})})}sendTyping(e){return this.rest.makeRequest("post",a.Channel(e).typing,!0)}banGuildMember(e,t,n=0){const i=this.client.resolver.resolveUserID(t);return i?this.rest.makeRequest("put",`${a.Guild(e).bans}/${i}?delete-message-days=${n}`,!0,{"delete-message-days":n}).then(()=>{if(t instanceof p)return t;const n=this.client.resolver.resolveUser(i);if(n)return(t=this.client.resolver.resolveGuildMember(e,n))||n;return i}):Promise.reject(new Error("Couldn't resolve the user ID to ban."))}unbanGuildMember(e,t){return new Promise((n,i)=>{const s=this.client.resolver.resolveUserID(t);if(!s)throw new Error("Couldn't resolve the user ID to unban.");const r=(t,i)=>{t.id===e.id&&i.id===s&&(this.client.removeListener(o.Events.GUILD_BAN_REMOVE,r),this.client.clearTimeout(c),n(i))};this.client.on(o.Events.GUILD_BAN_REMOVE,r);const c=this.client.setTimeout(()=>{this.client.removeListener(o.Events.GUILD_BAN_REMOVE,r);i(new Error("Took too long to receive the ban remove event."))},1e4);this.rest.makeRequest("delete",`${a.Guild(e).bans}/${s}`,!0).catch(e=>{this.client.removeListener(o.Events.GUILD_BAN_REMOVE,r);this.client.clearTimeout(c);i(e)})})}getGuildBans(e){return this.rest.makeRequest("get",a.Guild(e).bans,!0).then(e=>{const t=new c;for(const n of e){const e=this.client.dataManager.newUser(n.user);t.set(e.id,e)}return t})}updateGuildRole(e,t){const n={};return n.name=t.name||e.name,n.position=void 0!==t.position?t.position:e.position,n.color=this.client.resolver.resolveColor(t.color||e.color),n.hoist=void 0!==t.hoist?t.hoist:e.hoist,n.mentionable=void 0!==t.mentionable?t.mentionable:e.mentionable,t.permissions?n.permissions=r.resolve(t.permissions):n.permissions=e.permissions,this.rest.makeRequest("patch",a.Guild(e.guild).Role(e.id),!0,n).then(t=>this.client.actions.GuildRoleUpdate.handle({role:t,guild_id:e.guild.id}).updated)}pinMessage(e){return this.rest.makeRequest("put",a.Channel(e.channel).Pin(e.id),!0).then(()=>e)}unpinMessage(e){return this.rest.makeRequest("delete",a.Channel(e.channel).Pin(e.id),!0).then(()=>e)}getChannelPinnedMessages(e){return this.rest.makeRequest("get",a.Channel(e).pins,!0)}createChannelInvite(e,t){const n={};return n.temporary=t.temporary,n.max_age=t.maxAge,n.max_uses=t.maxUses,this.rest.makeRequest("post",a.Channel(e).invites,!0,n).then(e=>new m(this.client,e))}deleteInvite(e){return this.rest.makeRequest("delete",a.Invite(e.code),!0).then(()=>e)}getInvite(e){return this.rest.makeRequest("get",a.Invite(e),!0).then(e=>new m(this.client,e))}getGuildInvites(e){return this.rest.makeRequest("get",a.Guild(e).invites,!0).then(e=>{const t=new c;for(const n of e){const e=new m(this.client,n);t.set(e.code,e)}return t})}pruneGuildMembers(e,t,n){return this.rest.makeRequest(n?"get":"post",`${a.Guild(e).prune}?days=${t}`,!0).then(e=>e.pruned)}createEmoji(e,t,n,i){const s={image:t,name:n};return i&&(s.roles=i.map(e=>e.id?e.id:e)),this.rest.makeRequest("post",a.Guild(e).emojis,!0,s).then(t=>this.client.actions.GuildEmojiCreate.handle(e,t).emoji)}updateEmoji(e,t){const n={};return t.name&&(n.name=t.name),t.roles&&(n.roles=t.roles.map(e=>e.id?e.id:e)),this.rest.makeRequest("patch",a.Guild(e.guild).Emoji(e.id),!0,n).then(t=>this.client.actions.GuildEmojiUpdate.handle(e,t).emoji)}deleteEmoji(e){return this.rest.makeRequest("delete",a.Guild(e.guild).Emoji(e.id),!0).then(()=>this.client.actions.GuildEmojiDelete.handle(e).data)}getWebhook(e,t){return this.rest.makeRequest("get",a.Webhook(e,t),!t).then(e=>new g(this.client,e))}getGuildWebhooks(e){return this.rest.makeRequest("get",a.Guild(e).webhooks,!0).then(e=>{const t=new c;for(const n of e)t.set(n.id,new g(this.client,n));return t})}getChannelWebhooks(e){return this.rest.makeRequest("get",a.Channel(e).webhooks,!0).then(e=>{const t=new c;for(const n of e)t.set(n.id,new g(this.client,n));return t})}createWebhook(e,t,n){return this.rest.makeRequest("post",a.Channel(e).webhooks,!0,{name:t,avatar:n}).then(e=>new g(this.client,e))}editWebhook(e,t,n){return this.rest.makeRequest("patch",a.Webhook(e.id,e.token),!1,{name:t,avatar:n}).then(t=>{e.name=t.name;e.avatar=t.avatar;return e})}deleteWebhook(e){return this.rest.makeRequest("delete",a.Webhook(e.id,e.token),!1)}sendWebhookMessage(e,t,{avatarURL:avatarURL,tts:tts,disableEveryone:disableEveryone,embeds:embeds,username:username}={},n=null){return username=username||e.name,void 0!==t&&(t=this.client.resolver.resolveString(t)),t&&(disableEveryone||void 0===disableEveryone&&this.client.options.disableEveryone)&&(t=t.replace(/@(everyone|here)/g,"@​$1")),this.rest.makeRequest("post",`${a.Webhook(e.id,e.token)}?wait=true`,!1,{username:username,avatar_url:avatarURL,content:t,tts:tts,embeds:embeds},n)}sendSlackWebhookMessage(e,t){return this.rest.makeRequest("post",`${a.Webhook(e.id,e.token)}/slack?wait=true`,!1,t)}fetchUserProfile(e){return this.rest.makeRequest("get",a.User(e).profile,!0).then(t=>new v(e,t))}fetchMeMentions(e){return e.guild&&(e.guild=e.guild.id?e.guild.id:e.guild),this.rest.makeRequest("get",a.User("@me").mentions(e.limit,e.roles,e.everyone,e.guild)).then(e=>e.body.map(e=>new d(this.client.channels.get(e.channel_id),e,this.client)))}addFriend(e){return this.rest.makeRequest("post",a.User("@me"),!0,{username:e.username,discriminator:e.discriminator}).then(()=>e)}removeFriend(e){return this.rest.makeRequest("delete",a.User("@me").Relationship(e.id),!0).then(()=>e)}blockUser(e){return this.rest.makeRequest("put",a.User("@me").Relationship(e.id),!0,{type:2}).then(()=>e)}unblockUser(e){return this.rest.makeRequest("delete",a.User("@me").Relationship(e.id),!0).then(()=>e)}updateChannelPositions(e,t){const n=new Array(t.length);for(let e=0;ethis.client.actions.GuildChannelsPositionUpdate.handle({guild_id:e,channels:t}).guild)}setRolePositions(e,t){return this.rest.makeRequest("patch",a.Guild(e).roles,!0,t).then(()=>this.client.actions.GuildRolesPositionUpdate.handle({guild_id:e,roles:t}).guild)}setChannelPositions(e,t){return this.rest.makeRequest("patch",a.Guild(e).channels,!0,t).then(()=>this.client.actions.GuildChannelsPositionUpdate.handle({guild_id:e,channels:t}).guild)}addMessageReaction(e,t){return this.rest.makeRequest("put",a.Message(e).Reaction(t).User("@me"),!0).then(()=>e._addReaction(l.parseEmoji(t),e.client.user))}removeMessageReaction(e,t,n){const i=a.Message(e).Reaction(t).User(n===this.client.user.id?"@me":n);return this.rest.makeRequest("delete",i,!0).then(()=>this.client.actions.MessageReactionRemove.handle({user_id:n,message_id:e.id,emoji:l.parseEmoji(t),channel_id:e.channel.id}).reaction)}removeMessageReactions(e){return this.rest.makeRequest("delete",a.Message(e).reactions,!0).then(()=>e)}getMessageReactionUsers(e,t,n=100){return this.rest.makeRequest("get",a.Message(e).Reaction(t,n),!0)}getApplication(e){return this.rest.makeRequest("get",a.OAUTH2.Application(e),!0).then(e=>new b(this.client,e))}resetApplication(e){return this.rest.makeRequest("post",a.OAUTH2.Application(e).reset,!0).then(e=>new b(this.client,e))}setNote(e,t){return this.rest.makeRequest("put",a.User(e).note,!0,{note:t}).then(()=>e)}acceptInvite(e){return e.id&&(e=e.id),new Promise((t,n)=>this.rest.makeRequest("post",a.Invite(e),!0).then(e=>{const i=n=>{n.id===e.id&&(t(n),this.client.removeListener(o.Events.GUILD_CREATE,i))};this.client.on(o.Events.GUILD_CREATE,i);this.client.setTimeout(()=>{this.client.removeListener(o.Events.GUILD_CREATE,i);n(new Error("Accepting invite timed out"))},12e4)}))}patchUserSettings(e){return this.rest.makeRequest("patch",o.Endpoints.User("@me").settings,!0,e)}}e.exports=x},function(e,t,n){const i=n(64);class s extends i{constructor(e,t){super(e,t),this.client=e.client,this.limit=1/0,this.resetTime=null,this.remaining=1,this.timeDifference=0,this.resetTimeout=null}push(e){super.push(e),this.handle()}execute(e){e&&e.request.gen().end((t,n)=>{n&&n.headers&&(this.limit=Number(n.headers["x-ratelimit-limit"]),this.resetTime=1e3*Number(n.headers["x-ratelimit-reset"]),this.remaining=Number(n.headers["x-ratelimit-remaining"]),this.timeDifference=Date.now()-new Date(n.headers.date).getTime());if(t)if(429===t.status){if(this.queue.unshift(e),n.headers["x-ratelimit-global"]&&(this.globalLimit=!0),this.resetTimeout)return;this.resetTimeout=this.client.setTimeout(()=>{this.remaining=this.limit;this.globalLimit=!1;this.handle();this.resetTimeout=null},Number(n.headers["retry-after"])+this.client.options.restTimeOffset)}else e.reject(t),this.handle();else{this.globalLimit=!1;const t=n&&n.body?n.body:{};e.resolve(t),this.handle()}})}handle(){super.handle(),this.remaining<=0||0===this.queue.length||this.globalLimit||(this.execute(this.queue.shift()),this.remaining--,this.handle())}}e.exports=s},function(e,t,n){const i=n(64);class s extends i{constructor(e,t){super(e,t),this.endpoint=t,this.timeDifference=0,this.busy=!1}push(e){super.push(e),this.handle()}execute(e){return this.busy=!0,new Promise(t=>{e.request.gen().on("error",t=>e.reject(t)).end((n,i)=>{i&&i.headers&&(this.requestLimit=Number(i.headers["x-ratelimit-limit"]),this.requestResetTime=1e3*Number(i.headers["x-ratelimit-reset"]),this.requestRemaining=Number(i.headers["x-ratelimit-remaining"]),this.timeDifference=Date.now()-new Date(i.headers.date).getTime());if(n)429===n.status?(this.queue.unshift(e),this.restManager.client.setTimeout(()=>{this.globalLimit=!1;t()},Number(i.headers["retry-after"])+this.restManager.client.options.restTimeOffset),i.headers["x-ratelimit-global"]&&(this.globalLimit=!0)):(e.reject(n),t(n));else{this.globalLimit=!1;const n=i&&i.body?i.body:{};e.resolve(n),0===this.requestRemaining?this.restManager.client.setTimeout(()=>t(n),this.requestResetTime-Date.now()+this.timeDifference+this.restManager.client.options.restTimeOffset):t(n)}})})}handle(){super.handle(),this.busy||0===this.remaining||0===this.queue.length||this.globalLimit||this.execute(this.queue.shift()).then(()=>{this.busy=!1;this.handle()})}}e.exports=s},function(e,t,n){(function(t){const i=n(0);class s{constructor(){this.build(this.constructor.DEFAULT)}set({url:url,version:version}={}){this.build({url:url||this.constructor.DFEAULT.url,version:version||this.constructor.DEFAULT.version})}build(e){this.userAgent=`DiscordBot (${e.url}, ${e.version}) Node.js/${t.version}`}}s.DEFAULT={url:i.Package.homepage.split("#")[0],version:i.Package.version},e.exports=s}).call(t,n(6))},function(e,t,n){const i=n(12).EventEmitter,s=n(0),r=n(66),o=n(65);class a extends i{constructor(e){super(),this.client=e,this.packetManager=new r(this),this.status=s.Status.IDLE,this.connection=null}heartbeat(){return this.connection?this.connection.heartbeat():this.debug("No connection to heartbeat")}debug(e){return this.client.emit("debug",`[ws] ${e}`)}destroy(){return this.connection?this.connection.destroy():this.debug("Attempted to destroy WebSocket but no connection exists!")}send(e){return this.connection?this.connection.send(e):this.debug("No connection to websocket")}connect(e){if(!this.connection)return this.connection=new o(this,e),!0;switch(this.connection.status){case s.Status.IDLE:case s.Status.DISCONNECTED:return this.connection.connect(e,5500),!0;default:return this.debug(`Couldn't connect to ${e} as the websocket is at state ${this.connection.status}`),!1}}}e.exports=a},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.ChannelCreate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.actions.ChannelDelete.handle(n);i.channel&&t.emit(s.Events.CHANNEL_DELETE,i.channel)}}e.exports=r},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.channels.get(n.channel_id),r=new Date(n.last_pin_timestamp);i&&r&&t.emit(s.Events.CHANNEL_PINS_UPDATE,i,r)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.ChannelUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id),r=t.users.get(n.user.id);i&&r&&t.emit(s.Events.GUILD_BAN_ADD,i,r)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildBanRemove.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.id);i?i.available||n.unavailable||(i.setup(n),this.packetManager.ws.checkIfReady()):t.dataManager.newGuild(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.actions.GuildDelete.handle(n);i.guild&&t.emit(s.Events.GUILD_DELETE,i.guild)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildEmojisUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id);i&&(i.memberCount++,i._addMember(n))}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildMemberRemove.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id);if(i){const e=i.members.get(n.user.id);e&&i._updateMember(e,n)}}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id);if(i){const e=n.members.map(e=>i._addMember(e,!1));t.emit(s.Events.GUILD_MEMBERS_CHUNK,e,i),t.ws.lastHeartbeatAck=!0}}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildRoleCreate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildRoleDelete.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildRoleUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildSync.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.GuildUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.actions.MessageCreate.handle(n);i.message&&t.emit(s.Events.MESSAGE_CREATE,i.message)}}e.exports=r},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.actions.MessageDelete.handle(n);i.message&&t.emit(s.Events.MESSAGE_DELETE,i.message)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageDeleteBulk.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageReactionAdd.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageReactionRemove.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageReactionRemoveAll.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.MessageUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0),r=n(4);class o extends i{handle(e){const t=this.packetManager.client,n=e.d;let i=t.users.get(n.user.id);const o=t.guilds.get(n.guild_id);if(!i){if(!n.user.username)return;i=t.dataManager.newUser(n.user)}const a=r.cloneObject(i);if(i.patch(n.user),i.equals(a)||t.emit(s.Events.USER_UPDATE,a,i),o){let e=o.members.get(i.id);if(e||"offline"===n.status||(e=o._addMember({user:i,roles:n.roles,deaf:!1,mute:!1},!1),t.emit(s.Events.GUILD_MEMBER_AVAILABLE,e)),e){if(0===t.listenerCount(s.Events.PRESENCE_UPDATE))return void o._setPresence(i.id,n);const a=r.cloneObject(e);e.presence&&(a.frozenPresence=r.cloneObject(e.presence)),o._setPresence(i.id,n),t.emit(s.Events.PRESENCE_UPDATE,a,e)}else o._setPresence(i.id,n)}}}e.exports=o},function(e,t,n){const i=n(1),s=n(39);class r extends i{handle(e){const t=this.packetManager.client,n=e.d;t.ws.heartbeat(),n.user.user_settings=n.user_settings;const i=new s(t,n.user);t.user=i,t.readyAt=new Date,t.users.set(i.id,i);for(const e of n.guilds)t.dataManager.newGuild(e);for(const e of n.private_channels)t.dataManager.newChannel(e);for(const e of n.relationships){const n=t.dataManager.newUser(e.user);1===e.type?t.user.friends.set(n.id,n):2===e.type&&t.user.blocked.set(n.id,n)}n.presences=n.presences||[];for(const e of n.presences)t.dataManager.newUser(e.user),t._setPresence(e.user.id,e);if(n.notes)for(const e in n.notes){let i=n.notes[e];i.length||(i=null),t.user.notes.set(e,i)}!t.user.bot&&t.options.sync&&t.setInterval(t.syncGuilds.bind(t),3e4),t.once("ready",t.syncGuilds.bind(t)),t.users.has("1")||t.dataManager.newUser({id:"1",username:"Clyde",discriminator:"0000",avatar:"https://discordapp.com/assets/f78426a064bc9dd24847519259bc42af.png",bot:!0,status:"online",game:null,verified:!0});const r=t.setTimeout(()=>{t.ws.connection.triggerReady()},1200*n.guilds.length);t.once("ready",()=>t.clearTimeout(r));const o=this.packetManager.ws;o.sessionID=n.session_id,o._trace=n._trace,t.emit("debug",`READY ${o._trace.join(" -> ")} ${o.sessionID}`),o.checkIfReady()}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;1===n.type?t.fetchUser(n.id).then(e=>{t.user.friends.set(e.id,e)}):2===n.type&&t.fetchUser(n.id).then(e=>{t.user.blocked.set(e.id,e)})}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;2===n.type?t.user.blocked.has(n.id)&&t.user.blocked.delete(n.id):1===n.type&&t.user.friends.has(n.id)&&t.user.friends.delete(n.id)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=t.ws;n._trace=e.d._trace;const i=n.sequence-n.resumeStart;n.resumeStart=-1,t.emit("debug",`RESUMED ${n._trace.join(" -> ")} | replayed ${i} events. `),t.emit("resume",i),n.connection.triggerReady(),n.heartbeat()}}e.exports=s},function(e,t,n){function i(e,t){return e.client.setTimeout(()=>{e.client.emit(r.Events.TYPING_STOP,e,t,e._typing.get(t.id));e._typing.delete(t.id)},6e3)}const s=n(1),r=n(0);class o extends s{handle(e){const t=this.packetManager.client,n=e.d,s=t.channels.get(n.channel_id),o=t.users.get(n.user_id),c=new Date(1e3*n.timestamp);if(s&&o){if("voice"===s.type)return void t.emit(r.Events.WARN,`Discord sent a typing packet to voice channel ${s.id}`);if(s._typing.has(o.id)){const e=s._typing.get(o.id);e.lastTimestamp=c,e.resetTimeout(i(s,o))}else s._typing.set(o.id,new a(t,c,c,i(s,o))),t.emit(r.Events.TYPING_START,s,o)}}}class a{constructor(e,t,n,i){this.client=e,this.since=t,this.lastTimestamp=n,this._timeout=i}resetTimeout(e){this.client.clearTimeout(this._timeout),this._timeout=e}get elapsedTime(){return Date.now()-this.since}}e.exports=o},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.UserNoteUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0);class r extends i{handle(e){const t=this.packetManager.client;t.user.settings.patch(e.d),t.emit(s.Events.USER_SETTINGS_UPDATE,t.user.settings)}}e.exports=r},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.actions.UserUpdate.handle(n)}}e.exports=s},function(e,t,n){const i=n(1);class s extends i{handle(e){const t=this.packetManager.client,n=e.d;t.emit("self.voiceServer",n)}}e.exports=s},function(e,t,n){const i=n(1),s=n(0),r=n(4);class o extends i{handle(e){const t=this.packetManager.client,n=e.d,i=t.guilds.get(n.guild_id);if(i){const e=i.members.get(n.user_id);if(e){const i=r.cloneObject(e);e.voiceChannel&&e.voiceChannel.id!==n.channel_id&&e.voiceChannel.members.delete(i.id),n.channel_id||(e.speaking=null),e.user.id===t.user.id&&n.channel_id&&t.emit("self.voiceStateUpdate",n);const o=t.channels.get(n.channel_id);o&&o.members.set(e.user.id,e),e.serverMute=n.mute,e.serverDeaf=n.deaf,e.selfMute=n.self_mute,e.selfDeaf=n.self_deaf,e.voiceSessionID=n.session_id,e.voiceChannelID=n.channel_id,t.emit(s.Events.VOICE_STATE_UPDATE,i,e)}}}}e.exports=o},function(e,t,n){const i=n(4);e.exports={Client:n(68),Shard:n(71),ShardClientUtil:n(72),ShardingManager:n(73),WebhookClient:n(69),Collection:n(3),Constants:n(0),EvaluatedPermissions:n(9),Permissions:n(9),Snowflake:n(7),SnowflakeUtil:n(7),Util:i,util:i,version:n(38).version,escapeMarkdown:i.escapeMarkdown,fetchRecommendedShards:i.fetchRecommendedShards,splitMessage:i.splitMessage,Channel:n(14),ClientUser:n(39),ClientUserSettings:n(40),DMChannel:n(41),Emoji:n(17),Game:n(11).Game,GroupDMChannel:n(28),Guild:n(24),GuildChannel:n(25),GuildMember:n(18),Invite:n(42),Message:n(19),MessageAttachment:n(43),MessageCollector:n(44),MessageEmbed:n(45),MessageMentions:n(46),MessageReaction:n(47),OAuth2Application:n(48),PartialGuild:n(49),PartialGuildChannel:n(50),PermissionOverwrites:n(51),Presence:n(11).Presence,ReactionEmoji:n(29),RichEmbed:n(70),Role:n(15),TextChannel:n(52),User:n(16),VoiceChannel:n(53),Webhook:n(30)},"browser"===n(23).platform()&&(window.Discord=e.exports)},function(e,t,n){const i=n(67),s=n(3);class r extends i{constructor(e,t,n={}){super(e.client,t,n),this.message=e,this.users=new s,this.total=0,this.client.on("messageReactionAdd",this.listener)}handle(e){return e.message.id!==this.message.id?null:{key:e.emoji.id||e.emoji.name,value:e}}postCheck(e,t){return this.users.set(t.id,t),this.options.max&&++this.total>=this.options.max?"limit":this.options.maxEmojis&&this.collected.size>=this.options.maxEmojis?"emojiLimit":this.options.maxUsers&&this.users.size>=this.options.maxUsers?"userLimit":null}cleanup(){this.client.removeListener("messageReactionAdd",this.listener)}}e.exports=r},function(e,t){class n{constructor(e,t){this.user=e,this.setup(t)}setup(e){this.type=e.type,this.name=e.name,this.id=e.id,this.revoked=e.revoked,this.integrations=e.integrations}}e.exports=n},function(e,t,n){const i=n(3),s=n(180);class r{constructor(e,t){this.user=e,Object.defineProperty(this,"client",{value:e.client}),this.mutualGuilds=new i,this.connections=new i,this.setup(t)}setup(e){this.premium=e.premium,this.premiumSince=e.premium_since?new Date(e.premium_since):null;for(const t of e.mutual_guilds)this.client.guilds.has(t.id)&&this.mutualGuilds.set(t.id,this.client.guilds.get(t.id));for(const t of e.connected_accounts)this.connections.set(t.id,new s(this.user,t))}}e.exports=r},function(e,t){class n{constructor(e){this.id=e.id,this.name=e.name,this.vip=e.vip,this.deprecated=e.deprecated,this.optimal=e.optimal,this.custom=e.custom,this.sampleHostname=e.sample_hostname}}e.exports=n},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){}]); \ No newline at end of file