{"meta":{"generator":"0.9.0","format":20,"date":1621671456131},"custom":{"general":{"name":"General","files":{"welcome":{"name":"Welcome","type":"md","content":"
\n
\n

\n \"discord.js\"\n

\n
\n

\n \"Discord\n \"NPM\n \"NPM\n \"Build\n \"Dependencies\"\n \"Patreon\"\n

\n

\n \"NPM\n

\n
\n\n# Welcome!\n\nWelcome to the discord.js v12 documentation.\n\n## About\n\ndiscord.js is a powerful [Node.js](https://nodejs.org) module that allows you to easily interact with the\n[Discord API](https://discord.com/developers/docs/intro).\n\n- Object-oriented\n- Predictable abstractions\n- Performant\n- 100% coverage of the Discord API\n\n## Installation\n\n**Node.js 12.0.0 or newer is required.** \nIgnore any warnings about unmet peer dependencies, as they're all optional.\n\nWithout voice support: `npm install discord.js` \nWith voice support ([@discordjs/opus](https://www.npmjs.com/package/@discordjs/opus)): `npm install discord.js @discordjs/opus` \nWith voice support ([opusscript](https://www.npmjs.com/package/opusscript)): `npm install discord.js opusscript`\n\n### Audio engines\n\nThe preferred audio engine is @discordjs/opus, as it performs significantly better than opusscript. When both are available, discord.js will automatically choose @discordjs/opus.\nUsing opusscript is only recommended for development environments where @discordjs/opus is tough to get working.\nFor production bots, using @discordjs/opus should be considered a necessity, especially if they're going to be running on multiple servers.\n\n### Optional packages\n\n- [zlib-sync](https://www.npmjs.com/package/zlib-sync) for WebSocket data compression and inflation (`npm install zlib-sync`)\n- [erlpack](https://github.com/discord/erlpack) for significantly faster WebSocket data (de)serialisation (`npm install discord/erlpack`)\n- One of the following packages can be installed for faster voice packet encryption and decryption:\n - [sodium](https://www.npmjs.com/package/sodium) (`npm install sodium`)\n - [libsodium.js](https://www.npmjs.com/package/libsodium-wrappers) (`npm install libsodium-wrappers`)\n- [bufferutil](https://www.npmjs.com/package/bufferutil) for a much faster WebSocket connection (`npm install bufferutil`)\n- [utf-8-validate](https://www.npmjs.com/package/utf-8-validate) in combination with `bufferutil` for much faster WebSocket processing (`npm install utf-8-validate`)\n\n## Example usage\n\n```js\nconst Discord = require('discord.js');\nconst client = new Discord.Client();\n\nclient.on('ready', () => {\n console.log(`Logged in as ${client.user.tag}!`);\n});\n\nclient.on('message', msg => {\n if (msg.content === 'ping') {\n msg.reply('pong');\n }\n});\n\nclient.login('token');\n```\n\n## Links\n\n- [Website](https://discord.js.org/) ([source](https://github.com/discordjs/website))\n- [Documentation](https://discord.js.org/#/docs/main/master/general/welcome)\n- [Guide](https://discordjs.guide/) ([source](https://github.com/discordjs/guide)) - this is still for stable \n See also the WIP [Update Guide](https://discordjs.guide/additional-info/changes-in-v12.html) also including updated and removed items in the library.\n- [Discord.js Discord server](https://discord.gg/bRCvFy9)\n- [Discord API Discord server](https://discord.gg/discord-api)\n- [GitHub](https://github.com/discordjs/discord.js)\n- [NPM](https://www.npmjs.com/package/discord.js)\n- [Related libraries](https://discordapi.com/unofficial/libs.html)\n\n### Extensions\n\n- [RPC](https://www.npmjs.com/package/discord-rpc) ([source](https://github.com/discordjs/RPC))\n\n## Contributing\n\nBefore creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the\n[documentation](https://discord.js.org/#/docs). \nSee [the contribution guide](https://github.com/discordjs/discord.js/blob/master/.github/CONTRIBUTING.md) if you'd like to submit a PR.\n\n## Help\n\nIf you don't understand something in the documentation, you are experiencing problems, or you just need a gentle\nnudge in the right direction, please don't hesitate to join our official [Discord.js Server](https://discord.gg/bRCvFy9).\n","path":"docs/general/welcome.md"},"updating":{"name":"Updating your code","type":"md","content":"# Version 12.0.0\n\nv12.0.0 contains many new and improved features, optimisations, and bug fixes.\nSee [the changelog](https://github.com/discordjs/discord.js/releases/tag/12.0.0) for a full list of changes.\nYou can also visit [the guide](https://discordjs.guide/additional-info/changes-in-v12.html) for help with updating your v11 code to v12.\n\n# Version 11.1.0\n\nv11.1.0 features improved voice and gateway stability, as well as support for new features such as audit logs and searching for messages.\nSee [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.1.0) for a full list of changes, including\ninformation about deprecations.\n\n# Version 11\n\nVersion 11 contains loads of new and improved features, optimisations, and bug fixes.\nSee [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.0.0) for a full list of changes.\n\n## Significant additions\n\n- Message Reactions and Embeds (rich text)\n- Support for uws and erlpack for better performance\n- OAuthApplication support\n- Web distributions\n\n## Breaking changes\n\n### Client.login() no longer supports logging in with email + password\n\nLogging in with an email and password has always been heavily discouraged since the advent of proper token support, but in v11 we have made the decision to completely remove the functionality, since Hammer & Chisel have [officially stated](https://github.com/hammerandchisel/discord-api-docs/issues/69#issuecomment-223886862) it simply shouldn't be done.\n\nUser accounts can still log in with tokens just like bot accounts. To obtain the token for a user account, you can log in to Discord with that account, and use Ctrl + Shift + I to open the developer tools. In the console tab, evaluating `localStorage.token` will give you the token for that account.\n\n### ClientUser.setEmail()/setPassword() now require the current password, as well as setUsername() on user accounts\n\nSince you can no longer log in with email and password, you must provide the current account password to the `setEmail()`, `setPassword()`, and `setUsername()` methods for user accounts (self-bots).\n\n### Removed TextBasedChannel.sendTTSMessage()\n\nThis method was deemed to be an entirely pointless shortcut that virtually nobody even used.\nThe same results can be achieved by passing options to `send()` or `sendMessage()`.\n\nExample:\n\n```js\nchannel.send('Hi there', { tts: true });\n```\n\n### Using Collection.find()/exists() with IDs will throw an error\n\nThis is simply to help prevent a common mistake that is made frequently.\nTo find something or check its existence using an ID, you should use `.get()` and `.has()` which are part of the [ES6 Map class](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map), which Collection is an extension of.\n\n# Version 10\n\nVersion 10's non-BC changes focus on cleaning up some inconsistencies that exist in previous versions.\nUpgrading from v9 should be quick and painless.\n\n## Client options\n\nAll client options have been converted to camelCase rather than snake_case, and `max_message_cache` was renamed to `messageCacheMaxSize`.\n\nv9 code example:\n\n```js\nconst client = new Discord.Client({\n disable_everyone: true,\n max_message_cache: 500,\n message_cache_lifetime: 120,\n message_sweep_interval: 60,\n});\n```\n\nv10 code example:\n\n```js\nconst client = new Discord.Client({\n disableEveryone: true,\n messageCacheMaxSize: 500,\n messageCacheLifetime: 120,\n messageSweepInterval: 60,\n});\n```\n\n## Presences\n\nPresences have been completely restructured.\nPrevious versions of discord.js assumed that users had the same presence amongst all guilds - with the introduction of sharding, however, this is no longer the case.\n\nv9 discord.js code may look something like this:\n\n```js\nUser.status; // the status of the user\nUser.game; // the game that the user is playing\nClientUser.setStatus(status, game, url); // set the new status for the user\n```\n\nv10 moves presences to GuildMember instances. For the sake of simplicity, though, User classes also expose presences.\nWhen accessing a presence on a User object, it simply finds the first GuildMember for the user, and uses its presence.\nAdditionally, the introduction of the Presence class keeps all of the presence data organised.\n\n**It is strongly recommended that you use a GuildMember's presence where available, rather than a User.\nA user may have an entirely different presence between two different guilds.**\n\nv10 code:\n\n```js\nMemberOrUser.presence.status; // the status of the member or user\nMemberOrUser.presence.game; // the game that the member or user is playing\nClientUser.setStatus(status); // online, idle, dnd, offline\nClientUser.setGame(game, streamingURL); // a game\nClientUser.setPresence(fullPresence); // status and game combined\n```\n\n## Voice\n\nVoice has been rewritten internally, but in a backwards-compatible manner.\nThere is only one breaking change here; the `disconnected` event was renamed to `disconnect`.\nSeveral more events have been made available to a VoiceConnection, so see the documentation.\n\n## Events\n\nMany events have been renamed or had their arguments change.\n\n### Client events\n\n| Version 9 | Version 10 |\n| ---------------------------------------------- | --------------------------------------- |\n| guildMemberAdd(guild, member) | guildMemberAdd(member) |\n| guildMemberAvailable(guild, member) | guildMemberAvailable(member) |\n| guildMemberRemove(guild, member) | guildMemberRemove(member) |\n| guildMembersChunk(guild, members) | guildMembersChunk(members) |\n| guildMemberUpdate(guild, oldMember, newMember) | guildMemberUpdate(oldMember, newMember) |\n| guildRoleCreate(guild, role) | roleCreate(role) |\n| guildRoleDelete(guild, role) | roleDelete(role) |\n| guildRoleUpdate(guild, oldRole, newRole) | roleUpdate(oldRole, newRole) |\n\nThe guild parameter that has been dropped from the guild-related events can still be derived using `member.guild` or `role.guild`.\n\n### VoiceConnection events\n\n| Version 9 | Version 10 |\n| ------------ | ---------- |\n| disconnected | disconnect |\n\n## Dates and timestamps\n\nAll dates/timestamps on the structures have been refactored to have a consistent naming scheme and availability.\nAll of them are named similarly to this: \n**Date:** `Message.createdAt` \n**Timestamp:** `Message.createdTimestamp` \nSee the docs for each structure to see which date/timestamps are available on them.\n\n# Version 9\n\nThe version 9 (v9) rewrite takes a much more object-oriented approach than previous versions,\nwhich allows your code to be much more readable and manageable.\nIt's been rebuilt from the ground up and should be much more stable, fixing caching issues that affected\nolder versions. It also has support for newer Discord Features, such as emojis.\n\nVersion 9, while containing a sizable number of breaking changes, does not require much change in your code's logic -\nmost of the concepts are still the same, but loads of functions have been moved around.\nThe vast majority of methods you're used to using have been moved out of the Client class,\ninto other more relevant classes where they belong.\nBecause of this, you will need to convert most of your calls over to the new methods.\n\nHere are a few examples of methods that have changed:\n\n- `Client.sendMessage(channel, message)` ==> `TextChannel.sendMessage(message)`\n - `Client.sendMessage(user, message)` ==> `User.sendMessage(message)`\n- `Client.updateMessage(message, \"New content\")` ==> `Message.edit(\"New Content\")`\n- `Client.getChannelLogs(channel, limit)` ==> `TextChannel.fetchMessages({options})`\n- `Server.detailsOfUser(User)` ==> `Server.members.get(User).properties` (retrieving a member gives a GuildMember object)\n- `Client.joinVoiceChannel(voicechannel)` => `VoiceChannel.join()`\n\nA couple more important details:\n\n- `Client.loginWithToken(\"token\")` ==> `client.login(\"token\")`\n- `Client.servers.length` ==> `client.guilds.size` (all instances of `server` are now `guild`)\n\n## No more callbacks!\n\nVersion 9 eschews callbacks in favour of Promises. This means all code relying on callbacks must be changed. \nFor example, the following code:\n\n```js\nclient.getChannelLogs(channel, 100, function(messages) {\n console.log(`${messages.length} messages found`);\n});\n```\n\n```js\nchannel.fetchMessages({ limit: 100 }).then(messages => {\n console.log(`${messages.size} messages found`);\n});\n```\n","path":"docs/general/updating.md"},"faq":{"name":"FAQ","type":"md","content":"# Frequently Asked Questions\n\nThese questions are some of the most frequently asked.\n\n## No matter what, I get `SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode`‽\n\nUpdate to Node.js 12.0.0 or newer.\n\n## How do I get voice working?\n\n- Install FFMPEG.\n- Install either the `@discordjs/opus` package or the `opusscript` package.\n @discordjs/opus is greatly preferred, due to it having significantly better performance.\n\n## How do I install FFMPEG?\n\n- **npm:** `npm install ffmpeg-static`\n- **Ubuntu 16.04:** `sudo apt install ffmpeg`\n- **Ubuntu 14.04:** `sudo apt-get install libav-tools`\n- **Windows:** `npm install ffmpeg-static` or see the [FFMPEG section of AoDude's guide](https://github.com/bdistin/OhGodMusicBot/blob/master/README.md#download-ffmpeg).\n\n## How do I set up @discordjs/opus?\n\n- **Ubuntu:** Simply run `npm install @discordjs/opus`, and it's done. Congrats!\n- **Windows:** Run `npm install --global --production windows-build-tools` in an admin command prompt or PowerShell.\n Then, running `npm install @discordjs/opus` in your bot's directory should successfully build it. Woo!\n\nOther questions can be found at the [official Discord.js guide](https://discordjs.guide/popular-topics/common-questions.html)\nIf you have issues not listed here or on the guide, feel free to ask in the [official Discord.js server](https://discord.gg/bRCvFy9).\nAlways make sure to read the [documentation](https://discord.js.org/#/docs/main/stable/general/welcome).\n","path":"docs/general/faq.md"}}},"topics":{"name":"Topics","files":{"voice":{"name":"Voice","type":"md","content":"# Introduction to Voice\n\nVoice in discord.js can be used for many things, such as music bots, recording or relaying audio.\n\nIn discord.js, you can use voice by connecting to a `VoiceChannel` to obtain a `VoiceConnection`, where you can start streaming and receiving audio.\n\nTo get started, make sure you have:\n\n- FFmpeg - `npm install ffmpeg-static`\n- an opus encoder, choose one from below:\n - `npm install @discordjs/opus` (better performance)\n - `npm install opusscript`\n- a good network connection\n\nThe preferred opus engine is @discordjs/opus, as it performs significantly better than opusscript. When both are available, discord.js will automatically choose @discordjs/opus.\nUsing opusscript is only recommended for development environments where @discordjs/opus is tough to get working.\nFor production bots, using @discordjs/opus should be considered a necessity, especially if they're going to be running on multiple servers.\n\n## Joining a voice channel\n\nThe example below reacts to a message and joins the sender's voice channel, catching any errors. This is important\nas it allows us to obtain a `VoiceConnection` that we can start to stream audio with.\n\n```js\nconst Discord = require('discord.js');\nconst client = new Discord.Client();\n\nclient.login('token here');\n\nclient.on('message', async message => {\n // Voice only works in guilds, if the message does not come from a guild,\n // we ignore it\n if (!message.guild) return;\n\n if (message.content === '/join') {\n // Only try to join the sender's voice channel if they are in one themselves\n if (message.member.voice.channel) {\n const connection = await message.member.voice.channel.join();\n } else {\n message.reply('You need to join a voice channel first!');\n }\n }\n});\n```\n\n## Streaming to a Voice Channel\n\nIn the previous example, we looked at how to join a voice channel in order to obtain a `VoiceConnection`. Now that we\nhave obtained a voice connection, we can start streaming audio to it.\n\n### Introduction to playing on voice connections\n\nThe most basic example of playing audio over a connection would be playing a local file:\n\n```js\nconst dispatcher = connection.play('/home/discord/audio.mp3');\n```\n\nThe `dispatcher` in this case is a `StreamDispatcher` - here you can control the volume and playback of the stream:\n\n```js\ndispatcher.pause();\ndispatcher.resume();\n\ndispatcher.setVolume(0.5); // half the volume\n\ndispatcher.on('finish', () => {\n console.log('Finished playing!');\n});\n\ndispatcher.destroy(); // end the stream\n```\n\nWe can also pass in options when we first play the stream:\n\n```js\nconst dispatcher = connection.play('/home/discord/audio.mp3', {\n volume: 0.5,\n});\n```\n\n### What can I play?\n\nDiscord.js allows you to play a lot of things:\n\n```js\n// ReadableStreams, in this example YouTube audio\nconst ytdl = require('ytdl-core');\nconnection.play(ytdl('https://www.youtube.com/watch?v=ZlAU_w7-Xp8', { filter: 'audioonly' }));\n\n// Files on the internet\nconnection.play('http://www.sample-videos.com/audio/mp3/wave.mp3');\n\n// Local files\nconnection.play('/home/discord/audio.mp3');\n```\n\nNew to v12 is the ability to play OggOpus and WebmOpus streams with much better performance by skipping out Ffmpeg. Note this comes at the cost of no longer having volume control over the stream:\n\n```js\nconnection.play(fs.createReadStream('./media.webm'), {\n type: 'webm/opus',\n});\n\nconnection.play(fs.createReadStream('./media.ogg'), {\n type: 'ogg/opus',\n});\n```\n\nMake sure to consult the documentation for a full list of what you can play - there's too much to cover here!\n\n## Voice Broadcasts\n\nA voice broadcast is very useful for \"radio\" bots, that play the same audio across multiple channels. It means audio is only transcoded once, and is much better on performance.\n\n```js\nconst broadcast = client.voice.createBroadcast();\n\nbroadcast.on('subscribe', dispatcher => {\n console.log('New broadcast subscriber!');\n});\n\nbroadcast.on('unsubscribe', dispatcher => {\n console.log('Channel unsubscribed from broadcast :(');\n});\n```\n\n`broadcast` is an instance of `VoiceBroadcast`, which has the same `play` method you are used to with regular VoiceConnections:\n\n```js\nconst dispatcher = broadcast.play('./audio.mp3');\n\nconnection.play(broadcast);\n```\n\nIt's important to note that the `dispatcher` stored above is a `BroadcastDispatcher` - it controls all the dispatcher subscribed to the broadcast, e.g. setting the volume of this dispatcher affects the volume of all subscribers.\n\n## Voice Receive\n\ncoming soon™\n","path":"docs/topics/voice.md"},"web":{"name":"Web builds","type":"md","content":"# Web builds\n\nIn addition to your usual Node applications, discord.js has special distributions available that are capable of running in web browsers.\nThis is useful for client-side web apps that need to interact with the Discord API.\n[Webpack 3](https://webpack.js.org/) is used to build these.\n\n## Restrictions\n\n- Any voice-related functionality is unavailable, as there is currently no audio encoding/decoding capabilities without external native libraries,\n which web browsers do not support.\n- The ShardingManager cannot be used, since it relies on being able to spawn child processes for shards.\n- None of the native optional packages are usable.\n\n### Require Library\n\nIf you are making your own webpack project, you can require `discord.js/browser` wherever you need to use discord.js, like so:\n\n```js\nconst Discord = require('discord.js/browser');\n// do something with Discord like you normally would\n```\n\n### Webpack File\n\nYou can obtain your desired version of discord.js' web build from the [webpack branch](https://github.com/discordjs/discord.js/tree/webpack) of the GitHub repository.\nThere is a file for each branch and version of the library, and the ones ending in `.min.js` are minified to substantially reduce the size of the source code.\n\nInclude the file on the page just as you would any other JS library, like so:\n\n```html\n\n```\n\nRather than importing discord.js with `require('discord.js')`, the entire `Discord` object is available as a global (on the `window`) object.\nThe usage of the API isn't any different from using it in Node.js.\n\n#### Example\n\n```html\n\n\n```\n","path":"docs/topics/web.md"},"partials":{"name":"Partials","type":"md","content":"# Partials\n\nPartials allow you to receive events that contain uncached instances, providing structures that contain very minimal\ndata. For example, if you were to receive a `messageDelete` event with an uncached message, normally Discord.js would\ndiscard the event. With partials, you're able to receive the event, with a Message object that contains just an ID.\n\n## Opting in\n\nPartials are opt-in, and you can enable them in the Client options by specifying [PartialTypes](/#/docs/main/master/typedef/PartialType):\n\n```js\n// Accept partial messages, DM channels, and reactions when emitting events\nnew Client({ partials: ['MESSAGE', 'CHANNEL', 'REACTION'] });\n```\n\n## Usage & warnings\n\nThe only guaranteed data a partial structure can store is its ID. All other properties/methods should be\nconsidered invalid/defunct while accessing a partial structure.\n\nAfter opting-in with the above, you begin to allow partial messages and channels in your caches, so it's important\nto check whether they're safe to access whenever you encounter them, whether it be in events or through normal cache\nusage.\n\nAll instance of structures that you opted-in for will have a `partial` property. As you'd expect, this value is `true`\nwhen the instance is partial. Partial structures are only guaranteed to contain an ID, any other properties and methods\nno longer carry their normal type guarantees.\n\nThis means you have to take time to consider possible parts of your program that might need checks put in place to\nprevent accessing partial data:\n\n```js\nclient.on('messageDelete', message => {\n console.log(`${message.id} was deleted!`);\n // Partial messages do not contain any content so skip them\n if (!message.partial) {\n console.log(`It had content: \"${message.content}\"`);\n }\n});\n\n// You can also try to upgrade partials to full instances:\nclient.on('messageReactionAdd', async (reaction, user) => {\n // If a message gains a reaction and it is uncached, fetch and cache the message\n // You should account for any errors while fetching, it could return API errors if the resource is missing\n if (reaction.message.partial) await reaction.message.fetch();\n // Now the message has been cached and is fully available:\n console.log(`${reaction.message.author}'s message \"${reaction.message.content}\" gained a reaction!`);\n // Fetches and caches the reaction itself, updating resources that were possibly defunct.\n if (reaction.partial) await reaction.fetch();\n // Now the reaction is fully available and the properties will be reflected accurately:\n console.log(`${reaction.count} user(s) have given the same reaction to this message!`);\n});\n```\n\nIf a message is deleted and both the message and channel are uncached, you must enable both 'MESSAGE' and\n'CHANNEL' in the client options to receive the messageDelete event.\n\n## Why?\n\nThis allows developers to listen to events that contain uncached data, which is useful if you're running a moderation\nbot or any bot that relies on still receiving updates to resources you don't have cached -- message reactions are a\ngood example.\n\nCurrently, the only type of channel that can be uncached is a DM channel, there is no reason why guild channels should\nnot be cached.\n","path":"docs/topics/partials.md"}}},"examples":{"name":"Examples","files":{"ping":{"name":"Ping","type":"js","content":"'use strict';\n\n/**\n * A ping pong bot, whenever you send \"ping\", it replies \"pong\".\n */\n\n// Import the discord.js module\nconst Discord = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Discord.Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\n// Create an event listener for messages\nclient.on('message', message => {\n // If the message is \"ping\"\n if (message.content === 'ping') {\n // Send \"pong\" to the same channel\n message.channel.send('pong');\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n","path":"docs/examples/ping.js"},"avatars":{"name":"Avatars","type":"js","content":"'use strict';\n\n/**\n * Send a user a link to their avatar\n */\n\n// Import the discord.js module\nconst Discord = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Discord.Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\n// Create an event listener for messages\nclient.on('message', message => {\n // If the message is \"what is my avatar\"\n if (message.content === 'what is my avatar') {\n // Send the user's avatar URL\n message.reply(message.author.displayAvatarURL());\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n","path":"docs/examples/avatars.js"},"attachments":{"name":"Attachments","type":"md","content":"# Sending Attachments\n\nIn here you'll see a few examples showing how you can send an attachment using discord.js.\n\n## Sending an attachment using a URL\n\nThere are a few ways you can do this, but we'll show you the easiest.\n\nThe following examples use [MessageAttachment](/#/docs/main/master/class/MessageAttachment).\n\n```js\n// Extract the required classes from the discord.js module\nconst { Client, MessageAttachment } = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\nclient.on('message', message => {\n // If the message is '!rip'\n if (message.content === '!rip') {\n // Create the attachment using MessageAttachment\n const attachment = new MessageAttachment('https://i.imgur.com/w3duR07.png');\n // Send the attachment in the message channel\n message.channel.send(attachment);\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n```\n\nAnd here is the result:\n\n![Image showing the result](/static/attachment-example1.png)\n\nBut what if you want to send an attachment with a message content? Fear not, for it is easy to do that too! We'll recommend reading [the TextChannel's \"send\" function documentation](/#/docs/main/master/class/TextChannel?scrollTo=send) to see what other options are available.\n\n```js\n// Extract the required classes from the discord.js module\nconst { Client, MessageAttachment } = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\nclient.on('message', message => {\n // If the message is '!rip'\n if (message.content === '!rip') {\n // Create the attachment using MessageAttachment\n const attachment = new MessageAttachment('https://i.imgur.com/w3duR07.png');\n // Send the attachment in the message channel with a content\n message.channel.send(`${message.author},`, attachment);\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n```\n\nAnd here's the result of this one:\n\n![Image showing the result](/static/attachment-example2.png)\n\n## Sending a local file or buffer\n\nSending a local file isn't hard either! We'll be using [MessageAttachment](/#/docs/main/master/class/MessageAttachment) for these examples too.\n\n```js\n// Extract the required classes from the discord.js module\nconst { Client, MessageAttachment } = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\nclient.on('message', message => {\n // If the message is '!rip'\n if (message.content === '!rip') {\n // Create the attachment using MessageAttachment\n const attachment = new MessageAttachment('./rip.png');\n // Send the attachment in the message channel with a content\n message.channel.send(`${message.author},`, attachment);\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n```\n\nThe results are the same as the URL examples:\n\n![Image showing result](/static/attachment-example2.png)\n\nBut what if you have a buffer from an image? Or a text document? Well, it's the same as sending a local file or a URL!\n\nIn the following example, we'll be getting the buffer from a `memes.txt` file, and send it in the message channel.\nYou can use any buffer you want, and send it. Just make sure to overwrite the filename if it isn't an image!\n\n```js\n// Extract the required classes from the discord.js module\nconst { Client, MessageAttachment } = require('discord.js');\n\n// Import the native fs module\nconst fs = require('fs');\n\n// Create an instance of a Discord client\nconst client = new Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\nclient.on('message', message => {\n // If the message is '!memes'\n if (message.content === '!memes') {\n // Get the buffer from the 'memes.txt', assuming that the file exists\n const buffer = fs.readFileSync('./memes.txt');\n\n /**\n * Create the attachment using MessageAttachment,\n * overwritting the default file name to 'memes.txt'\n * Read more about it over at\n * http://discord.js.org/#/docs/main/master/class/MessageAttachment\n */\n const attachment = new MessageAttachment(buffer, 'memes.txt');\n // Send the attachment in the message channel with a content\n message.channel.send(`${message.author}, here are your memes!`, attachment);\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n```\n\nAnd of course, the results are:\n\n![Attachment File example 3](/static/attachment-example3.png)\n","path":"docs/examples/attachments.md"},"greeting":{"name":"Server greeting","type":"js","content":"'use strict';\n\n/**\n * A bot that welcomes new guild members when they join\n */\n\n// Import the discord.js module\nconst Discord = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Discord.Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\n// Create an event listener for new guild members\nclient.on('guildMemberAdd', member => {\n // Send the message to a designated channel on a server:\n const channel = member.guild.channels.cache.find(ch => ch.name === 'member-log');\n // Do nothing if the channel wasn't found on this server\n if (!channel) return;\n // Send the message, mentioning the member\n channel.send(`Welcome to the server, ${member}`);\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n","path":"docs/examples/greeting.js"},"embed":{"name":"Message Embed","type":"js","content":"'use strict';\n\n/**\n * An example of how you can send embeds\n */\n\n// Extract the required classes from the discord.js module\nconst { Client, MessageEmbed } = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\nclient.on('message', message => {\n // If the message is \"how to embed\"\n if (message.content === 'how to embed') {\n // We can create embeds using the MessageEmbed constructor\n // Read more about all that you can do with the constructor\n // over at https://discord.js.org/#/docs/main/master/class/MessageEmbed\n const embed = new MessageEmbed()\n // Set the title of the field\n .setTitle('A slick little embed')\n // Set the color of the embed\n .setColor(0xff0000)\n // Set the main content of the embed\n .setDescription('Hello, this is a slick embed!');\n // Send the embed to the same channel as the message\n message.channel.send(embed);\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n","path":"docs/examples/embed.js"},"moderation":{"name":"Moderation","type":"md","content":"# Moderation\n\nIn here, you'll see some basic examples for kicking and banning a member.\n\n## Kicking a member\n\nLet's say you have a member that you'd like to kick. Here is an example of how you _can_ do it.\n\n```js\n// Import the discord.js module\nconst Discord = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Discord.Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\nclient.on('message', message => {\n // Ignore messages that aren't from a guild\n if (!message.guild) return;\n\n // If the message content starts with \"!kick\"\n if (message.content.startsWith('!kick')) {\n // Assuming we mention someone in the message, this will return the user\n // Read more about mentions over at https://discord.js.org/#/docs/main/master/class/MessageMentions\n const user = message.mentions.users.first();\n // If we have a user mentioned\n if (user) {\n // Now we get the member from the user\n const member = message.guild.member(user);\n // If the member is in the guild\n if (member) {\n /**\n * Kick the member\n * Make sure you run this on a member, not a user!\n * There are big differences between a user and a member\n */\n member\n .kick('Optional reason that will display in the audit logs')\n .then(() => {\n // We let the message author know we were able to kick the person\n message.reply(`Successfully kicked ${user.tag}`);\n })\n .catch(err => {\n // An error happened\n // This is generally due to the bot not being able to kick the member,\n // either due to missing permissions or role hierarchy\n message.reply('I was unable to kick the member');\n // Log the error\n console.error(err);\n });\n } else {\n // The mentioned user isn't in this guild\n message.reply(\"That user isn't in this guild!\");\n }\n // Otherwise, if no user was mentioned\n } else {\n message.reply(\"You didn't mention the user to kick!\");\n }\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n```\n\nAnd the result is:\n\n![Image showing the result](/static/kick-example.png)\n\n## Banning a member\n\nBanning works the same way as kicking, but it has slightly more options that can be changed.\n\n```js\n// Import the discord.js module\nconst Discord = require('discord.js');\n\n// Create an instance of a Discord client\nconst client = new Discord.Client();\n\n/**\n * The ready event is vital, it means that only _after_ this will your bot start reacting to information\n * received from Discord\n */\nclient.on('ready', () => {\n console.log('I am ready!');\n});\n\nclient.on('message', message => {\n // Ignore messages that aren't from a guild\n if (!message.guild) return;\n\n // if the message content starts with \"!ban\"\n if (message.content.startsWith('!ban')) {\n // Assuming we mention someone in the message, this will return the user\n // Read more about mentions over at https://discord.js.org/#/docs/main/master/class/MessageMentions\n const user = message.mentions.users.first();\n // If we have a user mentioned\n if (user) {\n // Now we get the member from the user\n const member = message.guild.member(user);\n // If the member is in the guild\n if (member) {\n /**\n * Ban the member\n * Make sure you run this on a member, not a user!\n * There are big differences between a user and a member\n * Read more about what ban options there are over at\n * https://discord.js.org/#/docs/main/master/class/GuildMember?scrollTo=ban\n */\n member\n .ban({\n reason: 'They were bad!',\n })\n .then(() => {\n // We let the message author know we were able to ban the person\n message.reply(`Successfully banned ${user.tag}`);\n })\n .catch(err => {\n // An error happened\n // This is generally due to the bot not being able to ban the member,\n // either due to missing permissions or role hierarchy\n message.reply('I was unable to ban the member');\n // Log the error\n console.error(err);\n });\n } else {\n // The mentioned user isn't in this guild\n message.reply(\"That user isn't in this guild!\");\n }\n } else {\n // Otherwise, if no user was mentioned\n message.reply(\"You didn't mention the user to ban!\");\n }\n }\n});\n\n// Log our bot in using the token from https://discord.com/developers/applications\nclient.login('your token here');\n```\n\nAnd the result is:\n\n![Image showing the result](/static/ban-example.png)\n","path":"docs/examples/moderation.md"},"webhook":{"name":"Webhook","type":"js","content":"'use strict';\n\n/**\n * Send a message using a webhook\n */\n\n// Import the discord.js module\nconst Discord = require('discord.js');\n/*\n * Create a new webhook\n * The Webhooks ID and token can be found in the URL, when you request that URL, or in the response body.\n * https://discord.com/api/webhooks/12345678910/T0kEn0fw3Bh00K\n * ^^^^^^^^^^ ^^^^^^^^^^^^ \n * Webhook ID Webhook Token\n */\nconst hook = new Discord.WebhookClient('webhook id', 'webhook token');\n\n// Send a message using the webhook\nhook.send('I am now alive!');\n","path":"docs/examples/webhook.js"}}}},"classes":[{"name":"BaseClient","description":"The base class for all clients.","extends":[[["EventEmitter"]]],"props":[{"name":"_timeouts","description":"Timeouts set by {@link BaseClient#setTimeout} that are still active","access":"private","type":[[["Set","<"],["Timeout",">"]]],"meta":{"line":22,"file":"BaseClient.js","path":"src/client"}},{"name":"_intervals","description":"Intervals set by {@link BaseClient#setInterval} that are still active","access":"private","type":[[["Set","<"],["Timeout",">"]]],"meta":{"line":29,"file":"BaseClient.js","path":"src/client"}},{"name":"_immediates","description":"Intervals set by {@link BaseClient#setImmediate} that are still active","access":"private","type":[[["Set","<"],["Immediate",">"]]],"meta":{"line":36,"file":"BaseClient.js","path":"src/client"}},{"name":"options","description":"The options the client was instantiated with","type":[[["ClientOptions"]]],"meta":{"line":42,"file":"BaseClient.js","path":"src/client"}},{"name":"rest","description":"The REST manager of the client","access":"private","type":[[["RESTManager"]]],"meta":{"line":49,"file":"BaseClient.js","path":"src/client"}},{"name":"api","description":"API shortcut","access":"private","readonly":true,"type":[[["Object"]]],"meta":{"line":58,"file":"BaseClient.js","path":"src/client"}}],"methods":[{"name":"destroy","description":"Destroys all assets used by the base client.","meta":{"line":65,"file":"BaseClient.js","path":"src/client"}},{"name":"setTimeout","description":"Sets a timeout that will be automatically cancelled if the client is destroyed.","params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"delay","description":"Time to wait before executing (in milliseconds)","type":[[["number"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Timeout"]]],"meta":{"line":81,"file":"BaseClient.js","path":"src/client"}},{"name":"clearTimeout","description":"Clears a timeout.","params":[{"name":"timeout","description":"Timeout to cancel","type":[[["Timeout"]]]}],"meta":{"line":94,"file":"BaseClient.js","path":"src/client"}},{"name":"setInterval","description":"Sets an interval that will be automatically cancelled if the client is destroyed.","params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"delay","description":"Time to wait between executions (in milliseconds)","type":[[["number"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Timeout"]]],"meta":{"line":106,"file":"BaseClient.js","path":"src/client"}},{"name":"clearInterval","description":"Clears an interval.","params":[{"name":"interval","description":"Interval to cancel","type":[[["Timeout"]]]}],"meta":{"line":116,"file":"BaseClient.js","path":"src/client"}},{"name":"setImmediate","description":"Sets an immediate that will be automatically cancelled if the client is destroyed.","params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Immediate"]]],"meta":{"line":127,"file":"BaseClient.js","path":"src/client"}},{"name":"clearImmediate","description":"Clears an immediate.","params":[{"name":"immediate","description":"Immediate to cancel","type":[[["Immediate"]]]}],"meta":{"line":137,"file":"BaseClient.js","path":"src/client"}},{"name":"incrementMaxListeners","description":"Increments max listeners by one, if they are not zero.","access":"private","meta":{"line":146,"file":"BaseClient.js","path":"src/client"}},{"name":"decrementMaxListeners","description":"Decrements max listeners by one, if they are not zero.","access":"private","meta":{"line":157,"file":"BaseClient.js","path":"src/client"}}],"meta":{"line":13,"file":"BaseClient.js","path":"src/client"}},{"name":"Client","description":"The main hub for interacting with the Discord API, and the starting point for any bot.","extends":[[["BaseClient"]]],"construct":{"name":"Client","params":[{"name":"options","description":"Options for the client","optional":true,"type":[[["ClientOptions"]]]}]},"props":[{"name":"ws","description":"The WebSocket manager of the client","type":[[["WebSocketManager"]]],"meta":{"line":82,"file":"Client.js","path":"src/client"}},{"name":"actions","description":"The action manager of the client","access":"private","type":[[["ActionsManager"]]],"meta":{"line":89,"file":"Client.js","path":"src/client"}},{"name":"voice","description":"The voice manager of the client (`null` in browsers)","nullable":true,"type":[[["ClientVoiceManager"]]],"meta":{"line":95,"file":"Client.js","path":"src/client"}},{"name":"shard","description":"Shard helpers for the client (only if the process was spawned from a {@link ShardingManager})","nullable":true,"type":[[["ShardClientUtil"]]],"meta":{"line":101,"file":"Client.js","path":"src/client"}},{"name":"users","description":"All of the {@link User} objects that have been cached at any point, mapped by their IDs","type":[[["UserManager"]]],"meta":{"line":110,"file":"Client.js","path":"src/client"}},{"name":"guilds","description":"All of the guilds the client is currently handling, mapped by their IDs -\nas long as sharding isn't being used, this will be *every* guild the bot is a member of","type":[[["GuildManager"]]],"meta":{"line":117,"file":"Client.js","path":"src/client"}},{"name":"channels","description":"All of the {@link Channel}s that the client is currently handling, mapped by their IDs -\nas long as sharding isn't being used, this will be *every* channel in *every* guild the bot\nis a member of. Note that DM channels will not be initially cached, and thus not be present\nin the Manager without their explicit fetching or use.","type":[[["ChannelManager"]]],"meta":{"line":126,"file":"Client.js","path":"src/client"}},{"name":"presence","description":"The presence of the Client","access":"private","type":[[["ClientPresence"]]],"meta":{"line":134,"file":"Client.js","path":"src/client"}},{"name":"token","description":"Authorization token for the logged in bot.\nIf present, this defaults to `process.env.DISCORD_TOKEN` when instantiating the client\nThis should be kept private at all times.","nullable":true,"type":[[["string"]]],"meta":{"line":144,"file":"Client.js","path":"src/client"}},{"name":"user","description":"User that the client is logged in as","nullable":true,"type":[[["ClientUser"]]],"meta":{"line":153,"file":"Client.js","path":"src/client"}},{"name":"readyAt","description":"Time at which the client was last regarded as being in the `READY` state\n(each time the client disconnects and successfully reconnects, this will be overwritten)","nullable":true,"type":[[["Date"]]],"meta":{"line":160,"file":"Client.js","path":"src/client"}},{"name":"emojis","description":"All custom emojis that the client has access to, mapped by their IDs","readonly":true,"type":[[["GuildEmojiManager"]]],"meta":{"line":172,"file":"Client.js","path":"src/client"}},{"name":"readyTimestamp","description":"Timestamp of the time the client was last `READY` at","readonly":true,"nullable":true,"type":[[["number"]]],"meta":{"line":185,"file":"Client.js","path":"src/client"}},{"name":"uptime","description":"How long it has been since the client last entered the `READY` state in milliseconds","readonly":true,"nullable":true,"type":[[["number"]]],"meta":{"line":194,"file":"Client.js","path":"src/client"}},{"name":"_timeouts","description":"Timeouts set by {@link BaseClient#setTimeout} that are still active","access":"private","type":[[["Set","<"],["Timeout",">"]]],"meta":{"line":22,"file":"BaseClient.js","path":"src/client"}},{"name":"_intervals","description":"Intervals set by {@link BaseClient#setInterval} that are still active","access":"private","type":[[["Set","<"],["Timeout",">"]]],"meta":{"line":29,"file":"BaseClient.js","path":"src/client"}},{"name":"_immediates","description":"Intervals set by {@link BaseClient#setImmediate} that are still active","access":"private","type":[[["Set","<"],["Immediate",">"]]],"meta":{"line":36,"file":"BaseClient.js","path":"src/client"}},{"name":"options","description":"The options the client was instantiated with","type":[[["ClientOptions"]]],"meta":{"line":42,"file":"BaseClient.js","path":"src/client"}},{"name":"rest","description":"The REST manager of the client","access":"private","type":[[["RESTManager"]]],"meta":{"line":49,"file":"BaseClient.js","path":"src/client"}},{"name":"api","description":"API shortcut","access":"private","readonly":true,"type":[[["Object"]]],"meta":{"line":58,"file":"BaseClient.js","path":"src/client"}}],"methods":[{"name":"login","description":"Logs the client in, establishing a websocket connection to Discord.","examples":["client.login('my token');"],"params":[{"name":"token","description":"Token of the account to log in with","optional":true,"default":"this.token","type":[[["string"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["string",">"]]],"description":"Token of the account used"},"meta":{"line":205,"file":"Client.js","path":"src/client"}},{"name":"destroy","description":"Logs out, terminates the connection to Discord, and destroys the client.","returns":[[["void"]]],"meta":{"line":235,"file":"Client.js","path":"src/client"}},{"name":"fetchInvite","description":"Obtains an invite from Discord.","examples":["client.fetchInvite('https://discord.gg/bRCvFy9')\n .then(invite => console.log(`Obtained invite with code: ${invite.code}`))\n .catch(console.error);"],"params":[{"name":"invite","description":"Invite code or URL","type":[[["InviteResolvable"]]]}],"returns":[[["Promise","<"],["Invite",">"]]],"meta":{"line":250,"file":"Client.js","path":"src/client"}},{"name":"fetchGuildTemplate","description":"Obtains a template from Discord.","examples":["client.fetchGuildTemplate('https://discord.new/FKvmczH2HyUf')\n .then(template => console.log(`Obtained template with code: ${template.code}`))\n .catch(console.error);"],"params":[{"name":"template","description":"Template code or URL","type":[[["GuildTemplateResolvable"]]]}],"returns":[[["Promise","<"],["GuildTemplate",">"]]],"meta":{"line":267,"file":"Client.js","path":"src/client"}},{"name":"fetchWebhook","description":"Obtains a webhook from Discord.","examples":["client.fetchWebhook('id', 'token')\n .then(webhook => console.log(`Obtained webhook with name: ${webhook.name}`))\n .catch(console.error);"],"params":[{"name":"id","description":"ID of the webhook","type":[[["Snowflake"]]]},{"name":"token","description":"Token for the webhook","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Webhook",">"]]],"meta":{"line":285,"file":"Client.js","path":"src/client"}},{"name":"fetchVoiceRegions","description":"Obtains the available voice regions from Discord.","examples":["client.fetchVoiceRegions()\n .then(regions => console.log(`Available regions are: ${regions.map(region => region.name).join(', ')}`))\n .catch(console.error);"],"returns":[[["Promise","<"],["Collection","<"],["string",", "],["VoiceRegion",">>"]]],"meta":{"line":300,"file":"Client.js","path":"src/client"}},{"name":"sweepMessages","description":"Sweeps all text-based channels' messages and removes the ones older than the max message lifetime.\nIf the message has been edited, the time of the edit is used rather than the time of the original message.","examples":["// Remove all messages older than 1800 seconds from the messages cache\nconst amount = client.sweepMessages(1800);\nconsole.log(`Successfully removed ${amount} messages from the cache.`);"],"params":[{"name":"lifetime","description":"Messages that are older than this (in seconds)\nwill be removed from the caches. The default is based on {@link ClientOptions#messageCacheLifetime}","optional":true,"default":"this.options.messageCacheLifetime","type":[[["number"]]]}],"returns":{"types":[[["number"]]],"description":"Amount of messages that were removed from the caches,\nor -1 if the message cache lifetime is unlimited"},"meta":{"line":320,"file":"Client.js","path":"src/client"}},{"name":"fetchApplication","description":"Obtains the OAuth Application of this bot from Discord.","returns":[[["Promise","<"],["ClientApplication",">"]]],"meta":{"line":354,"file":"Client.js","path":"src/client"}},{"name":"fetchGuildPreview","description":"Obtains a guild preview from Discord, available for all guilds the bot is in and all Discoverable guilds.","params":[{"name":"guild","description":"The guild to fetch the preview for","type":[[["GuildResolvable"]]]}],"returns":[[["Promise","<"],["GuildPreview",">"]]],"meta":{"line":366,"file":"Client.js","path":"src/client"}},{"name":"generateInvite","description":"Generates a link that can be used to invite the bot to a guild.","examples":["client.generateInvite({\n permissions: ['SEND_MESSAGES', 'MANAGE_GUILD', 'MENTION_EVERYONE'],\n})\n .then(link => console.log(`Generated bot invite link: ${link}`))\n .catch(console.error);"],"params":[{"name":"options","description":"Permissions to request","optional":true,"type":[[["InviteGenerationOptions"]],[["PermissionResolvable"]]]}],"async":true,"returns":[[["Promise","<"],["string",">"]]],"meta":{"line":386,"file":"Client.js","path":"src/client"}},{"name":"_eval","description":"Calls {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval} on a script\nwith the client as `this`.","access":"private","params":[{"name":"script","description":"Script to eval","type":[[["string"]]]}],"returns":[["*"]],"meta":{"line":424,"file":"Client.js","path":"src/client"}},{"name":"_validateOptions","description":"Validates the client options.","access":"private","params":[{"name":"options","description":"Options to validate","optional":true,"default":"this.options","type":[[["ClientOptions"]]]}],"meta":{"line":433,"file":"Client.js","path":"src/client"}},{"name":"setTimeout","description":"Sets a timeout that will be automatically cancelled if the client is destroyed.","inherits":"BaseClient#setTimeout","inherited":true,"params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"delay","description":"Time to wait before executing (in milliseconds)","type":[[["number"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Timeout"]]],"meta":{"line":81,"file":"BaseClient.js","path":"src/client"}},{"name":"clearTimeout","description":"Clears a timeout.","inherits":"BaseClient#clearTimeout","inherited":true,"params":[{"name":"timeout","description":"Timeout to cancel","type":[[["Timeout"]]]}],"meta":{"line":94,"file":"BaseClient.js","path":"src/client"}},{"name":"setInterval","description":"Sets an interval that will be automatically cancelled if the client is destroyed.","inherits":"BaseClient#setInterval","inherited":true,"params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"delay","description":"Time to wait between executions (in milliseconds)","type":[[["number"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Timeout"]]],"meta":{"line":106,"file":"BaseClient.js","path":"src/client"}},{"name":"clearInterval","description":"Clears an interval.","inherits":"BaseClient#clearInterval","inherited":true,"params":[{"name":"interval","description":"Interval to cancel","type":[[["Timeout"]]]}],"meta":{"line":116,"file":"BaseClient.js","path":"src/client"}},{"name":"setImmediate","description":"Sets an immediate that will be automatically cancelled if the client is destroyed.","inherits":"BaseClient#setImmediate","inherited":true,"params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Immediate"]]],"meta":{"line":127,"file":"BaseClient.js","path":"src/client"}},{"name":"clearImmediate","description":"Clears an immediate.","inherits":"BaseClient#clearImmediate","inherited":true,"params":[{"name":"immediate","description":"Immediate to cancel","type":[[["Immediate"]]]}],"meta":{"line":137,"file":"BaseClient.js","path":"src/client"}},{"name":"incrementMaxListeners","description":"Increments max listeners by one, if they are not zero.","access":"private","inherits":"BaseClient#incrementMaxListeners","inherited":true,"meta":{"line":146,"file":"BaseClient.js","path":"src/client"}},{"name":"decrementMaxListeners","description":"Decrements max listeners by one, if they are not zero.","access":"private","inherits":"BaseClient#decrementMaxListeners","inherited":true,"meta":{"line":157,"file":"BaseClient.js","path":"src/client"}}],"events":[{"name":"channelCreate","description":"Emitted whenever a channel is created.","params":[{"name":"channel","description":"The channel that was created","type":[[["DMChannel"]],[["GuildChannel"]]]}],"meta":{"line":12,"file":"ChannelCreate.js","path":"src/client/actions"}},{"name":"channelDelete","description":"Emitted whenever a channel is deleted.","params":[{"name":"channel","description":"The channel that was deleted","type":[[["DMChannel"]],[["GuildChannel"]]]}],"meta":{"line":25,"file":"ChannelDelete.js","path":"src/client/actions"}},{"name":"guildBanRemove","description":"Emitted whenever a member is unbanned from a guild.","params":[{"name":"guild","description":"The guild that the unban occurred in","type":[[["Guild"]]]},{"name":"user","description":"The user that was unbanned","type":[[["User"]]]}],"meta":{"line":11,"file":"GuildBanRemove.js","path":"src/client/actions"}},{"name":"guildUnavailable","description":"Emitted whenever a guild becomes unavailable, likely due to a server outage.","params":[{"name":"guild","description":"The guild that has become unavailable","type":[[["Guild"]]]}],"meta":{"line":25,"file":"GuildDelete.js","path":"src/client/actions"}},{"name":"guildDelete","description":"Emitted whenever a guild kicks the client or the guild is deleted/left.","params":[{"name":"guild","description":"The guild that was deleted","type":[[["Guild"]]]}],"meta":{"line":46,"file":"GuildDelete.js","path":"src/client/actions"}},{"name":"emojiCreate","description":"Emitted whenever a custom emoji is created in a guild.","params":[{"name":"emoji","description":"The emoji that was created","type":[[["GuildEmoji"]]]}],"meta":{"line":10,"file":"GuildEmojiCreate.js","path":"src/client/actions"}},{"name":"emojiDelete","description":"Emitted whenever a custom emoji is deleted in a guild.","params":[{"name":"emoji","description":"The emoji that was deleted","type":[[["GuildEmoji"]]]}],"meta":{"line":10,"file":"GuildEmojiDelete.js","path":"src/client/actions"}},{"name":"emojiUpdate","description":"Emitted whenever a custom emoji is updated in a guild.","params":[{"name":"oldEmoji","description":"The old emoji","type":[[["GuildEmoji"]]]},{"name":"newEmoji","description":"The new emoji","type":[[["GuildEmoji"]]]}],"meta":{"line":9,"file":"GuildEmojiUpdate.js","path":"src/client/actions"}},{"name":"guildIntegrationsUpdate","description":"Emitted whenever a guild integration is updated","params":[{"name":"guild","description":"The guild whose integrations were updated","type":[[["Guild"]]]}],"meta":{"line":10,"file":"GuildIntegrationsUpdate.js","path":"src/client/actions"}},{"name":"guildMemberRemove","description":"Emitted whenever a member leaves a guild, or is kicked.","params":[{"name":"member","description":"The member that has left/been kicked from the guild","type":[[["GuildMember"]]]}],"meta":{"line":17,"file":"GuildMemberRemove.js","path":"src/client/actions"}},{"name":"guildMemberUpdate","description":"Emitted whenever a guild member changes - i.e. new role, removed role, nickname.\nAlso emitted when the user's details (e.g. username) change.","params":[{"name":"oldMember","description":"The member before the update","type":[[["GuildMember"]]]},{"name":"newMember","description":"The member after the update","type":[[["GuildMember"]]]}],"meta":{"line":23,"file":"GuildMemberUpdate.js","path":"src/client/actions"}},{"name":"guildMemberAvailable","description":"Emitted whenever a member becomes available in a large guild.","params":[{"name":"member","description":"The member that became available","type":[[["GuildMember"]]]}],"meta":{"line":33,"file":"GuildMemberUpdate.js","path":"src/client/actions"}},{"name":"roleCreate","description":"Emitted whenever a role is created.","params":[{"name":"role","description":"The role that was created","type":[[["Role"]]]}],"meta":{"line":14,"file":"GuildRoleCreate.js","path":"src/client/actions"}},{"name":"roleDelete","description":"Emitted whenever a guild role is deleted.","params":[{"name":"role","description":"The role that was deleted","type":[[["Role"]]]}],"meta":{"line":17,"file":"GuildRoleDelete.js","path":"src/client/actions"}},{"name":"roleUpdate","description":"Emitted whenever a guild role is updated.","params":[{"name":"oldRole","description":"The role before the update","type":[[["Role"]]]},{"name":"newRole","description":"The role after the update","type":[[["Role"]]]}],"meta":{"line":17,"file":"GuildRoleUpdate.js","path":"src/client/actions"}},{"name":"guildUpdate","description":"Emitted whenever a guild is updated - e.g. name change.","params":[{"name":"oldGuild","description":"The guild before the update","type":[[["Guild"]]]},{"name":"newGuild","description":"The guild after the update","type":[[["Guild"]]]}],"meta":{"line":13,"file":"GuildUpdate.js","path":"src/client/actions"}},{"name":"inviteCreate","description":"Emitted when an invite is created.\n This event only triggers if the client has `MANAGE_GUILD` permissions for the guild,\nor `MANAGE_CHANNEL` permissions for the channel.","params":[{"name":"invite","description":"The invite that was created","type":[[["Invite"]]]}],"meta":{"line":16,"file":"InviteCreate.js","path":"src/client/actions"}},{"name":"inviteDelete","description":"Emitted when an invite is deleted.\n This event only triggers if the client has `MANAGE_GUILD` permissions for the guild,\nor `MANAGE_CHANNEL` permissions for the channel.","params":[{"name":"invite","description":"The invite that was deleted","type":[[["Invite"]]]}],"meta":{"line":17,"file":"InviteDelete.js","path":"src/client/actions"}},{"name":"message","description":"Emitted whenever a message is created.","params":[{"name":"message","description":"The created message","type":[[["Message"]]]}],"meta":{"line":26,"file":"MessageCreate.js","path":"src/client/actions"}},{"name":"messageDelete","description":"Emitted whenever a message is deleted.","params":[{"name":"message","description":"The deleted message","type":[[["Message"]]]}],"meta":{"line":16,"file":"MessageDelete.js","path":"src/client/actions"}},{"name":"messageDeleteBulk","description":"Emitted whenever messages are deleted in bulk.","params":[{"name":"messages","description":"The deleted messages, mapped by their ID","type":[[["Collection","<"],["Snowflake",", "],["Message",">"]]]}],"meta":{"line":31,"file":"MessageDeleteBulk.js","path":"src/client/actions"}},{"name":"messageReactionAdd","description":"Emitted whenever a reaction is added to a cached message.","params":[{"name":"messageReaction","description":"The reaction object","type":[[["MessageReaction"]]]},{"name":"user","description":"The user that applied the guild or reaction emoji","type":[[["User"]]]}],"meta":{"line":43,"file":"MessageReactionAdd.js","path":"src/client/actions"}},{"name":"messageReactionRemove","description":"Emitted whenever a reaction is removed from a cached message.","params":[{"name":"messageReaction","description":"The reaction object","type":[[["MessageReaction"]]]},{"name":"user","description":"The user whose emoji or reaction emoji was removed","type":[[["User"]]]}],"meta":{"line":33,"file":"MessageReactionRemove.js","path":"src/client/actions"}},{"name":"messageReactionRemoveAll","description":"Emitted whenever all reactions are removed from a cached message.","params":[{"name":"message","description":"The message the reactions were removed from","type":[[["Message"]]]}],"meta":{"line":23,"file":"MessageReactionRemoveAll.js","path":"src/client/actions"}},{"name":"messageReactionRemoveEmoji","description":"Emitted when a bot removes an emoji reaction from a cached message.","params":[{"name":"reaction","description":"The reaction that was removed","type":[[["MessageReaction"]]]}],"meta":{"line":18,"file":"MessageReactionRemoveEmoji.js","path":"src/client/actions"}},{"name":"presenceUpdate","description":"Emitted whenever a guild member's presence (e.g. status, activity) is changed.","params":[{"name":"oldPresence","description":"The presence before the update, if one at all","nullable":true,"type":[[["Presence"]]]},{"name":"newPresence","description":"The presence after the update","type":[[["Presence"]]]}],"meta":{"line":33,"file":"PresenceUpdate.js","path":"src/client/actions"}},{"name":"typingStart","description":"Emitted whenever a user starts typing in a channel.","params":[{"name":"channel","description":"The channel the user started typing in","type":[[["Channel"]]]},{"name":"user","description":"The user that started typing","type":[[["User"]]]}],"meta":{"line":40,"file":"TypingStart.js","path":"src/client/actions"}},{"name":"userUpdate","description":"Emitted whenever a user's details (e.g. username) are changed.\nTriggered by the Discord gateway events USER_UPDATE, GUILD_MEMBER_UPDATE, and PRESENCE_UPDATE.","params":[{"name":"oldUser","description":"The user before the update","type":[[["User"]]]},{"name":"newUser","description":"The user after the update","type":[[["User"]]]}],"meta":{"line":14,"file":"UserUpdate.js","path":"src/client/actions"}},{"name":"voiceStateUpdate","description":"Emitted whenever a member changes voice state - e.g. joins/leaves a channel, mutes/unmutes.","params":[{"name":"oldState","description":"The voice state before the update","type":[[["VoiceState"]]]},{"name":"newState","description":"The voice state after the update","type":[[["VoiceState"]]]}],"meta":{"line":34,"file":"VoiceStateUpdate.js","path":"src/client/actions"}},{"name":"webhookUpdate","description":"Emitted whenever a guild text channel has its webhooks changed.","params":[{"name":"channel","description":"The channel that had a webhook update","type":[[["TextChannel"]]]}],"meta":{"line":10,"file":"WebhooksUpdate.js","path":"src/client/actions"}},{"name":"warn","description":"Emitted for general warnings.","params":[{"name":"info","description":"The warning","type":[[["string"]]]}],"meta":{"line":494,"file":"Client.js","path":"src/client"}},{"name":"debug","description":"Emitted for general debugging information.","params":[{"name":"info","description":"The debug information","type":[[["string"]]]}],"meta":{"line":500,"file":"Client.js","path":"src/client"}},{"name":"guildMemberSpeaking","description":"Emitted once a guild member changes speaking state.","params":[{"name":"member","description":"The member that started/stopped speaking","type":[[["GuildMember"]]]},{"name":"speaking","description":"The speaking state of the member","type":[[["Readonly","<"],["Speaking",">"]]]}],"meta":{"line":510,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"channelPinsUpdate","description":"Emitted whenever the pins of a channel are updated. Due to the nature of the WebSocket event,\nnot much information can be provided easily here - you need to manually check the pins yourself.","params":[{"name":"channel","description":"The channel that the pins update occurred in","type":[[["DMChannel"]],[["TextChannel"]]]},{"name":"time","description":"The time of the pins update","type":[[["Date"]]]}],"meta":{"line":13,"file":"CHANNEL_PINS_UPDATE.js","path":"src/client/websocket/handlers"}},{"name":"channelUpdate","description":"Emitted whenever a channel is updated - e.g. name change, topic change, channel type change.","params":[{"name":"oldChannel","description":"The channel before the update","type":[[["DMChannel"]],[["GuildChannel"]]]},{"name":"newChannel","description":"The channel after the update","type":[[["DMChannel"]],[["GuildChannel"]]]}],"meta":{"line":8,"file":"CHANNEL_UPDATE.js","path":"src/client/websocket/handlers"}},{"name":"guildBanAdd","description":"Emitted whenever a member is banned from a guild.","params":[{"name":"guild","description":"The guild that the ban occurred in","type":[[["Guild"]]]},{"name":"user","description":"The user that was banned","type":[[["User"]]]}],"meta":{"line":9,"file":"GUILD_BAN_ADD.js","path":"src/client/websocket/handlers"}},{"name":"guildCreate","description":"Emitted whenever the client joins a guild.","params":[{"name":"guild","description":"The created guild","type":[[["Guild"]]]}],"meta":{"line":23,"file":"GUILD_CREATE.js","path":"src/client/websocket/handlers"}},{"name":"guildMemberAdd","description":"Emitted whenever a user joins a guild.","params":[{"name":"member","description":"The member that has joined a guild","type":[[["GuildMember"]]]}],"meta":{"line":11,"file":"GUILD_MEMBER_ADD.js","path":"src/client/websocket/handlers"}},{"name":"guildMembersChunk","description":"Emitted whenever a chunk of guild members is received (all members come from the same guild).","params":[{"name":"members","description":"The members in the chunk","type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]]},{"name":"guild","description":"The guild related to the member chunk","type":[[["Guild"]]]},{"name":"chunk","description":"Properties of the received chunk","type":[[["Object"]]]},{"name":"chunk.index","description":"Index of the received chunk","type":[[["number"]]]},{"name":"chunk.count","description":"Number of chunks the client should receive","type":[[["number"]]]},{"name":"chunk.nonce","description":"Nonce for this chunk","nullable":true,"type":[[["string"]]]}],"meta":{"line":15,"file":"GUILD_MEMBERS_CHUNK.js","path":"src/client/websocket/handlers"}},{"name":"messageUpdate","description":"Emitted whenever a message is updated - e.g. embed or content change.","params":[{"name":"oldMessage","description":"The message before the update","type":[[["Message"]]]},{"name":"newMessage","description":"The message after the update","type":[[["Message"]]]}],"meta":{"line":8,"file":"MESSAGE_UPDATE.js","path":"src/client/websocket/handlers"}},{"name":"shardResume","description":"Emitted when a shard resumes successfully.","params":[{"name":"id","description":"The shard ID that resumed","type":[[["number"]]]},{"name":"replayedEvents","description":"The amount of replayed events","type":[[["number"]]]}],"meta":{"line":7,"file":"RESUMED.js","path":"src/client/websocket/handlers"}},{"name":"shardReady","description":"Emitted when a shard turns ready.","params":[{"name":"id","description":"The shard ID that turned ready","type":[[["number"]]]},{"name":"unavailableGuilds","description":"Set of unavailable guild IDs, if any","nullable":true,"type":[[["Set","<"],["string",">"]]]}],"meta":{"line":188,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"shardDisconnect","description":"Emitted when a shard's WebSocket disconnects and will no longer reconnect.","params":[{"name":"event","description":"The WebSocket close event","type":[[["CloseEvent"]]]},{"name":"id","description":"The shard ID that disconnected","type":[[["number"]]]}],"meta":{"line":202,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"shardReconnecting","description":"Emitted when a shard is attempting to reconnect or re-identify.","params":[{"name":"id","description":"The shard ID that is attempting to reconnect","type":[[["number"]]]}],"meta":{"line":218,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"invalidated","description":"Emitted when the client's session becomes invalidated.\nYou are expected to handle closing the process gracefully and preventing a boot loop\nif you are listening to this event.","meta":{"line":300,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"ready","description":"Emitted when the client becomes ready to start working.","meta":{"line":427,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"shardError","description":"Emitted whenever a shard's WebSocket encounters a connection error.","params":[{"name":"error","description":"The encountered error","type":[[["Error"]]]},{"name":"shardID","description":"The shard that encountered this error","type":[[["number"]]]}],"meta":{"line":313,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"rateLimit","description":"Emitted when the client hits a rate limit while making a request","params":[{"name":"rateLimitInfo","description":"Object containing the rate limit info","type":[[["Object"]]]},{"name":"rateLimitInfo.timeout","description":"Timeout in ms","type":[[["number"]]]},{"name":"rateLimitInfo.limit","description":"Number of requests that can be made to this endpoint","type":[[["number"]]]},{"name":"rateLimitInfo.method","description":"HTTP method used for request that triggered this event","type":[[["string"]]]},{"name":"rateLimitInfo.path","description":"Path used for request that triggered this event","type":[[["string"]]]},{"name":"rateLimitInfo.route","description":"Route used for request that triggered this event","type":[[["string"]]]}],"meta":{"line":59,"file":"RequestHandler.js","path":"src/rest"}},{"name":"error","description":"Emitted when the client encounters an error.","params":[{"name":"error","description":"The error encountered","type":[[["Error"]]]}],"meta":{"line":203,"file":"ShardClientUtil.js","path":"src/sharding"}}],"meta":{"line":30,"file":"Client.js","path":"src/client"}},{"name":"ClientVoiceManager","description":"Manages voice connections for the client","props":[{"name":"client","description":"The client that instantiated this voice manager","readonly":true,"type":[[["Client"]]],"meta":{"line":13,"file":"ClientVoiceManager.js","path":"src/client/voice"}},{"name":"connections","description":"A collection mapping connection IDs to the Connection objects","type":[[["Collection","<"],["Snowflake",", "],["VoiceConnection",">"]]],"meta":{"line":25,"file":"ClientVoiceManager.js","path":"src/client/voice"}},{"name":"broadcasts","description":"Active voice broadcasts that have been created","type":[[["Array","<"],["VoiceBroadcast",">"]]],"meta":{"line":31,"file":"ClientVoiceManager.js","path":"src/client/voice"}}],"methods":[{"name":"createBroadcast","description":"Creates a voice broadcast.","returns":[[["VoiceBroadcast"]]],"meta":{"line":38,"file":"ClientVoiceManager.js","path":"src/client/voice"}},{"name":"joinChannel","description":"Sets up a request to join a voice channel.","access":"private","params":[{"name":"channel","description":"The voice channel to join","type":[[["VoiceChannel"]]]}],"returns":[[["Promise","<"],["VoiceConnection",">"]]],"meta":{"line":75,"file":"ClientVoiceManager.js","path":"src/client/voice"}}],"meta":{"line":11,"file":"ClientVoiceManager.js","path":"src/client/voice"}},{"name":"BroadcastDispatcher","description":"The class that sends voice packet data to the voice connection.","extends":[[["StreamDispatcher"]]],"implements":[[["VolumeInterface"]]],"props":[{"name":"player","description":"The Audio Player that controls this dispatcher","type":[[["AudioPlayer"]]],"meta":{"line":40,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"pausedSince","description":"The time that the stream was paused at (null if not paused)","nullable":true,"type":[[["number"]]],"meta":{"line":52,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"broadcast","description":"The broadcast controlling this dispatcher, if any","nullable":true,"type":[[["VoiceBroadcast"]]],"meta":{"line":59,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"paused","description":"Whether or not playback is paused","readonly":true,"type":[[["boolean"]]],"meta":{"line":145,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"pausedTime","description":"Total time that this dispatcher has been paused in milliseconds","readonly":true,"type":[[["number"]]],"meta":{"line":154,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"streamTime","description":"The time (in milliseconds) that the dispatcher has actually been playing audio for","readonly":true,"type":[[["number"]]],"meta":{"line":180,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"totalStreamTime","description":"The time (in milliseconds) that the dispatcher has been playing audio for, taking into account skips and pauses","readonly":true,"type":[[["number"]]],"meta":{"line":189,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"bitrateEditable","description":"Whether or not the Opus bitrate of this stream is editable","readonly":true,"type":[[["boolean"]]],"meta":{"line":322,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"volumeEditable","description":"Whether or not the volume of this stream is editable","readonly":true,"type":[[["boolean"]]],"meta":{"line":20,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volume","description":"The current volume of the stream","readonly":true,"type":[[["number"]]],"meta":{"line":29,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volumeDecibels","description":"The current volume of the stream in decibels","readonly":true,"type":[[["number"]]],"meta":{"line":38,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volumeLogarithmic","description":"The current volume of the stream from a logarithmic scale","readonly":true,"type":[[["number"]]],"meta":{"line":47,"file":"VolumeInterface.js","path":"src/client/voice/util"}}],"methods":[{"name":"setBitrate","description":"Set the bitrate of the current Opus encoder if using a compatible Opus stream.","params":[{"name":"value","description":"New bitrate, in kbps\nIf set to 'auto', 48kbps will be used","type":[[["number"]]]}],"returns":{"types":[[["boolean"]]],"description":"true if the bitrate has been successfully changed."},"meta":{"line":38,"file":"BroadcastDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"pause","description":"Pauses playback","inherits":"StreamDispatcher#pause","inherited":true,"params":[{"name":"silence","description":"Whether to play silence while paused to prevent audio glitches","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":128,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"resume","description":"Resumes playback","inherits":"StreamDispatcher#resume","inherited":true,"meta":{"line":161,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"setPLP","description":"Sets the expected packet loss percentage if using a compatible Opus stream.","inherits":"StreamDispatcher#setPLP","inherited":true,"params":[{"name":"value","description":"between 0 and 1","type":[[["number"]]]}],"returns":{"types":[[["boolean"]]],"description":"Returns true if it was successfully set."},"meta":{"line":211,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"setFEC","description":"Enables or disables forward error correction if using a compatible Opus stream.","inherits":"StreamDispatcher#setFEC","inherited":true,"params":[{"name":"enabled","description":"true to enable","type":[[["boolean"]]]}],"returns":{"types":[[["boolean"]]],"description":"Returns true if it was successfully set."},"meta":{"line":222,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"setVolume","description":"Sets the volume relative to the input stream - i.e. 1 is normal, 0.5 is half, 2 is double.","inherits":"StreamDispatcher#setVolume","inherited":true,"implements":["VolumeInterface#setVolume"],"params":[{"name":"volume","description":"The volume that you want to set","type":[[["number"]]]}],"meta":{"line":69,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"setVolumeDecibels","description":"Sets the volume in decibels.","inherits":"StreamDispatcher#setVolumeDecibels","inherited":true,"implements":["VolumeInterface#setVolumeDecibels"],"params":[{"name":"db","description":"The decibels","type":[[["number"]]]}],"meta":{"line":84,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"setVolumeLogarithmic","description":"Sets the volume so that a perceived value of 0.5 is half the perceived volume etc.","inherits":"StreamDispatcher#setVolumeLogarithmic","inherited":true,"implements":["VolumeInterface#setVolumeLogarithmic"],"params":[{"name":"value","description":"The value for the volume","type":[[["number"]]]}],"meta":{"line":92,"file":"VolumeInterface.js","path":"src/client/voice/util"}}],"events":[{"name":"error","description":"Emitted when the dispatcher encounters an error.","meta":{"line":76,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"start","description":"Emitted once the stream has started to play.","meta":{"line":100,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"debug","description":"Emitted whenever the dispatcher has debug information.","params":[{"name":"info","description":"The debug info","type":[[["string"]]]}],"meta":{"line":285,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"speaking","description":"Emitted when the dispatcher starts/stops speaking.","params":[{"name":"value","description":"Whether or not the dispatcher is speaking","type":[[["boolean"]]]}],"meta":{"line":305,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"volumeChange","description":"Emitted when the volume of this dispatcher changes.","params":[{"name":"oldVolume","description":"The old volume of this dispatcher","type":[[["number"]]]},{"name":"newVolume","description":"The new volume of this dispatcher","type":[[["number"]]]}],"meta":{"line":333,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}}],"meta":{"line":10,"file":"BroadcastDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"StreamDispatcher","description":"The class that sends voice packet data to the voice connection.\n```js\n// Obtained using:\nvoiceChannel.join().then(connection => {\n // You can play a file or a stream here:\n const dispatcher = connection.play('/home/hydrabolt/audio.mp3');\n});\n```","extends":[[["WritableStream"]]],"implements":[[["VolumeInterface"]]],"props":[{"name":"player","description":"The Audio Player that controls this dispatcher","type":[[["AudioPlayer"]]],"meta":{"line":40,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"pausedSince","description":"The time that the stream was paused at (null if not paused)","nullable":true,"type":[[["number"]]],"meta":{"line":52,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"broadcast","description":"The broadcast controlling this dispatcher, if any","nullable":true,"type":[[["VoiceBroadcast"]]],"meta":{"line":59,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"paused","description":"Whether or not playback is paused","readonly":true,"type":[[["boolean"]]],"meta":{"line":145,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"pausedTime","description":"Total time that this dispatcher has been paused in milliseconds","readonly":true,"type":[[["number"]]],"meta":{"line":154,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"streamTime","description":"The time (in milliseconds) that the dispatcher has actually been playing audio for","readonly":true,"type":[[["number"]]],"meta":{"line":180,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"totalStreamTime","description":"The time (in milliseconds) that the dispatcher has been playing audio for, taking into account skips and pauses","readonly":true,"type":[[["number"]]],"meta":{"line":189,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"bitrateEditable","description":"Whether or not the Opus bitrate of this stream is editable","readonly":true,"type":[[["boolean"]]],"meta":{"line":322,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"volumeEditable","description":"Whether or not the volume of this stream is editable","readonly":true,"type":[[["boolean"]]],"meta":{"line":20,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volume","description":"The current volume of the stream","readonly":true,"type":[[["number"]]],"meta":{"line":29,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volumeDecibels","description":"The current volume of the stream in decibels","readonly":true,"type":[[["number"]]],"meta":{"line":38,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volumeLogarithmic","description":"The current volume of the stream from a logarithmic scale","readonly":true,"type":[[["number"]]],"meta":{"line":47,"file":"VolumeInterface.js","path":"src/client/voice/util"}}],"methods":[{"name":"pause","description":"Pauses playback","params":[{"name":"silence","description":"Whether to play silence while paused to prevent audio glitches","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":128,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"resume","description":"Resumes playback","meta":{"line":161,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"setBitrate","description":"Set the bitrate of the current Opus encoder if using a compatible Opus stream.","params":[{"name":"value","description":"New bitrate, in kbps\nIf set to 'auto', the voice channel's bitrate will be used","type":[[["number"]]]}],"returns":{"types":[[["boolean"]]],"description":"true if the bitrate has been successfully changed."},"meta":{"line":199,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"setPLP","description":"Sets the expected packet loss percentage if using a compatible Opus stream.","params":[{"name":"value","description":"between 0 and 1","type":[[["number"]]]}],"returns":{"types":[[["boolean"]]],"description":"Returns true if it was successfully set."},"meta":{"line":211,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"setFEC","description":"Enables or disables forward error correction if using a compatible Opus stream.","params":[{"name":"enabled","description":"true to enable","type":[[["boolean"]]]}],"returns":{"types":[[["boolean"]]],"description":"Returns true if it was successfully set."},"meta":{"line":222,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"setVolume","description":"Sets the volume relative to the input stream - i.e. 1 is normal, 0.5 is half, 2 is double.","implements":["VolumeInterface#setVolume"],"params":[{"name":"volume","description":"The volume that you want to set","type":[[["number"]]]}],"meta":{"line":69,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"setVolumeDecibels","description":"Sets the volume in decibels.","implements":["VolumeInterface#setVolumeDecibels"],"params":[{"name":"db","description":"The decibels","type":[[["number"]]]}],"meta":{"line":84,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"setVolumeLogarithmic","description":"Sets the volume so that a perceived value of 0.5 is half the perceived volume etc.","implements":["VolumeInterface#setVolumeLogarithmic"],"params":[{"name":"value","description":"The value for the volume","type":[[["number"]]]}],"meta":{"line":92,"file":"VolumeInterface.js","path":"src/client/voice/util"}}],"events":[{"name":"error","description":"Emitted when the dispatcher encounters an error.","meta":{"line":76,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"start","description":"Emitted once the stream has started to play.","meta":{"line":100,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"debug","description":"Emitted whenever the dispatcher has debug information.","params":[{"name":"info","description":"The debug info","type":[[["string"]]]}],"meta":{"line":285,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"speaking","description":"Emitted when the dispatcher starts/stops speaking.","params":[{"name":"value","description":"Whether or not the dispatcher is speaking","type":[[["boolean"]]]}],"meta":{"line":305,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"volumeChange","description":"Emitted when the volume of this dispatcher changes.","params":[{"name":"oldVolume","description":"The old volume of this dispatcher","type":[[["number"]]]},{"name":"newVolume","description":"The new volume of this dispatcher","type":[[["number"]]]}],"meta":{"line":333,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}}],"meta":{"line":32,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"VoiceConnectionUDPClient","description":"Represents a UDP client for a Voice Connection.","extends":[[["EventEmitter"]]],"access":"private","props":[{"name":"voiceConnection","description":"The voice connection that this UDP client serves","type":[[["VoiceConnection"]]],"meta":{"line":21,"file":"VoiceUDPClient.js","path":"src/client/voice/networking"}},{"name":"socket","description":"The UDP socket","nullable":true,"type":[[["Socket"]]],"meta":{"line":27,"file":"VoiceUDPClient.js","path":"src/client/voice/networking"}},{"name":"discordAddress","description":"The address of the Discord voice server","nullable":true,"type":[[["string"]]],"meta":{"line":33,"file":"VoiceUDPClient.js","path":"src/client/voice/networking"}},{"name":"localAddress","description":"The local IP address","nullable":true,"type":[[["string"]]],"meta":{"line":39,"file":"VoiceUDPClient.js","path":"src/client/voice/networking"}},{"name":"localPort","description":"The local port","nullable":true,"type":[[["string"]]],"meta":{"line":45,"file":"VoiceUDPClient.js","path":"src/client/voice/networking"}},{"name":"discordPort","description":"The port of the Discord voice server","readonly":true,"type":[[["number"]]],"meta":{"line":67,"file":"VoiceUDPClient.js","path":"src/client/voice/networking"}}],"methods":[{"name":"send","description":"Send a packet to the UDP client.","params":[{"name":"packet","description":"The packet to send","type":[[["Object"]]]}],"returns":[[["Promise","<"],["Object",">"]]],"meta":{"line":76,"file":"VoiceUDPClient.js","path":"src/client/voice/networking"}}],"meta":{"line":13,"file":"VoiceUDPClient.js","path":"src/client/voice/networking"}},{"name":"VoiceWebSocket","description":"Represents a Voice Connection's WebSocket.","extends":[[["EventEmitter"]]],"access":"private","props":[{"name":"connection","description":"The Voice Connection that this WebSocket serves","type":[[["VoiceConnection"]]],"meta":{"line":20,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"attempts","description":"How many connection attempts have been made","type":[[["number"]]],"meta":{"line":26,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"client","description":"The client of this voice WebSocket","readonly":true,"type":[[["Client"]]],"meta":{"line":37,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"ws","description":"The actual WebSocket used to connect to the Voice WebSocket Server.","type":[[["WebSocket"]]],"meta":{"line":77,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}}],"methods":[{"name":"reset","description":"Resets the current WebSocket.","meta":{"line":50,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"connect","description":"Starts connecting to the Voice WebSocket Server.","meta":{"line":62,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"send","description":"Sends data to the WebSocket if it is open.","params":[{"name":"data","description":"The data to send to the WebSocket","type":[[["string"]]]}],"returns":[[["Promise","<"],["string",">"]]],"meta":{"line":90,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"sendPacket","description":"JSON.stringify's a packet and then sends it to the WebSocket Server.","params":[{"name":"packet","description":"The packet to send","type":[[["Object"]]]}],"returns":[[["Promise","<"],["string",">"]]],"meta":{"line":106,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"onOpen","description":"Called whenever the WebSocket opens.","meta":{"line":118,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"onMessage","description":"Called whenever a message is received from the WebSocket.","params":[{"name":"event","description":"The message event that was received","type":[[["MessageEvent"]]]}],"returns":[[["void"]]],"meta":{"line":138,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"onClose","description":"Called whenever the connection to the WebSocket server is lost.","meta":{"line":149,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"onError","description":"Called whenever an error occurs with the WebSocket.","params":[{"name":"error","description":"The error that occurred","type":[[["Error"]]]}],"meta":{"line":158,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"onPacket","description":"Called whenever a valid packet is received from the WebSocket.","params":[{"name":"packet","description":"The received packet","type":[[["Object"]]]}],"meta":{"line":167,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"setHeartbeat","description":"Sets an interval at which to send a heartbeat packet to the WebSocket.","params":[{"name":"interval","description":"The interval at which to send a heartbeat packet","type":[[["number"]]]}],"meta":{"line":228,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"clearHeartbeat","description":"Clears a heartbeat interval, if one exists.","meta":{"line":248,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"sendHeartbeat","description":"Sends a heartbeat packet.","meta":{"line":260,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}}],"events":[{"name":"ready","description":"Emitted once the voice WebSocket receives the ready packet.","params":[{"name":"packet","description":"The received packet","type":[[["Object"]]]}],"meta":{"line":174,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"sessionDescription","description":"Emitted once the Voice Websocket receives a description of this voice session.","params":[{"name":"packet","description":"The received packet","type":[[["Object"]]]}],"meta":{"line":184,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"startSpeaking","description":"Emitted whenever a speaking packet is received.","params":[{"name":"data","type":[[["Object"]]]}],"meta":{"line":206,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"unknownPacket","description":"Emitted when an unhandled packet is received.","params":[{"name":"packet","type":[[["Object"]]]}],"meta":{"line":214,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"warn","description":"Emitted whenever the voice WebSocket encounters a non-fatal error.","params":[{"name":"warn","description":"The warning","type":[[["string"]]]}],"meta":{"line":234,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}}],"meta":{"line":13,"file":"VoiceWebSocket.js","path":"src/client/voice/networking"}},{"name":"AudioPlayer","description":"An Audio Player for a Voice Connection.","extends":[[["BasePlayer"]]],"access":"private","props":[{"name":"voiceConnection","description":"The voice connection that the player serves","type":[[["VoiceConnection"]]],"meta":{"line":17,"file":"AudioPlayer.js","path":"src/client/voice/player"}},{"name":"broadcast","description":"The broadcast that the player serves","type":[[["VoiceBroadcast"]]],"meta":{"line":18,"file":"BroadcastAudioPlayer.js","path":"src/client/voice/player"}}],"meta":{"line":11,"file":"BroadcastAudioPlayer.js","path":"src/client/voice/player"}},{"name":"BasePlayer","description":"An Audio Player for a Voice Connection.","extends":[[["EventEmitter"]]],"access":"private","meta":{"line":15,"file":"BasePlayer.js","path":"src/client/voice/player"}},{"name":"VoiceReceiver","description":"Receives audio packets from a voice connection.","methods":[{"name":"createStream","description":"Creates a new audio receiving stream. If a stream already exists for a user, then that stream will be returned\nrather than generating a new one.","params":[{"name":"user","description":"The user to start listening to.","type":[[["UserResolvable"]]]},{"name":"options","description":"Options.","type":[[["ReceiveStreamOptions"]]]}],"returns":[[["ReadableStream"]]],"meta":{"line":45,"file":"Receiver.js","path":"src/client/voice/receiver"}}],"events":[{"name":"debug","description":"Emitted whenever there is a warning","params":[{"name":"error","description":"The error or message to debug","type":[[["Error"]],[["string"]]]}],"meta":{"line":20,"file":"Receiver.js","path":"src/client/voice/receiver"}}],"meta":{"line":15,"file":"Receiver.js","path":"src/client/voice/receiver"}},{"name":"PlayInterface","description":"An interface class to allow you to play audio over VoiceConnections and VoiceBroadcasts.","methods":[{"name":"play","description":"Play an audio resource.","examples":["// Play a local audio file\nconnection.play('/home/hydrabolt/audio.mp3', { volume: 0.5 });","// Play a ReadableStream\nconnection.play(ytdl('https://www.youtube.com/watch?v=ZlAU_w7-Xp8', { quality: 'highestaudio' }));","// Play a voice broadcast\nconst broadcast = client.voice.createBroadcast();\nbroadcast.play('/home/hydrabolt/audio.mp3');\nconnection.play(broadcast);","// Using different protocols: https://ffmpeg.org/ffmpeg-protocols.html\nconnection.play('http://www.sample-videos.com/audio/mp3/wave.mp3');"],"params":[{"name":"resource","description":"The resource to play.","type":[[["VoiceBroadcast"]],[["ReadableStream"]],[["string"]]]},{"name":"options","description":"The options to play.","optional":true,"type":[[["StreamOptions"]]]}],"returns":[[["StreamDispatcher"]]],"meta":{"line":62,"file":"PlayInterface.js","path":"src/client/voice/util"}}],"meta":{"line":37,"file":"PlayInterface.js","path":"src/client/voice/util"}},{"name":"VolumeInterface","description":"An interface class for volume transformation.","extends":[[["EventEmitter"]]],"props":[{"name":"volumeEditable","description":"Whether or not the volume of this stream is editable","readonly":true,"type":[[["boolean"]]],"meta":{"line":20,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volume","description":"The current volume of the stream","readonly":true,"type":[[["number"]]],"meta":{"line":29,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volumeDecibels","description":"The current volume of the stream in decibels","readonly":true,"type":[[["number"]]],"meta":{"line":38,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"volumeLogarithmic","description":"The current volume of the stream from a logarithmic scale","readonly":true,"type":[[["number"]]],"meta":{"line":47,"file":"VolumeInterface.js","path":"src/client/voice/util"}}],"methods":[{"name":"setVolume","description":"Sets the volume relative to the input stream - i.e. 1 is normal, 0.5 is half, 2 is double.","params":[{"name":"volume","description":"The volume that you want to set","type":[[["number"]]]}],"meta":{"line":69,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"setVolumeDecibels","description":"Sets the volume in decibels.","params":[{"name":"db","description":"The decibels","type":[[["number"]]]}],"meta":{"line":84,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"setVolumeLogarithmic","description":"Sets the volume so that a perceived value of 0.5 is half the perceived volume etc.","params":[{"name":"value","description":"The value for the volume","type":[[["number"]]]}],"meta":{"line":92,"file":"VolumeInterface.js","path":"src/client/voice/util"}}],"events":[{"name":"volumeChange","description":"Emitted when the volume of this interface changes.","params":[{"name":"oldVolume","description":"The old volume of this interface","type":[[["number"]]]},{"name":"newVolume","description":"The new volume of this interface","type":[[["number"]]]}],"meta":{"line":70,"file":"VolumeInterface.js","path":"src/client/voice/util"}}],"meta":{"line":9,"file":"VolumeInterface.js","path":"src/client/voice/util"}},{"name":"VoiceBroadcast","description":"A voice broadcast can be played across multiple voice connections for improved shared-stream efficiency.\n\nExample usage:\n```js\nconst broadcast = client.voice.createBroadcast();\nbroadcast.play('./music.mp3');\n// Play \"music.mp3\" in all voice connections that the client is in\nfor (const connection of client.voice.connections.values()) {\n connection.play(broadcast);\n}\n```","extends":[[["EventEmitter"]]],"implements":[[["PlayInterface"]]],"props":[{"name":"client","description":"The client that created the broadcast","type":[[["Client"]]],"meta":{"line":30,"file":"VoiceBroadcast.js","path":"src/client/voice"}},{"name":"subscribers","description":"The subscribed StreamDispatchers of this broadcast","type":[[["Array","<"],["StreamDispatcher",">"]]],"meta":{"line":35,"file":"VoiceBroadcast.js","path":"src/client/voice"}},{"name":"dispatcher","description":"The current master dispatcher, if any. This dispatcher controls all that is played by subscribed dispatchers.","readonly":true,"nullable":true,"type":[[["BroadcastDispatcher"]]],"meta":{"line":44,"file":"VoiceBroadcast.js","path":"src/client/voice"}}],"methods":[{"name":"play","description":"Play an audio resource.","implements":["PlayInterface#play"],"examples":["// Play a local audio file\nbroadcast.play('/home/hydrabolt/audio.mp3', { volume: 0.5 });","// Play a ReadableStream\nbroadcast.play(ytdl('https://www.youtube.com/watch?v=ZlAU_w7-Xp8', { filter: 'audioonly' }));","// Using different protocols: https://ffmpeg.org/ffmpeg-protocols.html\nbroadcast.play('http://www.sample-videos.com/audio/mp3/wave.mp3');"],"params":[{"name":"resource","description":"The resource to play.","type":[[["ReadableStream"]],[["string"]]]},{"name":"options","description":"The options to play.","optional":true,"type":[[["StreamOptions"]]]}],"returns":[[["BroadcastDispatcher"]]],"meta":{"line":63,"file":"VoiceBroadcast.js","path":"src/client/voice"}},{"name":"end","description":"Ends the broadcast, unsubscribing all subscribed channels and deleting the broadcast","meta":{"line":70,"file":"VoiceBroadcast.js","path":"src/client/voice"}}],"events":[{"name":"subscribe","description":"Emitted whenever a stream dispatcher subscribes to the broadcast.","params":[{"name":"subscriber","description":"The subscribed dispatcher","type":[[["StreamDispatcher"]]]}],"meta":{"line":80,"file":"VoiceBroadcast.js","path":"src/client/voice"}},{"name":"unsubscribe","description":"Emitted whenever a stream dispatcher unsubscribes to the broadcast.","params":[{"name":"dispatcher","description":"The unsubscribed dispatcher","type":[[["StreamDispatcher"]]]}],"meta":{"line":97,"file":"VoiceBroadcast.js","path":"src/client/voice"}}],"meta":{"line":23,"file":"VoiceBroadcast.js","path":"src/client/voice"}},{"name":"VoiceConnection","description":"Represents a connection to a guild's voice server.\n```js\n// Obtained using:\nvoiceChannel.join()\n .then(connection => {\n\n });\n```","extends":[[["EventEmitter"]]],"implements":[[["PlayInterface"]]],"props":[{"name":"voiceManager","description":"The voice manager that instantiated this connection","type":[[["ClientVoiceManager"]]],"meta":{"line":45,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"channel","description":"The voice channel this connection is currently serving","type":[[["VoiceChannel"]]],"meta":{"line":51,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"status","description":"The current status of the voice connection","type":[[["VoiceStatus"]]],"meta":{"line":57,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"speaking","description":"Our current speaking state","type":[[["Readonly","<"],["Speaking",">"]]],"meta":{"line":63,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"authentication","description":"The authentication data needed to connect to the voice server","access":"private","type":[[["Object"]]],"meta":{"line":70,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"player","description":"The audio player for this voice connection","type":[[["AudioPlayer"]]],"meta":{"line":76,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"ssrcMap","description":"Map SSRC values to user IDs","access":"private","type":[[["Map","<"],["number",", "],["Snowflake",">"]]],"meta":{"line":103,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"_speaking","description":"Tracks which users are talking","access":"private","type":[[["Map","<"],["Snowflake",", "],["Readonly","<"],["Speaking",">>"]]],"meta":{"line":110,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"sockets","description":"Object that wraps contains the `ws` and `udp` sockets of this voice connection","access":"private","type":[[["Object"]]],"meta":{"line":117,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"receiver","description":"The voice receiver of this connection","type":[[["VoiceReceiver"]]],"meta":{"line":123,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"client","description":"The client that instantiated this connection","readonly":true,"type":[[["Client"]]],"meta":{"line":131,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"dispatcher","description":"The current stream dispatcher (if any)","readonly":true,"nullable":true,"type":[[["StreamDispatcher"]]],"meta":{"line":140,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"voice","description":"The voice state of this connection","nullable":true,"type":[[["VoiceState"]]],"meta":{"line":170,"file":"VoiceConnection.js","path":"src/client/voice"}}],"methods":[{"name":"setSpeaking","description":"Sets whether the voice connection should display as \"speaking\", \"soundshare\" or \"none\".","params":[{"name":"value","description":"The new speaking state","type":[[["BitFieldResolvable"]]]}],"meta":{"line":148,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"sendVoiceStateUpdate","description":"Sends a request to the main gateway to join a voice channel.","access":"private","params":[{"name":"options","description":"The options to provide","optional":true,"type":[[["Object"]]]}],"returns":[[["Promise","<"],["Shard",">"]]],"meta":{"line":180,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"setTokenAndEndpoint","description":"Set the token and endpoint required to connect to the voice servers.","access":"private","params":[{"name":"token","description":"The voice token","type":[[["string"]]]},{"name":"endpoint","description":"The voice endpoint","type":[[["string"]]]}],"returns":[[["void"]]],"meta":{"line":209,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"setSessionID","description":"Sets the Session ID for the connection.","access":"private","params":[{"name":"sessionID","description":"The voice session ID","type":[[["string"]]]}],"meta":{"line":243,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"checkAuthenticated","description":"Checks whether the voice connection is authenticated.","access":"private","meta":{"line":268,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"authenticateFailed","description":"Invoked when we fail to initiate a voice connection.","access":"private","params":[{"name":"reason","description":"The reason for failure","type":[[["string"]]]}],"meta":{"line":287,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"updateChannel","description":"Move to a different voice channel in the same guild.","access":"private","params":[{"name":"channel","description":"The channel to move to","type":[[["VoiceChannel"]]]}],"meta":{"line":313,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"authenticate","description":"Attempts to authenticate to the voice server.","access":"private","meta":{"line":322,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"reconnect","description":"Attempts to reconnect to the voice server (typically after a region change).","access":"private","params":[{"name":"token","description":"The voice token","type":[[["string"]]]},{"name":"endpoint","description":"The voice endpoint","type":[[["string"]]]}],"meta":{"line":333,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"disconnect","description":"Disconnects the voice connection, causing a disconnect and closing event to be emitted.","meta":{"line":350,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"_disconnect","description":"Internally disconnects (doesn't send disconnect packet).","access":"private","meta":{"line":366,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"cleanup","description":"Cleans up after disconnect.","access":"private","meta":{"line":380,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"connect","description":"Connect the voice connection.","access":"private","meta":{"line":405,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"onReady","description":"Invoked when the voice websocket is ready.","access":"private","params":[{"name":"data","description":"The received data","type":[[["Object"]]]}],"meta":{"line":436,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"onSessionDescription","description":"Invoked when a session description is received.","access":"private","params":[{"name":"data","description":"The received data","type":[[["Object"]]]}],"meta":{"line":453,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"onSpeaking","description":"Invoked when a speaking event is received.","access":"private","params":[{"name":"data","description":"The received data","type":[[["Object"]]]}],"meta":{"line":488,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"play","description":"Play an audio resource.","implements":["PlayInterface#play"],"examples":["// Play a local audio file\nconnection.play('/home/hydrabolt/audio.mp3', { volume: 0.5 });","// Play a ReadableStream\nconnection.play(ytdl('https://www.youtube.com/watch?v=ZlAU_w7-Xp8', { quality: 'highestaudio' }));","// Play a voice broadcast\nconst broadcast = client.voice.createBroadcast();\nbroadcast.play('/home/hydrabolt/audio.mp3');\nconnection.play(broadcast);","// Using different protocols: https://ffmpeg.org/ffmpeg-protocols.html\nconnection.play('http://www.sample-videos.com/audio/mp3/wave.mp3');"],"params":[{"name":"resource","description":"The resource to play.","type":[[["VoiceBroadcast"]],[["ReadableStream"]],[["string"]]]},{"name":"options","description":"The options to play.","optional":true,"type":[[["StreamOptions"]]]}],"returns":[[["StreamDispatcher"]]],"meta":{"line":62,"file":"PlayInterface.js","path":"src/client/voice/util"}}],"events":[{"name":"debug","description":"Debug info from the connection.","params":[{"name":"message","description":"The debug message","type":[[["string"]]]}],"meta":{"line":79,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"warn","description":"Warning info from the connection.","params":[{"name":"warning","description":"The warning","type":[[["string"]],[["Error"]]]}],"meta":{"line":88,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"newSession","description":"Emitted when a new session ID is received.","meta":{"line":255,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"authenticated","description":"Emitted when we successfully initiate a voice connection.","meta":{"line":273,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"failed","description":"Emitted when we fail to initiate a voice connection.","params":[{"name":"error","description":"The encountered error","type":[[["Error"]]]}],"meta":{"line":291,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"error","description":"Emitted whenever the connection encounters an error.","params":[{"name":"error","description":"The encountered error","type":[[["Error"]]]}],"meta":{"line":298,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"reconnecting","description":"Emitted when the voice connection is reconnecting (typically after a region change).","meta":{"line":339,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"disconnect","description":"Emitted when the voice connection disconnects.","meta":{"line":369,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"ready","description":"Emitted once the connection is ready, when a promise to join a voice channel resolves,\nthe connection will already be ready.","meta":{"line":459,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"speaking","description":"Emitted whenever a user changes speaking state.","params":[{"name":"user","description":"The user that has changed speaking state","type":[[["User"]]]},{"name":"speaking","description":"The speaking state of the user","type":[[["Readonly","<"],["Speaking",">"]]]}],"meta":{"line":494,"file":"VoiceConnection.js","path":"src/client/voice"}}],"meta":{"line":37,"file":"VoiceConnection.js","path":"src/client/voice"}},{"name":"WebhookClient","description":"The webhook client.","extends":[[["BaseClient"]]],"implements":[[["Webhook"]]],"construct":{"name":"WebhookClient","params":[{"name":"id","description":"ID of the webhook","type":[[["Snowflake"]]]},{"name":"token","description":"Token of the webhook","type":[[["string"]]]},{"name":"options","description":"Options for the client","optional":true,"type":[[["ClientOptions"]]]}]},"props":[{"name":"id","description":"The ID of the webhook","type":[[["Snowflake"]]],"meta":{"line":48,"file":"Webhook.js","path":"src/structures"}},{"name":"_timeouts","description":"Timeouts set by {@link BaseClient#setTimeout} that are still active","access":"private","type":[[["Set","<"],["Timeout",">"]]],"meta":{"line":22,"file":"BaseClient.js","path":"src/client"}},{"name":"_intervals","description":"Intervals set by {@link BaseClient#setInterval} that are still active","access":"private","type":[[["Set","<"],["Timeout",">"]]],"meta":{"line":29,"file":"BaseClient.js","path":"src/client"}},{"name":"_immediates","description":"Intervals set by {@link BaseClient#setImmediate} that are still active","access":"private","type":[[["Set","<"],["Immediate",">"]]],"meta":{"line":36,"file":"BaseClient.js","path":"src/client"}},{"name":"options","description":"The options the client was instantiated with","type":[[["ClientOptions"]]],"meta":{"line":42,"file":"BaseClient.js","path":"src/client"}},{"name":"rest","description":"The REST manager of the client","access":"private","type":[[["RESTManager"]]],"meta":{"line":49,"file":"BaseClient.js","path":"src/client"}},{"name":"api","description":"API shortcut","access":"private","readonly":true,"type":[[["Object"]]],"meta":{"line":58,"file":"BaseClient.js","path":"src/client"}}],"methods":[{"name":"destroy","description":"Destroys all assets used by the base client.","inherits":"BaseClient#destroy","inherited":true,"meta":{"line":65,"file":"BaseClient.js","path":"src/client"}},{"name":"setTimeout","description":"Sets a timeout that will be automatically cancelled if the client is destroyed.","inherits":"BaseClient#setTimeout","inherited":true,"params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"delay","description":"Time to wait before executing (in milliseconds)","type":[[["number"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Timeout"]]],"meta":{"line":81,"file":"BaseClient.js","path":"src/client"}},{"name":"clearTimeout","description":"Clears a timeout.","inherits":"BaseClient#clearTimeout","inherited":true,"params":[{"name":"timeout","description":"Timeout to cancel","type":[[["Timeout"]]]}],"meta":{"line":94,"file":"BaseClient.js","path":"src/client"}},{"name":"setInterval","description":"Sets an interval that will be automatically cancelled if the client is destroyed.","inherits":"BaseClient#setInterval","inherited":true,"params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"delay","description":"Time to wait between executions (in milliseconds)","type":[[["number"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Timeout"]]],"meta":{"line":106,"file":"BaseClient.js","path":"src/client"}},{"name":"clearInterval","description":"Clears an interval.","inherits":"BaseClient#clearInterval","inherited":true,"params":[{"name":"interval","description":"Interval to cancel","type":[[["Timeout"]]]}],"meta":{"line":116,"file":"BaseClient.js","path":"src/client"}},{"name":"setImmediate","description":"Sets an immediate that will be automatically cancelled if the client is destroyed.","inherits":"BaseClient#setImmediate","inherited":true,"params":[{"name":"fn","description":"Function to execute","type":[[["function"]]]},{"name":"args","description":"Arguments for the function","variable":true,"type":[["*"]]}],"returns":[[["Immediate"]]],"meta":{"line":127,"file":"BaseClient.js","path":"src/client"}},{"name":"clearImmediate","description":"Clears an immediate.","inherits":"BaseClient#clearImmediate","inherited":true,"params":[{"name":"immediate","description":"Immediate to cancel","type":[[["Immediate"]]]}],"meta":{"line":137,"file":"BaseClient.js","path":"src/client"}},{"name":"incrementMaxListeners","description":"Increments max listeners by one, if they are not zero.","access":"private","inherits":"BaseClient#incrementMaxListeners","inherited":true,"meta":{"line":146,"file":"BaseClient.js","path":"src/client"}},{"name":"decrementMaxListeners","description":"Decrements max listeners by one, if they are not zero.","access":"private","inherits":"BaseClient#decrementMaxListeners","inherited":true,"meta":{"line":157,"file":"BaseClient.js","path":"src/client"}}],"meta":{"line":11,"file":"WebhookClient.js","path":"src/client"}},{"name":"WebSocketManager","description":"The WebSocket manager for this client.\nThis class forwards raw dispatch events,\nread more about it here {@link https://discord.com/developers/docs/topics/gateway}","extends":[[["EventEmitter"]]],"props":[{"name":"client","description":"The client that instantiated this WebSocketManager","readonly":true,"type":[[["Client"]]],"meta":{"line":34,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"gateway","description":"The gateway this manager uses","nullable":true,"type":[[["string"]]],"meta":{"line":46,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"totalShards","description":"The amount of shards this manager handles","access":"private","type":[[["number"]]],"meta":{"line":53,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"shards","description":"A collection of all shards this manager handles","type":[[["Collection","<"],["number",", "],["WebSocketShard",">"]]],"meta":{"line":59,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"shardQueue","description":"An array of shards to be connected or that need to reconnect","access":"private","type":[[["Set","<"],["WebSocketShard",">"]]],"meta":{"line":61,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"packetQueue","description":"An array of queued events before this WebSocketManager became ready","access":"private","type":[[["Array","<"],["object",">"]]],"meta":{"line":69,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"status","description":"The current status of this WebSocketManager","type":[[["number"]]],"meta":{"line":81,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"destroyed","description":"If this manager was destroyed. It will prevent shards from reconnecting","access":"private","type":[[["boolean"]]],"meta":{"line":88,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"reconnecting","description":"If this manager is currently reconnecting one or multiple shards","access":"private","type":[[["boolean"]]],"meta":{"line":95,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"sessionStartLimit","description":"The current session limit of the client","access":"private","nullable":true,"type":[[["Object"]]],"props":[{"name":"total","description":"Total number of identifies available","type":[[["number"]]]},{"name":"remaining","description":"Number of identifies remaining","type":[[["number"]]]},{"name":"reset_after","description":"Number of milliseconds after which the limit resets","type":[[["number"]]]}],"meta":{"line":105,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"ping","description":"The average ping of all WebSocketShards","readonly":true,"type":[[["number"]]],"meta":{"line":113,"file":"WebSocketManager.js","path":"src/client/websocket"}}],"methods":[{"name":"debug","description":"Emits a debug message.","access":"private","params":[{"name":"message","description":"The debug message","type":[[["string"]]]},{"name":"shard","description":"The shard that emitted this message, if any","optional":true,"nullable":true,"type":[[["WebSocketShard"]]]}],"meta":{"line":124,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"connect","description":"Connects this manager to the gateway.","access":"private","async":true,"meta":{"line":132,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"createShards","description":"Handles the creation of a shard.","access":"private","async":true,"returns":[[["Promise","<"],["boolean",">"]]],"meta":{"line":178,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"reconnect","description":"Handles reconnects for this manager.","access":"private","params":[{"name":"skipLimit","description":"IF this reconnect should skip checking the session limit","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["boolean",">"]]],"meta":{"line":284,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"broadcast","description":"Broadcasts a packet to every shard this manager handles.","access":"private","params":[{"name":"packet","description":"The packet to send","type":[[["Object"]]]}],"meta":{"line":323,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"destroy","description":"Destroys this manager and all its shards.","access":"private","meta":{"line":331,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"_handleSessionLimit","description":"Handles the timeout required if we cannot identify anymore.","access":"private","params":[{"name":"remaining","description":"The amount of remaining identify sessions that can be done today","optional":true,"type":[[["number"]]]},{"name":"resetAfter","description":"The amount of time in which the identify counter resets","optional":true,"type":[[["number"]]]}],"async":true,"meta":{"line":345,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"handlePacket","description":"Processes a packet and queues it if this WebSocketManager is not ready.","access":"private","params":[{"name":"packet","description":"The packet to be handled","optional":true,"type":[[["Object"]]]},{"name":"shard","description":"The shard that will handle this packet","optional":true,"type":[[["WebSocketShard"]]]}],"returns":[[["boolean"]]],"meta":{"line":368,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"checkShardsReady","description":"Checks whether the client is ready to be marked as ready.","access":"private","async":true,"meta":{"line":394,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"triggerClientReady","description":"Causes the client to be marked as ready and emits the ready event.","access":"private","meta":{"line":422,"file":"WebSocketManager.js","path":"src/client/websocket"}}],"meta":{"line":30,"file":"WebSocketManager.js","path":"src/client/websocket"}},{"name":"WebSocketShard","description":"Represents a Shard's WebSocket connection","props":[{"name":"manager","description":"The WebSocketManager of the shard","type":[[["WebSocketManager"]]],"meta":{"line":29,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"id","description":"The ID of the shard","type":[[["number"]]],"meta":{"line":35,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"status","description":"The current status of the shard","type":[[["Status"]]],"meta":{"line":41,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"sequence","description":"The current sequence of the shard","access":"private","type":[[["number"]]],"meta":{"line":48,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"closeSequence","description":"The sequence of the shard after close","access":"private","type":[[["number"]]],"meta":{"line":55,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"sessionID","description":"The current session ID of the shard","access":"private","nullable":true,"type":[[["string"]]],"meta":{"line":62,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"ping","description":"The previous heartbeat ping of the shard","type":[[["number"]]],"meta":{"line":68,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"lastPingTimestamp","description":"The last time a ping was sent (a timestamp)","access":"private","type":[[["number"]]],"meta":{"line":75,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"lastHeartbeatAcked","description":"If we received a heartbeat ack back. Used to identify zombie connections","access":"private","type":[[["boolean"]]],"meta":{"line":82,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"ratelimit","description":"Contains the rate limit queue and metadata","access":"private","type":[[["Object"]]],"meta":{"line":84,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"connection","description":"The WebSocket connection for the current shard","access":"private","nullable":true,"type":[[["WebSocket"]]],"meta":{"line":100,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"inflate","description":"The compression to use","access":"private","nullable":true,"type":[[["Inflate"]]],"meta":{"line":113,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"helloTimeout","description":"The HELLO timeout","access":"private","nullable":true,"type":[[["NodeJSTimeout"]]],"meta":{"line":121,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"eventsAttached","description":"If the manager attached its event handlers on the shard","access":"private","type":[[["boolean"]]],"meta":{"line":129,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"expectedGuilds","description":"A set of guild IDs this shard expects to receive","access":"private","nullable":true,"type":[[["Set","<"],["string",">"]]],"meta":{"line":137,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"readyTimeout","description":"The ready timeout","access":"private","nullable":true,"type":[[["NodeJSTimeout"]]],"meta":{"line":145,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"connectedAt","description":"Time when the WebSocket connection was opened","access":"private","type":[[["number"]]],"meta":{"line":153,"file":"WebSocketShard.js","path":"src/client/websocket"}}],"methods":[{"name":"debug","description":"Emits a debug event.","access":"private","params":[{"name":"message","description":"The debug message","type":[[["string"]]]}],"meta":{"line":167,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"connect","description":"Connects the shard to the gateway.","access":"private","returns":{"types":[[["Promise","<"],["void",">"]]],"description":"A promise that will resolve if the shard turns ready successfully,\nor reject if we couldn't connect"},"meta":{"line":177,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"onOpen","description":"Called whenever a connection is opened to the gateway.","access":"private","meta":{"line":268,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"onMessage","description":"Called whenever a message is received.","access":"private","params":[{"name":"event","description":"Event received","type":[[["MessageEvent"]]]}],"meta":{"line":278,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"onError","description":"Called whenever an error occurs with the WebSocket.","access":"private","params":[{"name":"event","description":"The error that occurred","type":[[["ErrorEvent"]]]}],"meta":{"line":309,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"onClose","description":"Called whenever a connection to the gateway is closed.","access":"private","params":[{"name":"event","description":"Close event that was received","type":[[["CloseEvent"]]]}],"meta":{"line":342,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"onPacket","description":"Called whenever a packet is received.","access":"private","params":[{"name":"packet","description":"The received packet","type":[[["Object"]]]}],"meta":{"line":372,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"checkReady","description":"Checks if the shard can be marked as ready","access":"private","meta":{"line":456,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"setHelloTimeout","description":"Sets the HELLO packet timeout.","access":"private","params":[{"name":"time","description":"If set to -1, it will clear the hello timeout timeout","optional":true,"type":[[["number"]]]}],"meta":{"line":496,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"setHeartbeatTimer","description":"Sets the heartbeat timer for this shard.","access":"private","params":[{"name":"time","description":"If -1, clears the interval, any other number sets an interval","type":[[["number"]]]}],"meta":{"line":517,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"sendHeartbeat","description":"Sends a heartbeat to the WebSocket.\nIf this shard didn't receive a heartbeat last time, it will destroy it and reconnect","access":"private","params":[{"name":"tag","description":"What caused this heartbeat to be sent","optional":true,"default":"'HeartbeatTimer'","type":[[["string"]]]},{"name":"ignoreHeartbeatAck","description":"If we should send the heartbeat forcefully.","optional":true,"type":[[["boolean"]]]}],"meta":{"line":539,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"ackHeartbeat","description":"Acknowledges a heartbeat.","access":"private","meta":{"line":567,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"identify","description":"Identifies the client on the connection.","access":"private","returns":[[["void"]]],"meta":{"line":579,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"identifyNew","description":"Identifies as a new connection on the gateway.","access":"private","meta":{"line":587,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"identifyResume","description":"Resumes a session on the gateway.","access":"private","meta":{"line":611,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"send","description":"Adds a packet to the queue to be sent to the gateway.\nIf you use this method, make sure you understand that you need to provide\na full [Payload](https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-commands).\nDo not use this method if you don't know what you're doing.","params":[{"name":"data","description":"The full packet to send","type":[[["Object"]]]},{"name":"important","description":"If this packet should be added first in queue","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":639,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"_send","description":"Sends data, bypassing the queue.","access":"private","params":[{"name":"data","description":"Packet to send","type":[[["Object"]]]}],"returns":[[["void"]]],"meta":{"line":650,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"processQueue","description":"Processes the current WebSocket queue.","access":"private","returns":[[["void"]]],"meta":{"line":667,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"destroy","description":"Destroys this shard and closes its WebSocket connection.","access":"private","params":[{"name":"options","description":"Options for destroying the shard","optional":true,"default":"{ closeCode: 1000, reset: false, emit: true, log: true }","type":[[["Object"]]]}],"meta":{"line":689,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"_cleanupConnection","description":"Cleans up the WebSocket connection listeners.","access":"private","meta":{"line":753,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"_emitDestroyed","description":"Emits the DESTROYED event on the shard","access":"private","meta":{"line":761,"file":"WebSocketShard.js","path":"src/client/websocket"}}],"events":[{"name":"close","description":"Emitted when a shard's WebSocket closes.","params":[{"name":"event","description":"The received event","type":[[["CloseEvent"]]]}],"meta":{"line":358,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"ready","description":"Emitted when the shard receives the READY payload and is now waiting for guilds","meta":{"line":380,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"resumed","description":"Emitted when the shard resumes successfully","meta":{"line":394,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"allReady","description":"Emitted when the shard is fully ready.\nThis event is emitted if:\n* all guilds were received by this shard\n* the ready timeout expired, and some guilds are unavailable","params":[{"name":"unavailableGuilds","description":"Set of unavailable guilds, if any","nullable":true,"type":[[["Set","<"],["string",">"]]]}],"meta":{"line":467,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"destroyed","description":"Emitted when a shard is destroyed, but no WebSocket connection was present.","meta":{"line":762,"file":"WebSocketShard.js","path":"src/client/websocket"}}],"meta":{"line":21,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"BaseManager","description":"Manages the API methods of a data model and holds its cache.","abstract":true,"props":[{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}},{"name":"cache","description":"Holds the cache for the data model","type":[[["Collection"]]],"meta":{"line":40,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a data entry to a data Object.","params":[{"name":"idOrInstance","description":"The id or instance of something in this Manager","type":[[["string"]],[["Object"]]]}],"returns":{"types":[[["Object"]]],"description":"An instance from this Manager","nullable":true},"meta":{"line":59,"file":"BaseManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a data entry to a instance ID.","params":[{"name":"idOrInstance","description":"The id or instance of something in this Manager","type":[[["string"]],[["Object"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":70,"file":"BaseManager.js","path":"src/managers"}}],"meta":{"line":10,"file":"BaseManager.js","path":"src/managers"}},{"name":"ChannelManager","description":"A manager of channels belonging to a client","extends":[[["BaseManager"]]],"props":[{"name":"cache","description":"The cache of Channels","type":[[["Collection","<"],["Snowflake",", "],["Channel",">"]]],"meta":{"line":16,"file":"ChannelManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a ChannelResolvable to a Channel object.","params":[{"name":"channel","description":"The channel resolvable to resolve","type":[[["ChannelResolvable"]]]}],"returns":{"types":[[["Channel"]]],"nullable":true},"meta":{"line":55,"file":"ChannelManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a ChannelResolvable to a channel ID string.","params":[{"name":"channel","description":"The channel resolvable to resolve","type":[[["ChannelResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":64,"file":"ChannelManager.js","path":"src/managers"}},{"name":"fetch","description":"Obtains a channel from Discord, or the channel cache if it's already available.","examples":["// Fetch a channel by its id\nclient.channels.fetch('222109930545610754')\n .then(channel => console.log(channel.name))\n .catch(console.error);"],"params":[{"name":"id","description":"ID of the channel","type":[[["Snowflake"]]]},{"name":"cache","description":"Whether to cache the new channel object if it isn't already","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":85,"file":"ChannelManager.js","path":"src/managers"}}],"meta":{"line":11,"file":"ChannelManager.js","path":"src/managers"}},{"name":"GuildChannelManager","description":"Manages API methods for GuildChannels and stores their cache.","extends":[[["BaseManager"]]],"props":[{"name":"guild","description":"The guild this Manager belongs to","type":[[["Guild"]]],"meta":{"line":20,"file":"GuildChannelManager.js","path":"src/managers"}},{"name":"cache","description":"The cache of this Manager","type":[[["Collection","<"],["Snowflake",", "],["GuildChannel",">"]]],"meta":{"line":23,"file":"GuildChannelManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a GuildChannelResolvable to a Channel object.","params":[{"name":"channel","description":"The GuildChannel resolvable to resolve","type":[[["GuildChannelResolvable"]]]}],"returns":{"types":[[["GuildChannel"]]],"nullable":true},"meta":{"line":43,"file":"GuildChannelManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a GuildChannelResolvable to a channel ID string.","params":[{"name":"channel","description":"The GuildChannel resolvable to resolve","type":[[["GuildChannelResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":52,"file":"GuildChannelManager.js","path":"src/managers"}},{"name":"create","description":"Creates a new channel in the guild.","examples":["// Create a new text channel\nguild.channels.create('new-general', { reason: 'Needed a cool new channel' })\n .then(console.log)\n .catch(console.error);","// Create a new channel with permission overwrites\nguild.channels.create('new-voice', {\n type: 'voice',\n permissionOverwrites: [\n {\n id: message.author.id,\n deny: ['VIEW_CHANNEL'],\n },\n ],\n})"],"params":[{"name":"name","description":"The name of the new channel","type":[[["string"]]]},{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.type","description":"The type of the new channel, either `text`, `voice`, or `category`","optional":true,"default":"'text'","type":[[["string"]]]},{"name":"options.topic","description":"The topic for the new channel","optional":true,"type":[[["string"]]]},{"name":"options.nsfw","description":"Whether the new channel is nsfw","optional":true,"type":[[["boolean"]]]},{"name":"options.bitrate","description":"Bitrate of the new channel in bits (only voice)","optional":true,"type":[[["number"]]]},{"name":"options.userLimit","description":"Maximum amount of users allowed in the new channel (only voice)","optional":true,"type":[[["number"]]]},{"name":"options.parent","description":"Parent of the new channel","optional":true,"type":[[["ChannelResolvable"]]]},{"name":"options.permissionOverwrites","description":"Permission overwrites of the new channel","optional":true,"type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"options.position","description":"Position of the new channel","optional":true,"type":[[["number"]]]},{"name":"options.rateLimitPerUser","description":"The ratelimit per user for the channel","optional":true,"type":[[["number"]]]},{"name":"options.reason","description":"Reason for creating the channel","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":94,"file":"GuildChannelManager.js","path":"src/managers"}}],"meta":{"line":12,"file":"GuildChannelManager.js","path":"src/managers"}},{"name":"GuildEmojiManager","description":"Manages API methods for GuildEmojis and stores their cache.","extends":[[["BaseManager"]]],"props":[{"name":"guild","description":"The guild this manager belongs to","type":[[["Guild"]]],"meta":{"line":22,"file":"GuildEmojiManager.js","path":"src/managers"}},{"name":"cache","description":"The cache of GuildEmojis","type":[[["Collection","<"],["Snowflake",", "],["GuildEmoji",">"]]],"meta":{"line":25,"file":"GuildEmojiManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"create","description":"Creates a new custom emoji in the guild.","examples":["// Create a new emoji from a url\nguild.emojis.create('https://i.imgur.com/w3duR07.png', 'rip')\n .then(emoji => console.log(`Created new emoji with name ${emoji.name}!`))\n .catch(console.error);","// Create a new emoji from a file on your computer\nguild.emojis.create('./memes/banana.png', 'banana')\n .then(emoji => console.log(`Created new emoji with name ${emoji.name}!`))\n .catch(console.error);"],"params":[{"name":"attachment","description":"The image for the emoji","type":[[["BufferResolvable"]],[["Base64Resolvable"]]]},{"name":"name","description":"The name for the emoji","type":[[["string"]]]},{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.roles","description":"Roles to limit the emoji to","optional":true,"type":[[["Collection","<"],["Snowflake",", "],["Role",">"]],[["Array","<"],["RoleResolvable",">"]]]},{"name":"options.reason","description":"Reason for creating the emoji","optional":true,"type":[[["string"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["Emoji",">"]]],"description":"The created emoji"},"meta":{"line":54,"file":"GuildEmojiManager.js","path":"src/managers"}},{"name":"resolve","description":"Resolves an EmojiResolvable to an Emoji object.","params":[{"name":"emoji","description":"The Emoji resolvable to identify","type":[[["EmojiResolvable"]]]}],"returns":{"types":[[["GuildEmoji"]]],"nullable":true},"meta":{"line":91,"file":"GuildEmojiManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves an EmojiResolvable to an Emoji ID string.","params":[{"name":"emoji","description":"The Emoji resolvable to identify","type":[[["EmojiResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":101,"file":"GuildEmojiManager.js","path":"src/managers"}},{"name":"resolveIdentifier","description":"Resolves an EmojiResolvable to an emoji identifier.","params":[{"name":"emoji","description":"The emoji resolvable to resolve","type":[[["EmojiIdentifierResolvable"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":119,"file":"GuildEmojiManager.js","path":"src/managers"}}],"meta":{"line":15,"file":"GuildEmojiManager.js","path":"src/managers"}},{"name":"GuildEmojiRoleManager","description":"Manages API methods for roles belonging to emojis and stores their cache.","props":[{"name":"emoji","description":"The emoji belonging to this manager","type":[[["GuildEmoji"]]],"meta":{"line":15,"file":"GuildEmojiRoleManager.js","path":"src/managers"}},{"name":"guild","description":"The guild belonging to this manager","type":[[["Guild"]]],"meta":{"line":20,"file":"GuildEmojiRoleManager.js","path":"src/managers"}},{"name":"_roles","description":"The filtered collection of roles of the guild emoji","access":"private","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["Role",">"]]],"meta":{"line":35,"file":"GuildEmojiRoleManager.js","path":"src/managers"}},{"name":"cache","description":"The cache of roles belonging to this emoji","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["Role",">"]]],"meta":{"line":44,"file":"GuildEmojiRoleManager.js","path":"src/managers"}}],"methods":[{"name":"add","description":"Adds a role (or multiple roles) to the list of roles that can use this emoji.","params":[{"name":"roleOrRoles","description":"The role or roles to add","type":[[["RoleResolvable"]],[["Array","<"],["RoleResolvable",">"]],[["Collection","<"],["Snowflake",", "],["Role",">"]]]}],"returns":[[["Promise","<"],["GuildEmoji",">"]]],"meta":{"line":53,"file":"GuildEmojiRoleManager.js","path":"src/managers"}},{"name":"remove","description":"Removes a role (or multiple roles) from the list of roles that can use this emoji.","params":[{"name":"roleOrRoles","description":"The role or roles to remove","type":[[["RoleResolvable"]],[["Array","<"],["RoleResolvable",">"]],[["Collection","<"],["Snowflake",", "],["Role",">"]]]}],"returns":[[["Promise","<"],["GuildEmoji",">"]]],"meta":{"line":71,"file":"GuildEmojiRoleManager.js","path":"src/managers"}},{"name":"set","description":"Sets the role(s) that can use this emoji.","examples":["// Set the emoji's roles to a single role\nguildEmoji.roles.set(['391156570408615936'])\n .then(console.log)\n .catch(console.error);","// Remove all roles from an emoji\nguildEmoji.roles.set([])\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"roles","description":"The roles or role IDs to apply","type":[[["Collection","<"],["Snowflake",", "],["Role",">"]],[["Array","<"],["RoleResolvable",">"]]]}],"returns":[[["Promise","<"],["GuildEmoji",">"]]],"meta":{"line":99,"file":"GuildEmojiRoleManager.js","path":"src/managers"}},{"name":"_patch","description":"Patches the roles for this manager's cache","access":"private","params":[{"name":"roles","description":"The new roles","type":[[["Array","<"],["Snowflake",">"]]]}],"meta":{"line":114,"file":"GuildEmojiRoleManager.js","path":"src/managers"}}],"meta":{"line":9,"file":"GuildEmojiRoleManager.js","path":"src/managers"}},{"name":"GuildManager","description":"Manages API methods for Guilds and stores their cache.","extends":[[["BaseManager"]]],"props":[{"name":"cache","description":"The cache of this Manager","type":[[["Collection","<"],["Snowflake",", "],["Guild",">"]]],"meta":{"line":30,"file":"GuildManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a GuildResolvable to a Guild object.","params":[{"name":"guild","description":"The guild resolvable to identify","type":[[["GuildResolvable"]]]}],"returns":{"types":[[["Guild"]]],"nullable":true},"meta":{"line":86,"file":"GuildManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a GuildResolvable to a Guild ID string.","params":[{"name":"guild","description":"The guild resolvable to identify","type":[[["GuildResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":107,"file":"GuildManager.js","path":"src/managers"}},{"name":"create","description":"Creates a guild.\nThis is only available to bots in fewer than 10 guilds.","params":[{"name":"name","description":"The name of the guild","type":[[["string"]]]},{"name":"options","description":"Options for the creating","optional":true,"type":[[["Object"]]]},{"name":"options.afkChannelID","description":"The ID of the AFK channel","optional":true,"type":[[["number"]]]},{"name":"options.afkTimeout","description":"The AFK timeout in seconds","optional":true,"type":[[["number"]]]},{"name":"options.channels","description":"The channels for this guild","optional":true,"type":[[["Array","<"],["PartialChannelData",">"]]]},{"name":"options.defaultMessageNotifications","description":"The default message notifications\nfor the guild","optional":true,"type":[[["DefaultMessageNotifications"]]]},{"name":"options.explicitContentFilter","description":"The explicit content filter level for the guild","optional":true,"type":[[["ExplicitContentFilterLevel"]]]},{"name":"options.icon","description":"The icon for the guild","optional":true,"default":null,"type":[[["BufferResolvable"]],[["Base64Resolvable"]]]},{"name":"options.region","description":"The region for the server, defaults to the closest one available","optional":true,"type":[[["string"]]]},{"name":"options.roles","description":"The roles for this guild,\nthe first element of this array is used to change properties of the guild's everyone role.","optional":true,"type":[[["Array","<"],["PartialRoleData",">"]]]},{"name":"options.systemChannelID","description":"The ID of the system channel","optional":true,"type":[[["number"]]]},{"name":"options.verificationLevel","description":"The verification level for the guild","optional":true,"type":[[["VerificationLevel"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["Guild",">"]]],"description":"The guild that was created"},"meta":{"line":147,"file":"GuildManager.js","path":"src/managers"}},{"name":"fetch","description":"Obtains a guild from Discord, or the guild cache if it's already available.","examples":["// Fetch a guild by its id\nclient.guilds.fetch('222078108977594368')\n .then(guild => console.log(guild.name))\n .catch(console.error);"],"params":[{"name":"id","description":"ID of the guild","type":[[["Snowflake"]]]},{"name":"cache","description":"Whether to cache the new guild object if it isn't already","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":241,"file":"GuildManager.js","path":"src/managers"}}],"meta":{"line":25,"file":"GuildManager.js","path":"src/managers"}},{"name":"GuildMemberManager","description":"Manages API methods for GuildMembers and stores their cache.","extends":[[["BaseManager"]]],"props":[{"name":"guild","description":"The guild this manager belongs to","type":[[["Guild"]]],"meta":{"line":21,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"cache","description":"The cache of this Manager","type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":24,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a GuildMemberResolvable to a GuildMember object.","params":[{"name":"member","description":"The user that is part of the guild","type":[[["GuildMemberResolvable"]]]}],"returns":{"types":[[["GuildMember"]]],"nullable":true},"meta":{"line":46,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a GuildMemberResolvable to a member ID string.","params":[{"name":"member","description":"The user that is part of the guild","type":[[["GuildMemberResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":59,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"fetch","description":"Fetches member(s) from Discord, even if they're offline.","examples":["// Fetch all members from a guild\nguild.members.fetch()\n .then(console.log)\n .catch(console.error);","// Fetch a single member\nguild.members.fetch('66564597481480192')\n .then(console.log)\n .catch(console.error);","// Fetch a single member without checking cache\nguild.members.fetch({ user, force: true })\n .then(console.log)\n .catch(console.error)","// Fetch a single member without caching\nguild.members.fetch({ user, cache: false })\n .then(console.log)\n .catch(console.error);","// Fetch by an array of users including their presences\nguild.members.fetch({ user: ['66564597481480192', '191615925336670208'], withPresences: true })\n .then(console.log)\n .catch(console.error);","// Fetch by query\nguild.members.fetch({ query: 'hydra', limit: 1 })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"options","description":"If a UserResolvable, the user to fetch.\nIf undefined, fetches all members.\nIf a query, it limits the results to users with similar usernames.","optional":true,"type":[[["UserResolvable"]],[["FetchMemberOptions"]],[["FetchMembersOptions"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]],[["Promise","<"],["Collection","<"],["Snowflake",", "],["GuildMember",">>"]]],"meta":{"line":123,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"prune","description":"Prunes members from the guild based on how long they have been inactive.\nIt's recommended to set options.count to `false` for large guilds.","examples":["// See how many members will be pruned\nguild.members.prune({ dry: true })\n .then(pruned => console.log(`This will prune ${pruned} people!`))\n .catch(console.error);","// Actually prune the members\nguild.members.prune({ days: 1, reason: 'too many people!' })\n .then(pruned => console.log(`I just pruned ${pruned} people!`))\n .catch(console.error);","// Include members with a specified role\nguild.members.prune({ days: 7, roles: ['657259391652855808'] })\n .then(pruned => console.log(`I just pruned ${pruned} people!`))\n .catch(console.error);"],"params":[{"name":"options","description":"Prune options","optional":true,"type":[[["Object"]]]},{"name":"options.days","description":"Number of days of inactivity required to kick","optional":true,"default":7,"type":[[["number"]]]},{"name":"options.dry","description":"Get number of users that will be kicked, without actually kicking them","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.count","description":"Whether or not to return the number of users that have been kicked.","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.roles","description":"Array of roles to bypass the \"...and no roles\" constraint when pruning","optional":true,"default":"[]","type":[[["Array","<"],["RoleResolvable",">"]]]},{"name":"options.reason","description":"Reason for this prune","optional":true,"type":[[["string"]]]}],"returns":{"types":[[["Promise","<("],["number","|"],["null",")>"]]],"description":"The number of members that were/will be kicked"},"meta":{"line":165,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"ban","description":"Bans a user from the guild.","examples":["// Ban a user by ID (or with a user/guild member object)\nguild.members.ban('84484653687267328')\n .then(user => console.log(`Banned ${user.username || user.id || user} from ${guild.name}`))\n .catch(console.error);"],"params":[{"name":"user","description":"The user to ban","type":[[["UserResolvable"]]]},{"name":"options","description":"Options for the ban","optional":true,"type":[[["Object"]]]},{"name":"options.days","description":"Number of days of messages to delete, must be between 0 and 7","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.reason","description":"Reason for banning","optional":true,"type":[[["string"]]]}],"returns":{"types":[[["Promise","<("],["GuildMember","|"],["User","|"],["Snowflake",")>"]]],"description":"Result object will be resolved as specifically as possible.\nIf the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot\nbe resolved, the user ID will be the result."},"meta":{"line":212,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"unban","description":"Unbans a user from the guild.","examples":["// Unban a user by ID (or with a user/guild member object)\nguild.members.unban('84484653687267328')\n .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`))\n .catch(console.error);"],"params":[{"name":"user","description":"The user to unban","type":[[["UserResolvable"]]]},{"name":"reason","description":"Reason for unbanning user","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["User",">"]]],"meta":{"line":241,"file":"GuildMemberManager.js","path":"src/managers"}}],"meta":{"line":14,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"GuildMemberRoleManager","description":"Manages API methods for roles of a GuildMember and stores their cache.","props":[{"name":"member","description":"The GuildMember this manager belongs to","type":[[["GuildMember"]]],"meta":{"line":15,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"guild","description":"The Guild this manager belongs to","type":[[["Guild"]]],"meta":{"line":20,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"_roles","description":"The filtered collection of roles of the member","access":"private","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["Role",">"]]],"meta":{"line":30,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"cache","description":"The roles of this member","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["Role",">"]]],"meta":{"line":40,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"hoist","description":"The role of the member used to hoist them in a separate category in the users list","readonly":true,"nullable":true,"type":[[["Role"]]],"meta":{"line":49,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"color","description":"The role of the member used to set their color","readonly":true,"nullable":true,"type":[[["Role"]]],"meta":{"line":60,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"highest","description":"The role of the member with the highest position","readonly":true,"type":[[["Role"]]],"meta":{"line":71,"file":"GuildMemberRoleManager.js","path":"src/managers"}}],"methods":[{"name":"add","description":"Adds a role (or multiple roles) to the member.","params":[{"name":"roleOrRoles","description":"The role or roles to add","type":[[["RoleResolvable"]],[["Array","<"],["RoleResolvable",">"]],[["Collection","<"],["Snowflake",", "],["Role",">"]]]},{"name":"reason","description":"Reason for adding the role(s)","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":81,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"remove","description":"Removes a role (or multiple roles) from the member.","params":[{"name":"roleOrRoles","description":"The role or roles to remove","type":[[["RoleResolvable"]],[["Array","<"],["RoleResolvable",">"]],[["Collection","<"],["Snowflake",", "],["Role",">"]]]},{"name":"reason","description":"Reason for removing the role(s)","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":110,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"set","description":"Sets the roles applied to the member.","examples":["// Set the member's roles to a single role\nguildMember.roles.set(['391156570408615936'])\n .then(console.log)\n .catch(console.error);","// Remove all the roles from a member\nguildMember.roles.set([])\n .then(member => console.log(`Member roles is now of ${member.roles.cache.size} size`))\n .catch(console.error);"],"params":[{"name":"roles","description":"The roles or role IDs to apply","type":[[["Collection","<"],["Snowflake",", "],["Role",">"]],[["Array","<"],["RoleResolvable",">"]]]},{"name":"reason","description":"Reason for applying the roles","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":150,"file":"GuildMemberRoleManager.js","path":"src/managers"}}],"meta":{"line":9,"file":"GuildMemberRoleManager.js","path":"src/managers"}},{"name":"MessageManager","description":"Manages API methods for Messages and holds their cache.","extends":[[["BaseManager"]]],"props":[{"name":"channel","description":"The channel that the messages belong to","type":[[["TextBasedChannel"]]],"meta":{"line":20,"file":"MessageManager.js","path":"src/managers"}},{"name":"cache","description":"The cache of Messages","type":[[["Collection","<"],["Snowflake",", "],["Message",">"]]],"meta":{"line":23,"file":"MessageManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"fetch","description":"Gets a message, or messages, from this channel.\nThe returned Collection does not contain reaction users of the messages if they were not cached.\nThose need to be fetched separately in such a case.","examples":["// Get message\nchannel.messages.fetch('99539446449315840')\n .then(message => console.log(message.content))\n .catch(console.error);","// Get messages\nchannel.messages.fetch({ limit: 10 })\n .then(messages => console.log(`Received ${messages.size} messages`))\n .catch(console.error);","// Get messages and filter by user ID\nchannel.messages.fetch()\n .then(messages => console.log(`${messages.filter(m => m.author.id === '84484653687267328').size} messages`))\n .catch(console.error);"],"params":[{"name":"message","description":"The ID of the message to fetch, or query parameters.","optional":true,"type":[[["Snowflake"]],[["ChannelLogsQueryOptions"]]]},{"name":"cache","description":"Whether to cache the message(s)","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Message",">"]],[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"meta":{"line":67,"file":"MessageManager.js","path":"src/managers"}},{"name":"fetchPinned","description":"Fetches the pinned messages of this channel and returns a collection of them.\nThe returned Collection does not contain any reaction data of the messages.\nThose need to be fetched separately.","examples":["// Get pinned messages\nchannel.messages.fetchPinned()\n .then(messages => console.log(`Received ${messages.size} messages`))\n .catch(console.error);"],"params":[{"name":"cache","description":"Whether to cache the message(s)","optional":true,"default":true,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"meta":{"line":83,"file":"MessageManager.js","path":"src/managers"}},{"name":"resolve","description":"Resolves a MessageResolvable to a Message object.","params":[{"name":"message","description":"The message resolvable to resolve","type":[[["MessageResolvable"]]]}],"returns":{"types":[[["Message"]]],"nullable":true},"meta":{"line":98,"file":"MessageManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a MessageResolvable to a Message ID string.","params":[{"name":"message","description":"The message resolvable to resolve","type":[[["MessageResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":107,"file":"MessageManager.js","path":"src/managers"}},{"name":"delete","description":"Deletes a message, even if it's not cached.","params":[{"name":"message","description":"The message to delete","type":[[["MessageResolvable"]]]},{"name":"reason","description":"Reason for deleting this message, if it does not belong to the client user","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["void",">"]]],"meta":{"line":122,"file":"MessageManager.js","path":"src/managers"}}],"meta":{"line":13,"file":"MessageManager.js","path":"src/managers"}},{"name":"PresenceManager","description":"Manages API methods for Presences and holds their cache.","extends":[[["BaseManager"]]],"props":[{"name":"cache","description":"The cache of Presences","type":[[["Collection","<"],["Snowflake",", "],["Presence",">"]]],"meta":{"line":15,"file":"PresenceManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a PresenceResolvable to a Presence object.","params":[{"name":"presence","description":"The presence resolvable to resolve","type":[[["PresenceResolvable"]]]}],"returns":{"types":[[["Presence"]]],"nullable":true},"meta":{"line":39,"file":"PresenceManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a PresenceResolvable to a Presence ID string.","params":[{"name":"presence","description":"The presence resolvable to resolve","type":[[["PresenceResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":51,"file":"PresenceManager.js","path":"src/managers"}}],"meta":{"line":10,"file":"PresenceManager.js","path":"src/managers"}},{"name":"ReactionManager","description":"Manages API methods for reactions and holds their cache.","extends":[[["BaseManager"]]],"props":[{"name":"message","description":"The message that this manager belongs to","type":[[["Message"]]],"meta":{"line":18,"file":"ReactionManager.js","path":"src/managers"}},{"name":"cache","description":"The reaction cache of this manager","type":[[["Collection","<("],["string","|"],["Snowflake","), "],["MessageReaction",">"]]],"meta":{"line":25,"file":"ReactionManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a MessageReactionResolvable to a MessageReaction object.","params":[{"name":"reaction","description":"The MessageReaction to resolve","type":[[["MessageReactionResolvable"]]]}],"returns":{"types":[[["MessageReaction"]]],"nullable":true},"meta":{"line":38,"file":"ReactionManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a MessageReactionResolvable to a MessageReaction ID string.","params":[{"name":"reaction","description":"The MessageReaction to resolve","type":[[["MessageReactionResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":47,"file":"ReactionManager.js","path":"src/managers"}},{"name":"removeAll","description":"Removes all reactions from a message.","returns":[[["Promise","<"],["Message",">"]]],"meta":{"line":60,"file":"ReactionManager.js","path":"src/managers"}}],"meta":{"line":10,"file":"ReactionManager.js","path":"src/managers"}},{"name":"ReactionUserManager","description":"Manages API methods for users who reacted to a reaction and stores their cache.","extends":[[["BaseManager"]]],"props":[{"name":"reaction","description":"The reaction that this manager belongs to","type":[[["MessageReaction"]]],"meta":{"line":18,"file":"ReactionUserManager.js","path":"src/managers"}},{"name":"cache","description":"The cache of this manager","type":[[["Collection","<"],["Snowflake",", "],["User",">"]]],"meta":{"line":21,"file":"ReactionUserManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"fetch","description":"Fetches the users that gave this reaction. Resolves with a collection of users, mapped by their IDs.","params":[{"name":"options","description":"Options for fetching the users","optional":true,"type":[[["Object"]]]},{"name":"options.limit","description":"The maximum amount of users to fetch, defaults to 100","optional":true,"default":100,"type":[[["number"]]]},{"name":"options.before","description":"Limit fetching users to those with an id lower than the supplied id","optional":true,"type":[[["Snowflake"]]]},{"name":"options.after","description":"Limit fetching users to those with an id greater than the supplied id","optional":true,"type":[[["Snowflake"]]]}],"async":true,"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["User",">>"]]],"meta":{"line":35,"file":"ReactionUserManager.js","path":"src/managers"}},{"name":"remove","description":"Removes a user from this reaction.","params":[{"name":"user","description":"The user to remove the reaction of","optional":true,"default":"this.client.user","type":[[["UserResolvable"]]]}],"returns":[[["Promise","<"],["MessageReaction",">"]]],"meta":{"line":54,"file":"ReactionUserManager.js","path":"src/managers"}},{"name":"resolve","description":"Resolves a data entry to a data Object.","inherits":"BaseManager#resolve","inherited":true,"params":[{"name":"idOrInstance","description":"The id or instance of something in this Manager","type":[[["string"]],[["Object"]]]}],"returns":{"types":[[["Object"]]],"description":"An instance from this Manager","nullable":true},"meta":{"line":59,"file":"BaseManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a data entry to a instance ID.","inherits":"BaseManager#resolveID","inherited":true,"params":[{"name":"idOrInstance","description":"The id or instance of something in this Manager","type":[[["string"]],[["Object"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":70,"file":"BaseManager.js","path":"src/managers"}}],"meta":{"line":11,"file":"ReactionUserManager.js","path":"src/managers"}},{"name":"RoleManager","description":"Manages API methods for roles and stores their cache.","extends":[[["BaseManager"]]],"props":[{"name":"guild","description":"The guild belonging to this manager","type":[[["Guild"]]],"meta":{"line":19,"file":"RoleManager.js","path":"src/managers"}},{"name":"cache","description":"The role cache of this manager","type":[[["Collection","<"],["Snowflake",", "],["Role",">"]]],"meta":{"line":22,"file":"RoleManager.js","path":"src/managers"}},{"name":"everyone","description":"The `@everyone` role of the guild","readonly":true,"type":[[["Role"]]],"meta":{"line":132,"file":"RoleManager.js","path":"src/managers"}},{"name":"highest","description":"The role with the highest position in the cache","readonly":true,"type":[[["Role"]]],"meta":{"line":141,"file":"RoleManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"fetch","description":"Obtains one or more roles from Discord, or the role cache if they're already available.","examples":["// Fetch all roles from the guild\nmessage.guild.roles.fetch()\n .then(roles => console.log(`There are ${roles.cache.size} roles.`))\n .catch(console.error);","// Fetch a single role\nmessage.guild.roles.fetch('222078108977594368')\n .then(role => console.log(`The role color is: ${role.color}`))\n .catch(console.error);"],"params":[{"name":"id","description":"ID or IDs of the role(s)","optional":true,"type":[[["Snowflake"]]]},{"name":"cache","description":"Whether to cache the new roles objects if it weren't already","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<("],["Role","|"],["RoleManager",")>"]]],"meta":{"line":49,"file":"RoleManager.js","path":"src/managers"}},{"name":"resolve","description":"Resolves a RoleResolvable to a Role object.","params":[{"name":"role","description":"The role resolvable to resolve","type":[[["RoleResolvable"]]]}],"returns":{"types":[[["Role"]]],"nullable":true},"meta":{"line":68,"file":"RoleManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a RoleResolvable to a role ID string.","params":[{"name":"role","description":"The role resolvable to resolve","type":[[["RoleResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":77,"file":"RoleManager.js","path":"src/managers"}},{"name":"create","description":"Creates a new role in the guild with given information.\nThe position will silently reset to 1 if an invalid one is provided, or none.","examples":["// Create a new role\nguild.roles.create()\n .then(console.log)\n .catch(console.error);","// Create a new role with data and a reason\nguild.roles.create({\n data: {\n name: 'Super Cool People',\n color: 'BLUE',\n },\n reason: 'we needed a role for Super Cool People',\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.data","description":"The data to create the role with","optional":true,"type":[[["RoleData"]]]},{"name":"options.reason","description":"Reason for creating this role","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":110,"file":"RoleManager.js","path":"src/managers"}}],"meta":{"line":12,"file":"RoleManager.js","path":"src/managers"}},{"name":"UserManager","description":"Manages API methods for users and stores their cache.","extends":[[["BaseManager"]]],"props":[{"name":"cache","description":"The cache of this manager","type":[[["Collection","<"],["Snowflake",", "],["User",">"]]],"meta":{"line":17,"file":"UserManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a UserResolvable to a User object.","params":[{"name":"user","description":"The UserResolvable to identify","type":[[["UserResolvable"]]]}],"returns":{"types":[[["User"]]],"nullable":true},"meta":{"line":37,"file":"UserManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a UserResolvable to a user ID string.","params":[{"name":"user","description":"The UserResolvable to identify","type":[[["UserResolvable"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":48,"file":"UserManager.js","path":"src/managers"}},{"name":"fetch","description":"Obtains a user from Discord, or the user cache if it's already available.","params":[{"name":"id","description":"ID of the user","type":[[["Snowflake"]]]},{"name":"cache","description":"Whether to cache the new user object if it isn't already","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["User",">"]]],"meta":{"line":61,"file":"UserManager.js","path":"src/managers"}}],"meta":{"line":12,"file":"UserManager.js","path":"src/managers"}},{"name":"VoiceStateManager","description":"Manages API methods for VoiceStates and stores their cache.","extends":[[["BaseManager"]]],"props":[{"name":"guild","description":"The guild this manager belongs to","type":[[["Guild"]]],"meta":{"line":16,"file":"VoiceStateManager.js","path":"src/managers"}},{"name":"cache","description":"The cache of this manager","type":[[["Collection","<"],["Snowflake",", "],["VoiceState",">"]]],"meta":{"line":19,"file":"VoiceStateManager.js","path":"src/managers"}},{"name":"holds","description":"The data structure belonging to this manager","access":"private","readonly":true,"type":[[["function"]]],"meta":{"line":13,"file":"BaseManager.js","path":"src/managers"}},{"name":"client","description":"The client that instantiated this Manager","readonly":true,"type":[[["Client"]]],"meta":{"line":22,"file":"BaseManager.js","path":"src/managers"}},{"name":"cacheType","description":"The type of Collection of the Manager","type":[[["Collection"]]],"meta":{"line":34,"file":"BaseManager.js","path":"src/managers"}}],"methods":[{"name":"resolve","description":"Resolves a data entry to a data Object.","inherits":"BaseManager#resolve","inherited":true,"params":[{"name":"idOrInstance","description":"The id or instance of something in this Manager","type":[[["string"]],[["Object"]]]}],"returns":{"types":[[["Object"]]],"description":"An instance from this Manager","nullable":true},"meta":{"line":59,"file":"BaseManager.js","path":"src/managers"}},{"name":"resolveID","description":"Resolves a data entry to a instance ID.","inherits":"BaseManager#resolveID","inherited":true,"params":[{"name":"idOrInstance","description":"The id or instance of something in this Manager","type":[[["string"]],[["Object"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":70,"file":"BaseManager.js","path":"src/managers"}}],"meta":{"line":9,"file":"VoiceStateManager.js","path":"src/managers"}},{"name":"AsyncQueue","description":"An async queue that preserves the stack and prevents lock-ups.","access":"private","props":[{"name":"promises","description":"The promises array.","access":"private","type":[[["Array","<{"],["promise",": "],["Promise","<"],["void",">, "],["resolve",": "],["function","()}>"]]],"meta":{"line":40,"file":"AsyncQueue.js","path":"src/rest"}},{"name":"remaining","description":"The remaining amount of queued promises","type":[[["number"]]],"meta":{"line":47,"file":"AsyncQueue.js","path":"src/rest"}}],"methods":[{"name":"wait","description":"Waits for last promise and queues a new one.","examples":["const queue = new AsyncQueue();\nasync function request(url, options) {\n await queue.wait();\n try {\n const result = await fetch(url, options);\n // Do some operations with 'result'\n } finally {\n // Remove first entry from the queue and resolve for the next entry\n queue.shift();\n }\n}\n\nrequest(someUrl1, someOptions1); // Will call fetch() immediately\nrequest(someUrl2, someOptions2); // Will call fetch() after the first finished\nrequest(someUrl3, someOptions3); // Will call fetch() after the second finished"],"returns":[[["Promise","<"],["void",">"]]],"meta":{"line":71,"file":"AsyncQueue.js","path":"src/rest"}},{"name":"shift","description":"Frees the queue's lock for the next item to process.","meta":{"line":89,"file":"AsyncQueue.js","path":"src/rest"}}],"meta":{"line":33,"file":"AsyncQueue.js","path":"src/rest"}},{"name":"DiscordAPIError","description":"Represents an error from the Discord API.","extends":[[["Error"]]],"props":[{"name":"method","description":"The HTTP method used for the request","type":[[["string"]]],"meta":{"line":18,"file":"DiscordAPIError.js","path":"src/rest"}},{"name":"path","description":"The path of the request relative to the HTTP endpoint","type":[[["string"]]],"meta":{"line":24,"file":"DiscordAPIError.js","path":"src/rest"}},{"name":"code","description":"HTTP error code returned by Discord","type":[[["number"]]],"meta":{"line":30,"file":"DiscordAPIError.js","path":"src/rest"}},{"name":"httpStatus","description":"The HTTP status code","type":[[["number"]]],"meta":{"line":36,"file":"DiscordAPIError.js","path":"src/rest"}}],"methods":[{"name":"flattenErrors","description":"Flattens an errors object returned from the API into an array.","scope":"static","access":"private","params":[{"name":"obj","description":"Discord errors object","type":[[["Object"]]]},{"name":"key","description":"Used internally to determine key names of nested fields","optional":true,"type":[[["string"]]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":46,"file":"DiscordAPIError.js","path":"src/rest"}}],"meta":{"line":7,"file":"DiscordAPIError.js","path":"src/rest"}},{"name":"HTTPError","description":"Represents a HTTP error from a request.","extends":[[["Error"]]],"props":[{"name":"name","description":"The name of the error","type":[[["string"]]],"meta":{"line":15,"file":"HTTPError.js","path":"src/rest"}},{"name":"code","description":"HTTP error code returned from the request","type":[[["number"]]],"meta":{"line":21,"file":"HTTPError.js","path":"src/rest"}},{"name":"method","description":"The HTTP method used for the request","type":[[["string"]]],"meta":{"line":27,"file":"HTTPError.js","path":"src/rest"}},{"name":"path","description":"The path of the request relative to the HTTP endpoint","type":[[["string"]]],"meta":{"line":33,"file":"HTTPError.js","path":"src/rest"}}],"meta":{"line":7,"file":"HTTPError.js","path":"src/rest"}},{"name":"Shard","description":"A self-contained shard created by the {@link ShardingManager}. Each one has a {@link ChildProcess} that contains\nan instance of the bot and its {@link Client}. When its child process/worker exits for any reason, the shard will\nspawn a new one to replace it as necessary.","extends":[[["EventEmitter"]]],"construct":{"name":"Shard","params":[{"name":"manager","description":"Manager that is creating this shard","type":[[["ShardingManager"]]]},{"name":"id","description":"ID of this shard","type":[[["number"]]]}]},"props":[{"name":"manager","description":"Manager that created the shard","type":[[["ShardingManager"]]],"meta":{"line":31,"file":"Shard.js","path":"src/sharding"}},{"name":"id","description":"ID of the shard in the manager","type":[[["number"]]],"meta":{"line":37,"file":"Shard.js","path":"src/sharding"}},{"name":"args","description":"Arguments for the shard's process (only when {@link ShardingManager#mode} is `process`)","type":[[["Array","<"],["string",">"]]],"meta":{"line":43,"file":"Shard.js","path":"src/sharding"}},{"name":"execArgv","description":"Arguments for the shard's process executable (only when {@link ShardingManager#mode} is `process`)","type":[[["Array","<"],["string",">"]]],"meta":{"line":49,"file":"Shard.js","path":"src/sharding"}},{"name":"env","description":"Environment variables for the shard's process, or workerData for the shard's worker","type":[[["Object"]]],"meta":{"line":55,"file":"Shard.js","path":"src/sharding"}},{"name":"ready","description":"Whether the shard's {@link Client} is ready","type":[[["boolean"]]],"meta":{"line":66,"file":"Shard.js","path":"src/sharding"}},{"name":"process","description":"Process of the shard (if {@link ShardingManager#mode} is `process`)","nullable":true,"type":[[["ChildProcess"]]],"meta":{"line":72,"file":"Shard.js","path":"src/sharding"}},{"name":"worker","description":"Worker of the shard (if {@link ShardingManager#mode} is `worker`)","nullable":true,"type":[[["Worker"]]],"meta":{"line":78,"file":"Shard.js","path":"src/sharding"}},{"name":"_evals","description":"Ongoing promises for calls to {@link Shard#eval}, mapped by the `script` they were called with","access":"private","type":[[["Map","<"],["string",", "],["Promise",">"]]],"meta":{"line":85,"file":"Shard.js","path":"src/sharding"}},{"name":"_fetches","description":"Ongoing promises for calls to {@link Shard#fetchClientValue}, mapped by the `prop` they were called with","access":"private","type":[[["Map","<"],["string",", "],["Promise",">"]]],"meta":{"line":92,"file":"Shard.js","path":"src/sharding"}},{"name":"_exitListener","description":"Listener function for the {@link ChildProcess}' `exit` event","access":"private","type":[[["function"]]],"meta":{"line":99,"file":"Shard.js","path":"src/sharding"}}],"methods":[{"name":"spawn","description":"Forks a child process or creates a worker thread for the shard.\nYou should not need to call this manually.","params":[{"name":"spawnTimeout","description":"The amount in milliseconds to wait until the {@link Client} has become ready\nbefore resolving. (-1 or Infinity for no wait)","optional":true,"default":30000,"type":[[["number"]]]}],"async":true,"returns":[[["Promise","<"],["ChildProcess",">"]]],"meta":{"line":109,"file":"Shard.js","path":"src/sharding"}},{"name":"kill","description":"Immediately kills the shard's process/worker and does not restart it.","meta":{"line":177,"file":"Shard.js","path":"src/sharding"}},{"name":"respawn","description":"Kills and restarts the shard's process/worker.","params":[{"name":"delay","description":"How long to wait between killing the process/worker and restarting it (in milliseconds)","optional":true,"default":500,"type":[[["number"]]]},{"name":"spawnTimeout","description":"The amount in milliseconds to wait until the {@link Client} has become ready\nbefore resolving. (-1 or Infinity for no wait)","optional":true,"default":30000,"type":[[["number"]]]}],"async":true,"returns":[[["Promise","<"],["ChildProcess",">"]]],"meta":{"line":196,"file":"Shard.js","path":"src/sharding"}},{"name":"send","description":"Sends a message to the shard's process/worker.","params":[{"name":"message","description":"Message to send to the shard","type":[["*"]]}],"returns":[[["Promise","<"],["Shard",">"]]],"meta":{"line":207,"file":"Shard.js","path":"src/sharding"}},{"name":"fetchClientValue","description":"Fetches a client property value of the shard.","examples":["shard.fetchClientValue('guilds.cache.size')\n .then(count => console.log(`${count} guilds in shard ${shard.id}`))\n .catch(console.error);"],"params":[{"name":"prop","description":"Name of the client property to get, using periods for nesting","type":[[["string"]]]}],"returns":[[["Promise","<"],["*",">"]]],"meta":{"line":230,"file":"Shard.js","path":"src/sharding"}},{"name":"eval","description":"Evaluates a script or function on the shard, in the context of the {@link Client}.","params":[{"name":"script","description":"JavaScript to run on the shard","type":[[["string"]],[["function"]]]}],"returns":{"types":[[["Promise","<"],["*",">"]]],"description":"Result of the script execution"},"meta":{"line":264,"file":"Shard.js","path":"src/sharding"}},{"name":"_handleMessage","description":"Handles a message received from the child process/worker.","access":"private","params":[{"name":"message","description":"Message received","type":[["*"]]}],"meta":{"line":300,"file":"Shard.js","path":"src/sharding"}},{"name":"_handleExit","description":"Handles the shard's process/worker exiting.","access":"private","params":[{"name":"respawn","description":"Whether to spawn the shard again","optional":true,"default":"this.manager.respawn","type":[[["boolean"]]]}],"meta":{"line":378,"file":"Shard.js","path":"src/sharding"}}],"events":[{"name":"spawn","description":"Emitted upon the creation of the shard's child process/worker.","params":[{"name":"process","description":"Child process/worker that was created","type":[[["ChildProcess"]],[["Worker"]]]}],"meta":{"line":130,"file":"Shard.js","path":"src/sharding"}},{"name":"ready","description":"Emitted upon the shard's {@link Client#ready} event.","meta":{"line":305,"file":"Shard.js","path":"src/sharding"}},{"name":"disconnect","description":"Emitted upon the shard's {@link Client#disconnect} event.","meta":{"line":316,"file":"Shard.js","path":"src/sharding"}},{"name":"reconnecting","description":"Emitted upon the shard's {@link Client#reconnecting} event.","meta":{"line":327,"file":"Shard.js","path":"src/sharding"}},{"name":"message","description":"Emitted upon receiving a message from the child process/worker.","params":[{"name":"message","description":"Message that was received","type":[["*"]]}],"meta":{"line":365,"file":"Shard.js","path":"src/sharding"}},{"name":"death","description":"Emitted upon the shard's child process/worker exiting.","params":[{"name":"process","description":"Child process/worker that exited","type":[[["ChildProcess"]],[["Worker"]]]}],"meta":{"line":379,"file":"Shard.js","path":"src/sharding"}}],"meta":{"line":16,"file":"Shard.js","path":"src/sharding"}},{"name":"ShardClientUtil","description":"Helper class for sharded clients spawned as a child process/worker, such as from a {@link ShardingManager}.\nUtilises IPC to send and receive data to/from the master process and other shards.","construct":{"name":"ShardClientUtil","params":[{"name":"client","description":"Client of the current shard","type":[[["Client"]]]},{"name":"mode","description":"Mode the shard was spawned with","type":[[["ShardingManagerMode"]]]}]},"props":[{"name":"client","description":"Client for the shard","type":[[["Client"]]],"meta":{"line":20,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"mode","description":"Mode the shard was spawned with","type":[[["ShardingManagerMode"]]],"meta":{"line":26,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"parentPort","description":"Message port for the master process (only when {@link ShardClientUtil#mode} is `worker`)","nullable":true,"type":[[["MessagePort"]]],"meta":{"line":32,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"ids","description":"Array of shard IDs of this client","readonly":true,"type":[[["Array","<"],["number",">"]]],"meta":{"line":65,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"count","description":"Total number of shards","readonly":true,"type":[[["number"]]],"meta":{"line":74,"file":"ShardClientUtil.js","path":"src/sharding"}}],"methods":[{"name":"send","description":"Sends a message to the master process.","emits":["Shard#event:message"],"params":[{"name":"message","description":"Message to send","type":[["*"]]}],"returns":[[["Promise","<"],["void",">"]]],"meta":{"line":84,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"fetchClientValues","description":"Fetches a client property value of each shard, or a given shard.","see":["{@link ShardingManager#fetchClientValues}"],"examples":["client.shard.fetchClientValues('guilds.cache.size')\n .then(results => console.log(`${results.reduce((prev, val) => prev + val, 0)} total guilds`))\n .catch(console.error);"],"params":[{"name":"prop","description":"Name of the client property to get, using periods for nesting","type":[[["string"]]]},{"name":"shard","description":"Shard to fetch property from, all if undefined","optional":true,"type":[[["number"]]]}],"returns":[[["Promise","<"],["*",">"]],[["Promise","<"],["Array","<"],["*",">>"]]],"meta":{"line":109,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"broadcastEval","description":"Evaluates a script or function on all shards, or a given shard, in the context of the {@link Client}s.","see":["{@link ShardingManager#broadcastEval}"],"examples":["client.shard.broadcastEval('this.guilds.cache.size')\n .then(results => console.log(`${results.reduce((prev, val) => prev + val, 0)} total guilds`))\n .catch(console.error);"],"params":[{"name":"script","description":"JavaScript to run on each shard","type":[[["string"]],[["function"]]]},{"name":"shard","description":"Shard to run script on, all if undefined","optional":true,"type":[[["number"]]]}],"returns":{"types":[[["Promise","<"],["*",">"]],[["Promise","<"],["Array","<"],["*",">>"]]],"description":"Results of the script execution"},"meta":{"line":139,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"respawnAll","description":"Requests a respawn of all shards.","see":["{@link ShardingManager#respawnAll}"],"params":[{"name":"shardDelay","description":"How long to wait between shards (in milliseconds)","optional":true,"default":5000,"type":[[["number"]]]},{"name":"respawnDelay","description":"How long to wait between killing a shard's process/worker and restarting it\n(in milliseconds)","optional":true,"default":500,"type":[[["number"]]]},{"name":"spawnTimeout","description":"The amount in milliseconds to wait for a shard to become ready before\ncontinuing to another. (-1 or Infinity for no wait)","optional":true,"default":30000,"type":[[["number"]]]}],"returns":{"types":[[["Promise","<"],["void",">"]]],"description":"Resolves upon the message being sent"},"meta":{"line":169,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"_handleMessage","description":"Handles an IPC message.","access":"private","params":[{"name":"message","description":"Message received","type":[["*"]]}],"async":true,"meta":{"line":178,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"_respond","description":"Sends a message to the master process, emitting an error from the client upon failure.","access":"private","params":[{"name":"type","description":"Type of response to send","type":[[["string"]]]},{"name":"message","description":"Message to send","type":[["*"]]}],"meta":{"line":200,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"singleton","description":"Creates/gets the singleton of this class.","scope":"static","params":[{"name":"client","description":"The client to use","type":[[["Client"]]]},{"name":"mode","description":"Mode the shard was spawned with","type":[[["ShardingManagerMode"]]]}],"returns":[[["ShardClientUtil"]]],"meta":{"line":218,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"shardIDForGuildID","description":"Get the shard ID for a given guild ID.","scope":"static","params":[{"name":"guildID","description":"Snowflake guild ID to get shard ID for","type":[[["Snowflake"]]]},{"name":"shardCount","description":"Number of shards","type":[[["number"]]]}],"returns":[[["number"]]],"meta":{"line":236,"file":"ShardClientUtil.js","path":"src/sharding"}}],"meta":{"line":10,"file":"ShardClientUtil.js","path":"src/sharding"}},{"name":"ShardingManager","description":"This is a utility class that makes multi-process sharding of a bot an easy and painless experience.\nIt works by spawning a self-contained {@link ChildProcess} or {@link Worker} for each individual shard, each\ncontaining its own instance of your bot's {@link Client}. They all have a line of communication with the master\nprocess, and there are several useful methods that utilise it in order to simplify tasks that are normally difficult\nwith sharding. It can spawn a specific number of shards or the amount that Discord suggests for the bot, and takes a\npath to your main bot script to launch for each one.","extends":[[["EventEmitter"]]],"construct":{"name":"ShardingManager","params":[{"name":"file","description":"Path to your shard script file","type":[[["string"]]]},{"name":"options","description":"Options for the sharding manager","optional":true,"type":[[["Object"]]]},{"name":"options.totalShards","description":"Number of total shards of all shard managers or \"auto\"","optional":true,"default":"'auto'","type":[[["string"]],[["number"]]]},{"name":"options.shardList","description":"List of shards to spawn or \"auto\"","optional":true,"default":"'auto'","type":[[["string"]],[["Array","<"],["number",">"]]]},{"name":"options.mode","description":"Which mode to use for shards","optional":true,"default":"'process'","type":[[["ShardingManagerMode"]]]},{"name":"options.respawn","description":"Whether shards should automatically respawn upon exiting","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.shardArgs","description":"Arguments to pass to the shard script when spawning\n(only available when using the `process` mode)","optional":true,"default":"[]","type":[[["Array","<"],["string",">"]]]},{"name":"options.execArgv","description":"Arguments to pass to the shard script executable when spawning\n(only available when using the `process` mode)","optional":true,"default":"[]","type":[[["Array","<"],["string",">"]]]},{"name":"options.token","description":"Token to use for automatic shard count and passing to shards","optional":true,"type":[[["string"]]]}]},"props":[{"name":"file","description":"Path to the shard script file","type":[[["string"]]],"meta":{"line":58,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"shardList","description":"List of shards this sharding manager spawns","type":[[["string"]],[["Array","<"],["number",">"]]],"meta":{"line":68,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"totalShards","description":"Amount of shards that all sharding managers spawn in total","type":[[["number"]]],"meta":{"line":88,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"mode","description":"Mode for shards to spawn with","type":[[["ShardingManagerMode"]]],"meta":{"line":103,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"respawn","description":"Whether shards should automatically respawn upon exiting","type":[[["boolean"]]],"meta":{"line":112,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"shardArgs","description":"An array of arguments to pass to shards (only when {@link ShardingManager#mode} is `process`)","type":[[["Array","<"],["string",">"]]],"meta":{"line":118,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"execArgv","description":"An array of arguments to pass to the executable (only when {@link ShardingManager#mode} is `process`)","type":[[["Array","<"],["string",">"]]],"meta":{"line":124,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"token","description":"Token to use for obtaining the automatic shard count, and passing to shards","nullable":true,"type":[[["string"]]],"meta":{"line":130,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"shards","description":"A collection of shards that this manager has spawned","type":[[["Collection","<"],["number",", "],["Shard",">"]]],"meta":{"line":136,"file":"ShardingManager.js","path":"src/sharding"}}],"methods":[{"name":"createShard","description":"Creates a single shard.\nUsing this method is usually not necessary if you use the spawn method.","params":[{"name":"id","description":"ID of the shard to create\nThis is usually not necessary to manually specify.","optional":true,"default":"this.shards.size","type":[[["number"]]]}],"returns":{"types":[[["Shard"]]],"description":"Note that the created shard needs to be explicitly spawned using its spawn method."},"meta":{"line":150,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"spawn","description":"Spawns multiple shards.","params":[{"name":"amount","description":"Number of shards to spawn","optional":true,"default":"this.totalShards","type":[[["number"]],[["string"]]]},{"name":"delay","description":"How long to wait in between spawning each shard (in milliseconds)","optional":true,"default":5500,"type":[[["number"]]]},{"name":"spawnTimeout","description":"The amount in milliseconds to wait until the {@link Client} has become ready\nbefore resolving. (-1 or Infinity for no wait)","optional":true,"default":30000,"type":[[["number"]]]}],"async":true,"returns":[[["Promise","<"],["Collection","<"],["number",", "],["Shard",">>"]]],"meta":{"line":170,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"broadcast","description":"Sends a message to all shards.","params":[{"name":"message","description":"Message to be sent to the shards","type":[["*"]]}],"returns":[[["Promise","<"],["Array","<"],["Shard",">>"]]],"meta":{"line":218,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"broadcastEval","description":"Evaluates a script on all shards, or a given shard, in the context of the {@link Client}s.","params":[{"name":"script","description":"JavaScript to run on each shard","type":[[["string"]]]},{"name":"shard","description":"Shard to run on, all if undefined","optional":true,"type":[[["number"]]]}],"returns":{"types":[[["Promise","<"],["*",">"]],[["Promise","<"],["Array","<"],["*",">>"]]],"description":"Results of the script execution"},"meta":{"line":230,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"fetchClientValues","description":"Fetches a client property value of each shard, or a given shard.","examples":["manager.fetchClientValues('guilds.cache.size')\n .then(results => console.log(`${results.reduce((prev, val) => prev + val, 0)} total guilds`))\n .catch(console.error);"],"params":[{"name":"prop","description":"Name of the client property to get, using periods for nesting","type":[[["string"]]]},{"name":"shard","description":"Shard to fetch property from, all if undefined","optional":true,"type":[[["number"]]]}],"returns":[[["Promise","<"],["*",">"]],[["Promise","<"],["Array","<"],["*",">>"]]],"meta":{"line":244,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"_performOnShards","description":"Runs a method with given arguments on all shards, or a given shard.","access":"private","params":[{"name":"method","description":"Method name to run on each shard","type":[[["string"]]]},{"name":"args","description":"Arguments to pass through to the method call","type":[[["Array","<"],["*",">"]]]},{"name":"shard","description":"Shard to run on, all if undefined","optional":true,"type":[[["number"]]]}],"returns":{"types":[[["Promise","<"],["*",">"]],[["Promise","<"],["Array","<"],["*",">>"]]],"description":"Results of the method execution"},"meta":{"line":256,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"respawnAll","description":"Kills all running shards and respawns them.","params":[{"name":"shardDelay","description":"How long to wait between shards (in milliseconds)","optional":true,"default":5000,"type":[[["number"]]]},{"name":"respawnDelay","description":"How long to wait between killing a shard's process and restarting it\n(in milliseconds)","optional":true,"default":500,"type":[[["number"]]]},{"name":"spawnTimeout","description":"The amount in milliseconds to wait for a shard to become ready before\ncontinuing to another. (-1 or Infinity for no wait)","optional":true,"default":30000,"type":[[["number"]]]}],"async":true,"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Shard",">>"]]],"meta":{"line":279,"file":"ShardingManager.js","path":"src/sharding"}}],"events":[{"name":"shardCreate","description":"Emitted upon creating a shard.","params":[{"name":"shard","description":"Shard that was created","type":[[["Shard"]]]}],"meta":{"line":153,"file":"ShardingManager.js","path":"src/sharding"}}],"meta":{"line":20,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"APIMessage","description":"Represents a message to be sent to the API.","construct":{"name":"APIMessage","params":[{"name":"target","description":"The target for this message to be sent to","type":[[["MessageTarget"]]]},{"name":"options","description":"Options passed in from send","type":[[["MessageOptions"]],[["WebhookMessageOptions"]]]}]},"props":[{"name":"target","description":"The target for this message to be sent to","type":[[["MessageTarget"]]],"meta":{"line":24,"file":"APIMessage.js","path":"src/structures"}},{"name":"options","description":"Options passed in from send","type":[[["MessageOptions"]],[["WebhookMessageOptions"]]],"meta":{"line":30,"file":"APIMessage.js","path":"src/structures"}},{"name":"data","description":"Data sendable to the API","nullable":true,"type":[[["Object"]]],"meta":{"line":36,"file":"APIMessage.js","path":"src/structures"}},{"name":"files","description":"Files sendable to the API","nullable":true,"type":[[["Array","<"],["Object",">"]]],"meta":{"line":42,"file":"APIMessage.js","path":"src/structures"}},{"name":"isWebhook","description":"Whether or not the target is a webhook","readonly":true,"type":[[["boolean"]]],"meta":{"line":50,"file":"APIMessage.js","path":"src/structures"}},{"name":"isUser","description":"Whether or not the target is a user","readonly":true,"type":[[["boolean"]]],"meta":{"line":61,"file":"APIMessage.js","path":"src/structures"}},{"name":"isMessage","description":"Whether or not the target is a message","readonly":true,"type":[[["boolean"]]],"meta":{"line":72,"file":"APIMessage.js","path":"src/structures"}}],"methods":[{"name":"makeContent","description":"Makes the content of this message.","returns":{"types":[[["string"]],[["Array","<"],["string",">"]]],"nullable":true},"meta":{"line":81,"file":"APIMessage.js","path":"src/structures"}},{"name":"resolveData","description":"Resolves data.","returns":[[["APIMessage"]]],"meta":{"line":146,"file":"APIMessage.js","path":"src/structures"}},{"name":"resolveFiles","description":"Resolves files.","async":true,"returns":[[["Promise","<"],["APIMessage",">"]]],"meta":{"line":219,"file":"APIMessage.js","path":"src/structures"}},{"name":"split","description":"Converts this APIMessage into an array of APIMessages for each split content","returns":[[["Array","<"],["APIMessage",">"]]],"meta":{"line":249,"file":"APIMessage.js","path":"src/structures"}},{"name":"resolveFile","description":"Resolves a single file into an object sendable to the API.","scope":"static","params":[{"name":"fileLike","description":"Something that could be resolved to a file","type":[[["BufferResolvable"]],[["Stream"]],[["FileOptions"]],[["MessageAttachment"]]]}],"async":true,"returns":[[["Object"]]],"meta":{"line":281,"file":"APIMessage.js","path":"src/structures"}},{"name":"partitionMessageAdditions","description":"Partitions embeds and attachments.","scope":"static","params":[{"name":"items","description":"Items to partition","type":[[["Array","<("],["MessageEmbed","|"],["MessageAttachment",")>"]]]}],"returns":[[["Array","<"],["Array","<"],["MessageEmbed",">, "],["Array","<"],["MessageAttachment",">>"]]],"meta":{"line":318,"file":"APIMessage.js","path":"src/structures"}},{"name":"transformOptions","description":"Transforms the user-level arguments into a final options object. Passing a transformed options object alone into\nthis method will keep it the same, allowing for the reuse of the final options object.","scope":"static","params":[{"name":"content","description":"Content to send","optional":true,"type":[[["StringResolvable"]]]},{"name":"options","description":"Options to use","optional":true,"default":"{}","type":[[["MessageOptions"]],[["WebhookMessageOptions"]],[["MessageAdditions"]]]},{"name":"extra","description":"Extra options to add onto transformed options","optional":true,"default":"{}","type":[[["MessageOptions"]],[["WebhookMessageOptions"]]]},{"name":"isWebhook","description":"Whether or not to use WebhookMessageOptions as the result","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["MessageOptions"]],[["WebhookMessageOptions"]]],"meta":{"line":341,"file":"APIMessage.js","path":"src/structures"}},{"name":"create","description":"Creates an `APIMessage` from user-level arguments.","scope":"static","params":[{"name":"target","description":"Target to send to","type":[[["MessageTarget"]]]},{"name":"content","description":"Content to send","optional":true,"type":[[["StringResolvable"]]]},{"name":"options","description":"Options to use","optional":true,"default":"{}","type":[[["MessageOptions"]],[["WebhookMessageOptions"]],[["MessageAdditions"]]]},{"name":"extra","description":"Extra options to add onto transformed options","optional":true,"default":"{}","type":[[["MessageOptions"]],[["WebhookMessageOptions"]]]}],"returns":[[["MessageOptions"]],[["WebhookMessageOptions"]]],"meta":{"line":376,"file":"APIMessage.js","path":"src/structures"}}],"meta":{"line":14,"file":"APIMessage.js","path":"src/structures"}},{"name":"Base","description":"Represents a data model that is identifiable by a Snowflake (i.e. Discord API data models).","abstract":true,"props":[{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"meta":{"line":9,"file":"Base.js","path":"src/structures"}},{"name":"BaseGuildEmoji","description":"Parent class for {@link GuildEmoji} and {@link GuildPreviewEmoji}.","extends":[[["Emoji"]]],"abstract":true,"props":[{"name":"guild","description":"The guild this emoji is a part of","type":[[["Guild"]],[["GuildPreview"]]],"meta":{"line":18,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"_roles","description":"Array of role ids this emoji is active for","access":"private","type":[[["Array","<"],["Snowflake",">"]]],"meta":{"line":24,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"requiresColons","description":"Whether or not this emoji requires colons surrounding it","nullable":true,"type":[[["boolean"]]],"meta":{"line":43,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"managed","description":"Whether this emoji is managed by an external service","nullable":true,"type":[[["boolean"]]],"meta":{"line":51,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"available","description":"Whether this emoji is available","nullable":true,"type":[[["boolean"]]],"meta":{"line":59,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"animated","description":"Whether this emoji is animated","type":[[["boolean"]]],"meta":{"line":17,"file":"Emoji.js","path":"src/structures"}},{"name":"name","description":"The name of this emoji","type":[[["string"]]],"meta":{"line":23,"file":"Emoji.js","path":"src/structures"}},{"name":"id","description":"The ID of this emoji","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":29,"file":"Emoji.js","path":"src/structures"}},{"name":"deleted","description":"Whether this emoji has been deleted","type":[[["boolean"]]],"meta":{"line":35,"file":"Emoji.js","path":"src/structures"}},{"name":"identifier","description":"The identifier of this emoji, used for message reactions","readonly":true,"type":[[["string"]]],"meta":{"line":43,"file":"Emoji.js","path":"src/structures"}},{"name":"url","description":"The URL to the emoji file if its a custom emoji","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":53,"file":"Emoji.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["number"]]],"meta":{"line":63,"file":"Emoji.js","path":"src/structures"}},{"name":"createdAt","description":"The time the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":73,"file":"Emoji.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"toString","description":"When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord\ninstead of the Emoji object.","inherits":"Emoji#toString","inherited":true,"examples":["// Send a custom emoji from a guild:\nconst emoji = guild.emojis.cache.first();\nmsg.reply(`Hello! ${emoji}`);","// Send the emoji used in a reaction to the channel the reaction is part of\nreaction.message.channel.send(`The emoji used was: ${reaction.emoji}`);"],"returns":[[["string"]]],"meta":{"line":90,"file":"Emoji.js","path":"src/structures"}}],"meta":{"line":10,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"CategoryChannel","description":"Represents a guild category channel on Discord.","extends":[[["GuildChannel"]]],"props":[{"name":"children","description":"Channels that are a part of this category","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildChannel",">"]]],"meta":{"line":15,"file":"CategoryChannel.js","path":"src/structures"}},{"name":"guild","description":"The guild the channel is in","type":[[["Guild"]]],"meta":{"line":34,"file":"GuildChannel.js","path":"src/structures"}},{"name":"name","description":"The name of the guild channel","type":[[["string"]]],"meta":{"line":44,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rawPosition","description":"The raw position of the channel from discord","type":[[["number"]]],"meta":{"line":50,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parentID","description":"The ID of the category parent of this channel","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":56,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionOverwrites","description":"A map of permission overwrites in this channel for roles and users","type":[[["Collection","<"],["Snowflake",", "],["PermissionOverwrites",">"]]],"meta":{"line":62,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parent","description":"The category parent of this channel","readonly":true,"nullable":true,"type":[[["CategoryChannel"]]],"meta":{"line":75,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionsLocked","description":"If the permissionOverwrites match the parent channel, null if no parent","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":84,"file":"GuildChannel.js","path":"src/structures"}},{"name":"position","description":"The position of the channel","readonly":true,"type":[[["number"]]],"meta":{"line":102,"file":"GuildChannel.js","path":"src/structures"}},{"name":"members","description":"A collection of members that can see this channel, mapped by their ID","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":283,"file":"GuildChannel.js","path":"src/structures"}},{"name":"deletable","description":"Whether the channel is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":573,"file":"GuildChannel.js","path":"src/structures"}},{"name":"manageable","description":"Whether the channel is manageable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":582,"file":"GuildChannel.js","path":"src/structures"}},{"name":"viewable","description":"Whether the channel is viewable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":599,"file":"GuildChannel.js","path":"src/structures"}},{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"permissionsFor","description":"Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.","inherits":"GuildChannel#permissionsFor","inherited":true,"params":[{"name":"memberOrRole","description":"The member or role to obtain the overall permissions for","type":[[["GuildMemberResolvable"]],[["RoleResolvable"]]]}],"returns":{"types":[[["Readonly","<"],["Permissions",">"]]],"nullable":true},"meta":{"line":112,"file":"GuildChannel.js","path":"src/structures"}},{"name":"memberPermissions","description":"Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#memberPermissions","inherited":true,"params":[{"name":"member","description":"The member to obtain the overall permissions for","type":[[["GuildMember"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":152,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rolePermissions","description":"Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#rolePermissions","inherited":true,"params":[{"name":"role","description":"The role to obtain the overall permissions for","type":[[["Role"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":178,"file":"GuildChannel.js","path":"src/structures"}},{"name":"overwritePermissions","description":"Replaces the permission overwrites in this channel.","inherits":"GuildChannel#overwritePermissions","inherited":true,"examples":["channel.overwritePermissions([\n {\n id: message.author.id,\n deny: ['VIEW_CHANNEL'],\n },\n], 'Needed to change permissions');"],"params":[{"name":"overwrites","description":"Permission overwrites the channel gets updated with","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"reason","description":"Reason for updating the channel overwrites","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":206,"file":"GuildChannel.js","path":"src/structures"}},{"name":"updateOverwrite","description":"Updates Overwrites for a user or role in this channel. (creates if non-existent)","inherits":"GuildChannel#updateOverwrite","inherited":true,"examples":["// Update or Create permission overwrites for a message author\nmessage.channel.updateOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":229,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createOverwrite","description":"Overwrites the permissions for a user or role in this channel. (replaces if existent)","inherits":"GuildChannel#createOverwrite","inherited":true,"examples":["// Create or Replace permissions overwrites for a message author\nmessage.channel.createOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":252,"file":"GuildChannel.js","path":"src/structures"}},{"name":"lockPermissions","description":"Locks in the permission overwrites from the parent channel.","inherits":"GuildChannel#lockPermissions","inherited":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":272,"file":"GuildChannel.js","path":"src/structures"}},{"name":"edit","description":"Edits the channel.","inherits":"GuildChannel#edit","inherited":true,"examples":["// Edit a channel\nchannel.edit({ name: 'new-channel' })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"data","description":"The new data for the channel","type":[[["ChannelData"]]]},{"name":"reason","description":"Reason for editing this channel","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":321,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setName","description":"Sets a new name for the guild channel.","inherits":"GuildChannel#setName","inherited":true,"examples":["// Set a new channel name\nchannel.setName('not_general')\n .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"The new name for the guild channel","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":386,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setParent","description":"Sets the category parent of this channel.","inherits":"GuildChannel#setParent","inherited":true,"examples":["// Add a parent to a channel\nmessage.channel.setParent('355908108431917066', { lockPermissions: false })\n .then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))\n .catch(console.error);"],"params":[{"name":"channel","description":"Parent channel","type":[[["CategoryChannel"]],[["Snowflake"]]]},{"name":"options","description":"Options to pass","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.lockPermissions","description":"Lock the permissions to what the parent's permissions are","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for modifying the parent of this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":403,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setTopic","description":"Sets a new topic for the guild channel.","inherits":"GuildChannel#setTopic","inherited":true,"examples":["// Set a new channel topic\nchannel.setTopic('needs more rate limiting')\n .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))\n .catch(console.error);"],"params":[{"name":"topic","description":"The new topic for the guild channel","nullable":true,"type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's topic","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":425,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setPosition","description":"Sets a new position for the guild channel.","inherits":"GuildChannel#setPosition","inherited":true,"examples":["// Set a new channel position\nchannel.setPosition(2)\n .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))\n .catch(console.error);"],"params":[{"name":"position","description":"The new position for the guild channel","type":[[["number"]]]},{"name":"options","description":"Options for setting position","optional":true,"type":[[["Object"]]]},{"name":"options.relative","description":"Change the position relative to its current value","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for changing the position","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":442,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createInvite","description":"Creates an invite to this guild channel.","inherits":"GuildChannel#createInvite","inherited":true,"examples":["// Create an invite to a channel\nchannel.createInvite()\n .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n .catch(console.error);"],"params":[{"name":"options","description":"Options for the invite","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.temporary","description":"Whether members that joined via the invite should be automatically\nkicked after 24 hours if they have not yet received a role","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.maxAge","description":"How long the invite should last (in seconds, 0 for forever)","optional":true,"default":86400,"type":[[["number"]]]},{"name":"options.maxUses","description":"Maximum number of uses","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.unique","description":"Create a unique invite, or use an existing one with similar settings","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for creating this","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Invite",">"]]],"meta":{"line":475,"file":"GuildChannel.js","path":"src/structures"}},{"name":"fetchInvites","description":"Fetches a collection of invites to this guild channel.\nResolves with a collection mapping invites by their codes.","inherits":"GuildChannel#fetchInvites","inherited":true,"async":true,"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Invite",">>"]]],"meta":{"line":495,"file":"GuildChannel.js","path":"src/structures"}},{"name":"clone","description":"Clones this channel.","inherits":"GuildChannel#clone","inherited":true,"params":[{"name":"options","description":"The options","optional":true,"type":[[["Object"]]]},{"name":"options.name","description":"Name of the new channel","optional":true,"default":"this.name","type":[[["string"]]]},{"name":"options.permissionOverwrites","description":"Permission overwrites of the new channel","optional":true,"default":"this.permissionOverwrites","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"options.type","description":"Type of the new channel","optional":true,"default":"this.type","type":[[["string"]]]},{"name":"options.topic","description":"Topic of the new channel (only text)","optional":true,"default":"this.topic","type":[[["string"]]]},{"name":"options.nsfw","description":"Whether the new channel is nsfw (only text)","optional":true,"default":"this.nsfw","type":[[["boolean"]]]},{"name":"options.bitrate","description":"Bitrate of the new channel in bits (only voice)","optional":true,"default":"this.bitrate","type":[[["number"]]]},{"name":"options.userLimit","description":"Maximum amount of users allowed in the new channel (only voice)","optional":true,"default":"this.userLimit","type":[[["number"]]]},{"name":"options.rateLimitPerUser","description":"Ratelimit per user for the new channel (only text)","optional":true,"default":"this.rateLimitPerUser","type":[[["number"]]]},{"name":"options.parent","description":"Parent of the new channel","optional":true,"default":"this.parent","type":[[["ChannelResolvable"]]]},{"name":"options.reason","description":"Reason for cloning this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":522,"file":"GuildChannel.js","path":"src/structures"}},{"name":"equals","description":"Checks if this channel has the same type, topic, position, name, overwrites and ID as another channel.\nIn most cases, a simple `channel.id === channel2.id` will do, and is much faster too.","inherits":"GuildChannel#equals","inherited":true,"params":[{"name":"channel","description":"Channel to compare with","type":[[["GuildChannel"]]]}],"returns":[[["boolean"]]],"meta":{"line":548,"file":"GuildChannel.js","path":"src/structures"}},{"name":"delete","description":"Deletes this channel.","inherits":"GuildChannel#delete","inherited":true,"examples":["// Delete the channel\nchannel.delete('making room for new channels')\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"reason","description":"Reason for deleting this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":616,"file":"GuildChannel.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.","inherits":"Channel#toString","inherited":true,"examples":["// Logs: Hello from <#123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":72,"file":"Channel.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this channel.","inherits":"Channel#fetch","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":97,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","inherits":"Channel#isText","inherited":true,"returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":9,"file":"CategoryChannel.js","path":"src/structures"}},{"name":"Channel","description":"Represents any channel on Discord.","extends":[[["Base"]]],"abstract":true,"props":[{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"toString","description":"When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.","examples":["// Logs: Hello from <#123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":72,"file":"Channel.js","path":"src/structures"}},{"name":"delete","description":"Deletes this channel.","examples":["// Delete the channel\nchannel.delete()\n .then(console.log)\n .catch(console.error);"],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":85,"file":"Channel.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this channel.","params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":97,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":12,"file":"Channel.js","path":"src/structures"}},{"name":"ClientApplication","description":"Represents a Client OAuth2 Application.","extends":[[["Application"]]],"props":[{"name":"cover","description":"The app's cover image","nullable":true,"type":[[["string"]]],"meta":{"line":18,"file":"ClientApplication.js","path":"src/structures"}},{"name":"rpcOrigins","description":"The app's RPC origins, if enabled","type":[[["Array","<"],["string",">"]]],"meta":{"line":24,"file":"ClientApplication.js","path":"src/structures"}},{"name":"botRequireCodeGrant","description":"If this app's bot requires a code grant when using the OAuth2 flow","nullable":true,"type":[[["boolean"]]],"meta":{"line":30,"file":"ClientApplication.js","path":"src/structures"}},{"name":"botPublic","description":"If this app's bot is public","nullable":true,"type":[[["boolean"]]],"meta":{"line":36,"file":"ClientApplication.js","path":"src/structures"}},{"name":"owner","description":"The owner of this OAuth application","type":[[["User"]],[["Team"]]],"meta":{"line":42,"file":"ClientApplication.js","path":"src/structures"}},{"name":"id","description":"The ID of the app","type":[[["Snowflake"]]],"meta":{"line":24,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"name","description":"The name of the app","type":[[["string"]]],"meta":{"line":30,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"description","description":"The app's description","type":[[["string"]]],"meta":{"line":36,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"icon","description":"The app's icon hash","type":[[["string"]]],"meta":{"line":42,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"createdTimestamp","description":"The timestamp the app was created at","readonly":true,"type":[[["number"]]],"meta":{"line":50,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"createdAt","description":"The time the app was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":59,"file":"Application.js","path":"src/structures/interfaces"}}],"methods":[{"name":"iconURL","description":"A link to the application's icon.","inherits":"Application#iconURL","inherited":true,"params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"description":"URL to the icon","nullable":true},"meta":{"line":68,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"coverImage","description":"A link to this application's cover image.","inherits":"Application#coverImage","inherited":true,"params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"description":"URL to the cover image","nullable":true},"meta":{"line":78,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"fetchAssets","description":"Gets the clients rich presence assets.","inherits":"Application#fetchAssets","inherited":true,"returns":[[["Promise","<"],["Array","<"],["ApplicationAsset",">>"]]],"meta":{"line":95,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the application's name instead of the\nOauth2Application object.","inherits":"Application#toString","inherited":true,"examples":["// Logs: Application name: My App\nconsole.log(`Application name: ${application}`);"],"returns":[[["string"]]],"meta":{"line":116,"file":"Application.js","path":"src/structures/interfaces"}}],"meta":{"line":10,"file":"ClientApplication.js","path":"src/structures"}},{"name":"ClientPresence","construct":{"name":"ClientPresence","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the client presence","optional":true,"default":"{}","type":[[["Object"]]]}]},"meta":{"line":13,"file":"ClientPresence.js","path":"src/structures"}},{"name":"ClientUser","description":"Represents the logged in client's Discord user.","extends":[[["User"]]],"props":[{"name":"verified","description":"Whether or not this account has been verified","type":[[["boolean"]]],"meta":{"line":24,"file":"ClientUser.js","path":"src/structures"}},{"name":"mfaEnabled","description":"If the bot's {@link ClientApplication#owner Owner} has MFA enabled on their account","nullable":true,"type":[[["boolean"]]],"meta":{"line":32,"file":"ClientUser.js","path":"src/structures"}},{"name":"presence","description":"ClientUser's presence","readonly":true,"type":[[["Presence"]]],"meta":{"line":45,"file":"ClientUser.js","path":"src/structures"}},{"name":"id","description":"The ID of the user","type":[[["Snowflake"]]],"meta":{"line":28,"file":"User.js","path":"src/structures"}},{"name":"username","description":"The username of the user","nullable":true,"type":[[["string"]]],"meta":{"line":43,"file":"User.js","path":"src/structures"}},{"name":"bot","description":"Whether or not the user is a bot","type":[[["boolean"]]],"meta":{"line":53,"file":"User.js","path":"src/structures"}},{"name":"discriminator","description":"A discriminator based on username for the user","nullable":true,"type":[[["string"]]],"meta":{"line":61,"file":"User.js","path":"src/structures"}},{"name":"avatar","description":"The ID of the user's avatar","nullable":true,"type":[[["string"]]],"meta":{"line":71,"file":"User.js","path":"src/structures"}},{"name":"system","description":"Whether the user is an Official Discord System user (part of the urgent message system)","nullable":true,"type":[[["boolean"]]],"meta":{"line":81,"file":"User.js","path":"src/structures"}},{"name":"locale","description":"The locale of the user's client (ISO 639-1)","nullable":true,"type":[[["string"]]],"meta":{"line":89,"file":"User.js","path":"src/structures"}},{"name":"flags","description":"The flags for this user","nullable":true,"type":[[["UserFlags"]]],"meta":{"line":97,"file":"User.js","path":"src/structures"}},{"name":"lastMessageID","description":"The ID of the last message sent by the user, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":104,"file":"User.js","path":"src/structures"}},{"name":"lastMessageChannelID","description":"The ID of the channel for the last message sent by the user, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":110,"file":"User.js","path":"src/structures"}},{"name":"partial","description":"Whether this User is a partial","readonly":true,"type":[[["boolean"]]],"meta":{"line":118,"file":"User.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the user was created at","readonly":true,"type":[[["number"]]],"meta":{"line":127,"file":"User.js","path":"src/structures"}},{"name":"createdAt","description":"The time the user was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":136,"file":"User.js","path":"src/structures"}},{"name":"lastMessage","description":"The Message object of the last message sent by the user, if one was sent","readonly":true,"nullable":true,"type":[[["Message"]]],"meta":{"line":145,"file":"User.js","path":"src/structures"}},{"name":"defaultAvatarURL","description":"A link to the user's default avatar","readonly":true,"type":[[["string"]]],"meta":{"line":179,"file":"User.js","path":"src/structures"}},{"name":"tag","description":"The Discord \"tag\" (e.g. `hydrabolt#0001`) for this user","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":198,"file":"User.js","path":"src/structures"}},{"name":"dmChannel","description":"The DM between the client's user and this user","readonly":true,"nullable":true,"type":[[["DMChannel"]]],"meta":{"line":237,"file":"User.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"setUsername","description":"Sets the username of the logged in client.\nChanging usernames in Discord is heavily rate limited, with only 2 requests\nevery hour. Use this sparingly!","examples":["// Set username\nclient.user.setUsername('discordjs')\n .then(user => console.log(`My new username is ${user.username}`))\n .catch(console.error);"],"params":[{"name":"username","description":"The new username","type":[[["string"]]]}],"returns":[[["Promise","<"],["ClientUser",">"]]],"meta":{"line":73,"file":"ClientUser.js","path":"src/structures"}},{"name":"setAvatar","description":"Sets the avatar of the logged in client.","examples":["// Set avatar\nclient.user.setAvatar('./avatar.png')\n .then(user => console.log(`New avatar set!`))\n .catch(console.error);"],"params":[{"name":"avatar","description":"The new avatar","type":[[["BufferResolvable"]],[["Base64Resolvable"]]]}],"async":true,"returns":[[["Promise","<"],["ClientUser",">"]]],"meta":{"line":87,"file":"ClientUser.js","path":"src/structures"}},{"name":"setPresence","description":"Sets the full presence of the client user.","examples":["// Set the client user's presence\nclient.user.setPresence({ activity: { name: 'with discord.js' }, status: 'idle' })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"data","description":"Data for the presence","type":[[["PresenceData"]]]}],"returns":[[["Promise","<"],["Presence",">"]]],"meta":{"line":113,"file":"ClientUser.js","path":"src/structures"}},{"name":"setStatus","description":"Sets the status of the client user.","examples":["// Set the client user's status\nclient.user.setStatus('idle')\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"status","description":"Status to change to","type":[[["PresenceStatusData"]]]},{"name":"shardID","description":"Shard ID(s) to have the activity set on","optional":true,"type":[[["number"]],[["Array","<"],["number",">"]]]}],"returns":[[["Promise","<"],["Presence",">"]]],"meta":{"line":137,"file":"ClientUser.js","path":"src/structures"}},{"name":"setActivity","description":"Sets the activity the client user is playing.","examples":["// Set the client user's activity\nclient.user.setActivity('discord.js', { type: 'WATCHING' })\n .then(presence => console.log(`Activity set to ${presence.activities[0].name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"Activity being played, or options for setting the activity","optional":true,"type":[[["string"]],[["ActivityOptions"]]]},{"name":"options","description":"Options for setting the activity","optional":true,"type":[[["ActivityOptions"]]]}],"returns":[[["Promise","<"],["Presence",">"]]],"meta":{"line":161,"file":"ClientUser.js","path":"src/structures"}},{"name":"setAFK","description":"Sets/removes the AFK flag for the client user.","params":[{"name":"afk","description":"Whether or not the user is AFK","type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Presence",">"]]],"meta":{"line":173,"file":"ClientUser.js","path":"src/structures"}},{"name":"avatarURL","description":"A link to the user's avatar.","inherits":"User#avatarURL","inherited":true,"params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":169,"file":"User.js","path":"src/structures"}},{"name":"displayAvatarURL","description":"A link to the user's avatar if they have one.\nOtherwise a link to their default avatar will be returned.","inherits":"User#displayAvatarURL","inherited":true,"params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":[[["string"]]],"meta":{"line":189,"file":"User.js","path":"src/structures"}},{"name":"typingIn","description":"Checks whether the user is typing in a channel.","inherits":"User#typingIn","inherited":true,"params":[{"name":"channel","description":"The channel to check in","type":[[["ChannelResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":207,"file":"User.js","path":"src/structures"}},{"name":"typingSinceIn","description":"Gets the time that the user started typing.","inherits":"User#typingSinceIn","inherited":true,"params":[{"name":"channel","description":"The channel to get the time in","type":[[["ChannelResolvable"]]]}],"returns":{"types":[[["Date"]]],"nullable":true},"meta":{"line":217,"file":"User.js","path":"src/structures"}},{"name":"typingDurationIn","description":"Gets the amount of time the user has been typing in a channel for (in milliseconds), or -1 if they're not typing.","inherits":"User#typingDurationIn","inherited":true,"params":[{"name":"channel","description":"The channel to get the time in","type":[[["ChannelResolvable"]]]}],"returns":[[["number"]]],"meta":{"line":227,"file":"User.js","path":"src/structures"}},{"name":"createDM","description":"Creates a DM channel between the client and the user.","inherits":"User#createDM","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["DMChannel",">"]]],"meta":{"line":246,"file":"User.js","path":"src/structures"}},{"name":"deleteDM","description":"Deletes a DM channel (if one exists) between the client and the user. Resolves with the channel if successful.","inherits":"User#deleteDM","inherited":true,"async":true,"returns":[[["Promise","<"],["DMChannel",">"]]],"meta":{"line":264,"file":"User.js","path":"src/structures"}},{"name":"equals","description":"Checks if the user is equal to another. It compares ID, username, discriminator, avatar, and bot flags.\nIt is recommended to compare equality by using `user.id === user2.id` unless you want to compare all properties.","inherits":"User#equals","inherited":true,"params":[{"name":"user","description":"User to compare with","type":[[["User"]]]}],"returns":[[["boolean"]]],"meta":{"line":277,"file":"User.js","path":"src/structures"}},{"name":"fetchFlags","description":"Fetches this user's flags.","inherits":"User#fetchFlags","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the AP","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["UserFlags",">"]]],"meta":{"line":293,"file":"User.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this user.","inherits":"User#fetch","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the AP","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["User",">"]]],"meta":{"line":305,"file":"User.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the user's mention instead of the User object.","inherits":"User#toString","inherited":true,"examples":["// Logs: Hello from <@123456789012345678>!\nconsole.log(`Hello from ${user}!`);"],"returns":[[["string"]]],"meta":{"line":316,"file":"User.js","path":"src/structures"}},{"name":"send","description":"Sends a message to this channel.","inherits":"User#send","inherited":true,"implements":["TextBasedChannel#send"],"examples":["// Send a basic message\nchannel.send('hello!')\n .then(message => console.log(`Sent message: ${message.content}`))\n .catch(console.error);","// Send a remote file\nchannel.send({\n files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n})\n .then(console.log)\n .catch(console.error);","// Send a local file\nchannel.send({\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);","// Send an embed with a local image inside\nchannel.send('This is an embed', {\n embed: {\n thumbnail: {\n url: 'attachment://file.jpg'\n }\n },\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"content","description":"The content to send","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["MessageOptions"]],[["MessageAdditions"]]]}],"async":true,"returns":[[["Promise","<("],["Message","|"],["Array","<"],["Message",">)>"]]],"meta":{"line":153,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}}],"meta":{"line":10,"file":"ClientUser.js","path":"src/structures"}},{"name":"DMChannel","description":"Represents a direct message channel between two users.","extends":[[["Channel"]]],"implements":[[["TextBasedChannel"]]],"construct":{"name":"DMChannel","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the DM channel","type":[[["Object"]]]}]},"props":[{"name":"messages","description":"A manager of the messages belonging to this channel","type":[[["MessageManager"]]],"meta":{"line":25,"file":"DMChannel.js","path":"src/structures"}},{"name":"recipient","description":"The recipient on the other end of the DM","type":[[["User"]]],"meta":{"line":37,"file":"DMChannel.js","path":"src/structures"}},{"name":"lastMessageID","description":"The ID of the last message in the channel, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":44,"file":"DMChannel.js","path":"src/structures"}},{"name":"lastPinTimestamp","description":"The timestamp when the last pinned message was pinned, if there was one","nullable":true,"type":[[["number"]]],"meta":{"line":50,"file":"DMChannel.js","path":"src/structures"}},{"name":"partial","description":"Whether this DMChannel is a partial","readonly":true,"type":[[["boolean"]]],"meta":{"line":58,"file":"DMChannel.js","path":"src/structures"}},{"name":"lastMessage","description":"The Message object of the last message in the channel, if one was sent","readonly":true,"nullable":true,"type":[[["Message"]]],"meta":{"line":40,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"lastPinAt","description":"The date when the last pinned message was pinned, if there was one","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":49,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"typing","description":"Whether or not the typing indicator is being shown in the channel","readonly":true,"type":[[["boolean"]]],"meta":{"line":250,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"typingCount","description":"Number of times `startTyping` has been called","readonly":true,"type":[[["number"]]],"meta":{"line":259,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"fetch","description":"Fetch this DMChannel.","params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["DMChannel",">"]]],"meta":{"line":67,"file":"DMChannel.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the recipient's mention instead of the\nDMChannel object.","examples":["// Logs: Hello from <@123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":79,"file":"DMChannel.js","path":"src/structures"}},{"name":"send","description":"Sends a message to this channel.","implements":["TextBasedChannel#send"],"examples":["// Send a basic message\nchannel.send('hello!')\n .then(message => console.log(`Sent message: ${message.content}`))\n .catch(console.error);","// Send a remote file\nchannel.send({\n files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n})\n .then(console.log)\n .catch(console.error);","// Send a local file\nchannel.send({\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);","// Send an embed with a local image inside\nchannel.send('This is an embed', {\n embed: {\n thumbnail: {\n url: 'attachment://file.jpg'\n }\n },\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"content","description":"The content to send","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["MessageOptions"]],[["MessageAdditions"]]]}],"async":true,"returns":[[["Promise","<("],["Message","|"],["Array","<"],["Message",">)>"]]],"meta":{"line":153,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"startTyping","description":"Starts a typing indicator in the channel.","implements":["TextBasedChannel#startTyping"],"examples":["// Start typing in a channel, or increase the typing count by one\nchannel.startTyping();","// Start typing in a channel with a typing count of five, or set it to five\nchannel.startTyping(5);"],"params":[{"name":"count","description":"The number of times startTyping should be considered to have been called","optional":true,"default":1,"type":[[["number"]]]}],"returns":{"types":[[["Promise"]]],"description":"Resolves once the bot stops typing gracefully, or rejects when an error occurs"},"meta":{"line":189,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"stopTyping","description":"Stops the typing indicator in the channel.\nThe indicator will only stop if this is called as many times as startTyping().\nIt can take a few seconds for the client user to stop typing.","implements":["TextBasedChannel#stopTyping"],"examples":["// Reduce the typing count by one and stop typing if it reached 0\nchannel.stopTyping();","// Force typing to fully stop regardless of typing count\nchannel.stopTyping(true);"],"params":[{"name":"force","description":"Whether or not to reset the call count and force the indicator to stop","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":233,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"createMessageCollector","description":"Creates a Message Collector.","implements":["TextBasedChannel#createMessageCollector"],"examples":["// Create a message collector\nconst filter = m => m.content.includes('discord');\nconst collector = channel.createMessageCollector(filter, { time: 15000 });\ncollector.on('collect', m => console.log(`Collected ${m.content}`));\ncollector.on('end', collected => console.log(`Collected ${collected.size} items`));"],"params":[{"name":"filter","description":"The filter to create the collector with","type":[[["CollectorFilter"]]]},{"name":"options","description":"The options to pass to the collector","optional":true,"default":"{}","type":[[["MessageCollectorOptions"]]]}],"returns":[[["MessageCollector"]]],"meta":{"line":276,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"awaitMessages","description":"Similar to createMessageCollector but in promise form.\nResolves with a collection of messages that pass the specified filter.","implements":["TextBasedChannel#awaitMessages"],"examples":["// Await !vote messages\nconst filter = m => m.content.startsWith('!vote');\n// Errors: ['time'] treats ending because of the time limit as an error\nchannel.awaitMessages(filter, { max: 4, time: 60000, errors: ['time'] })\n .then(collected => console.log(collected.size))\n .catch(collected => console.log(`After a minute, only ${collected.size} out of 4 voted.`));"],"params":[{"name":"filter","description":"The filter function to use","type":[[["CollectorFilter"]]]},{"name":"options","description":"Optional options to pass to the internal collector","optional":true,"default":"{}","type":[[["AwaitMessagesOptions"]]]}],"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"meta":{"line":300,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"delete","description":"Deletes this channel.","inherits":"Channel#delete","inherited":true,"examples":["// Delete the channel\nchannel.delete()\n .then(console.log)\n .catch(console.error);"],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":85,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","inherits":"Channel#isText","inherited":true,"returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":12,"file":"DMChannel.js","path":"src/structures"}},{"name":"Emoji","description":"Represents an emoji, see {@link GuildEmoji} and {@link ReactionEmoji}.","extends":[[["Base"]]],"props":[{"name":"animated","description":"Whether this emoji is animated","type":[[["boolean"]]],"meta":{"line":17,"file":"Emoji.js","path":"src/structures"}},{"name":"name","description":"The name of this emoji","type":[[["string"]]],"meta":{"line":23,"file":"Emoji.js","path":"src/structures"}},{"name":"id","description":"The ID of this emoji","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":29,"file":"Emoji.js","path":"src/structures"}},{"name":"deleted","description":"Whether this emoji has been deleted","type":[[["boolean"]]],"meta":{"line":35,"file":"Emoji.js","path":"src/structures"}},{"name":"identifier","description":"The identifier of this emoji, used for message reactions","readonly":true,"type":[[["string"]]],"meta":{"line":43,"file":"Emoji.js","path":"src/structures"}},{"name":"url","description":"The URL to the emoji file if its a custom emoji","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":53,"file":"Emoji.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["number"]]],"meta":{"line":63,"file":"Emoji.js","path":"src/structures"}},{"name":"createdAt","description":"The time the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":73,"file":"Emoji.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"toString","description":"When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord\ninstead of the Emoji object.","examples":["// Send a custom emoji from a guild:\nconst emoji = guild.emojis.cache.first();\nmsg.reply(`Hello! ${emoji}`);","// Send the emoji used in a reaction to the channel the reaction is part of\nreaction.message.channel.send(`The emoji used was: ${reaction.emoji}`);"],"returns":[[["string"]]],"meta":{"line":90,"file":"Emoji.js","path":"src/structures"}}],"meta":{"line":10,"file":"Emoji.js","path":"src/structures"}},{"name":"Guild","description":"Represents a guild (or a server) on Discord.\nIt's recommended to see if a guild is available before performing operations or reading data from it. You can\ncheck this with `guild.available`.","extends":[[["Base"]]],"construct":{"name":"Guild","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the guild","type":[[["Object"]]]}]},"props":[{"name":"members","description":"A manager of the members belonging to this guild","type":[[["GuildMemberManager"]]],"meta":{"line":51,"file":"Guild.js","path":"src/structures"}},{"name":"channels","description":"A manager of the channels belonging to this guild","type":[[["GuildChannelManager"]]],"meta":{"line":57,"file":"Guild.js","path":"src/structures"}},{"name":"roles","description":"A manager of the roles belonging to this guild","type":[[["RoleManager"]]],"meta":{"line":63,"file":"Guild.js","path":"src/structures"}},{"name":"presences","description":"A manager of the presences belonging to this guild","type":[[["PresenceManager"]]],"meta":{"line":69,"file":"Guild.js","path":"src/structures"}},{"name":"voiceStates","description":"A manager of the voice states of this guild","type":[[["VoiceStateManager"]]],"meta":{"line":75,"file":"Guild.js","path":"src/structures"}},{"name":"deleted","description":"Whether the bot has been removed from the guild","type":[[["boolean"]]],"meta":{"line":81,"file":"Guild.js","path":"src/structures"}},{"name":"available","description":"Whether the guild is available to access. If it is not available, it indicates a server outage","type":[[["boolean"]]],"meta":{"line":89,"file":"Guild.js","path":"src/structures"}},{"name":"id","description":"The Unique ID of the guild, useful for comparisons","type":[[["Snowflake"]]],"meta":{"line":95,"file":"Guild.js","path":"src/structures"}},{"name":"shardID","description":"The id of the shard this Guild belongs to.","type":[[["number"]]],"meta":{"line":105,"file":"Guild.js","path":"src/structures"}},{"name":"shard","description":"The Shard this Guild belongs to.","readonly":true,"type":[[["WebSocketShard"]]],"meta":{"line":113,"file":"Guild.js","path":"src/structures"}},{"name":"name","description":"The name of the guild","type":[[["string"]]],"meta":{"line":127,"file":"Guild.js","path":"src/structures"}},{"name":"icon","description":"The hash of the guild icon","nullable":true,"type":[[["string"]]],"meta":{"line":133,"file":"Guild.js","path":"src/structures"}},{"name":"splash","description":"The hash of the guild invite splash image","nullable":true,"type":[[["string"]]],"meta":{"line":139,"file":"Guild.js","path":"src/structures"}},{"name":"discoverySplash","description":"The hash of the guild discovery splash image","nullable":true,"type":[[["string"]]],"meta":{"line":145,"file":"Guild.js","path":"src/structures"}},{"name":"region","description":"The region the guild is located in","type":[[["string"]]],"meta":{"line":151,"file":"Guild.js","path":"src/structures"}},{"name":"memberCount","description":"The full amount of members in this guild","type":[[["number"]]],"meta":{"line":157,"file":"Guild.js","path":"src/structures"}},{"name":"large","description":"Whether the guild is \"large\" (has more than large_threshold members, 50 by default)","type":[[["boolean"]]],"meta":{"line":163,"file":"Guild.js","path":"src/structures"}},{"name":"features","description":"An array of guild features partnered guilds have enabled","type":[[["Array","<"],["Features",">"]]],"meta":{"line":188,"file":"Guild.js","path":"src/structures"}},{"name":"applicationID","description":"The ID of the application that created this guild (if applicable)","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":194,"file":"Guild.js","path":"src/structures"}},{"name":"afkTimeout","description":"The time in seconds before a user is counted as \"away from keyboard\"","nullable":true,"type":[[["number"]]],"meta":{"line":200,"file":"Guild.js","path":"src/structures"}},{"name":"afkChannelID","description":"The ID of the voice channel where AFK members are moved","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":206,"file":"Guild.js","path":"src/structures"}},{"name":"systemChannelID","description":"The ID of the system channel","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":212,"file":"Guild.js","path":"src/structures"}},{"name":"embedEnabled","description":"Whether embedded images are enabled on this guild","deprecated":true,"type":[[["boolean"]]],"meta":{"line":219,"file":"Guild.js","path":"src/structures"}},{"name":"premiumTier","description":"The premium tier on this guild","type":[[["PremiumTier"]]],"meta":{"line":234,"file":"Guild.js","path":"src/structures"}},{"name":"premiumSubscriptionCount","description":"The total number of boosts for this server","nullable":true,"type":[[["number"]]],"meta":{"line":241,"file":"Guild.js","path":"src/structures"}},{"name":"widgetEnabled","description":"Whether widget images are enabled on this guild","nullable":true,"type":[[["boolean"]]],"meta":{"line":249,"file":"Guild.js","path":"src/structures"}},{"name":"widgetChannelID","description":"The widget channel ID, if enabled","nullable":true,"type":[[["string"]]],"meta":{"line":257,"file":"Guild.js","path":"src/structures"}},{"name":"embedChannelID","description":"The embed channel ID, if enabled","nullable":true,"deprecated":true,"type":[[["string"]]],"meta":{"line":266,"file":"Guild.js","path":"src/structures"}},{"name":"verificationLevel","description":"The verification level of the guild","type":[[["VerificationLevel"]]],"meta":{"line":273,"file":"Guild.js","path":"src/structures"}},{"name":"explicitContentFilter","description":"The explicit content filter level of the guild","type":[[["ExplicitContentFilterLevel"]]],"meta":{"line":279,"file":"Guild.js","path":"src/structures"}},{"name":"mfaLevel","description":"The required MFA level for the guild","type":[[["number"]]],"meta":{"line":285,"file":"Guild.js","path":"src/structures"}},{"name":"joinedTimestamp","description":"The timestamp the client user joined the guild at","type":[[["number"]]],"meta":{"line":291,"file":"Guild.js","path":"src/structures"}},{"name":"defaultMessageNotifications","description":"The value set for the guild's default message notifications","type":[[["DefaultMessageNotifications"]],[["number"]]],"meta":{"line":297,"file":"Guild.js","path":"src/structures"}},{"name":"systemChannelFlags","description":"The value set for the guild's system channel flags","type":[[["Readonly","<"],["SystemChannelFlags",">"]]],"meta":{"line":304,"file":"Guild.js","path":"src/structures"}},{"name":"maximumMembers","description":"The maximum amount of members the guild can have","nullable":true,"type":[[["number"]]],"meta":{"line":311,"file":"Guild.js","path":"src/structures"}},{"name":"maximumPresences","description":"The maximum amount of presences the guild can have\nYou will need to fetch the guild using {@link Guild#fetch} if you want to receive this parameter","nullable":true,"type":[[["number"]]],"meta":{"line":322,"file":"Guild.js","path":"src/structures"}},{"name":"approximateMemberCount","description":"The approximate amount of members the guild has\nYou will need to fetch the guild using {@link Guild#fetch} if you want to receive this parameter","nullable":true,"type":[[["number"]]],"meta":{"line":333,"file":"Guild.js","path":"src/structures"}},{"name":"approximatePresenceCount","description":"The approximate amount of presences the guild has\nYou will need to fetch the guild using {@link Guild#fetch} if you want to receive this parameter","nullable":true,"type":[[["number"]]],"meta":{"line":344,"file":"Guild.js","path":"src/structures"}},{"name":"vanityURLCode","description":"The vanity invite code of the guild, if any","nullable":true,"type":[[["string"]]],"meta":{"line":353,"file":"Guild.js","path":"src/structures"}},{"name":"vanityURLUses","description":"The use count of the vanity URL code of the guild, if any\nYou will need to fetch this parameter using {@link Guild#fetchVanityData} if you want to receive it","nullable":true,"type":[[["number"]]],"meta":{"line":361,"file":"Guild.js","path":"src/structures"}},{"name":"description","description":"The description of the guild, if any","nullable":true,"type":[[["string"]]],"meta":{"line":368,"file":"Guild.js","path":"src/structures"}},{"name":"banner","description":"The hash of the guild banner","nullable":true,"type":[[["string"]]],"meta":{"line":374,"file":"Guild.js","path":"src/structures"}},{"name":"rulesChannelID","description":"The ID of the rules channel for the guild","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":384,"file":"Guild.js","path":"src/structures"}},{"name":"publicUpdatesChannelID","description":"The ID of the community updates channel for the guild","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":390,"file":"Guild.js","path":"src/structures"}},{"name":"preferredLocale","description":"The preferred locale of the guild, defaults to `en-US`","type":[[["string"]]],"meta":{"line":396,"file":"Guild.js","path":"src/structures"}},{"name":"ownerID","description":"The user ID of this guild's owner","type":[[["Snowflake"]]],"meta":{"line":420,"file":"Guild.js","path":"src/structures"}},{"name":"emojis","description":"A manager of the emojis belonging to this guild","type":[[["GuildEmojiManager"]]],"meta":{"line":441,"file":"Guild.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the guild was created at","readonly":true,"type":[[["number"]]],"meta":{"line":466,"file":"Guild.js","path":"src/structures"}},{"name":"createdAt","description":"The time the guild was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":475,"file":"Guild.js","path":"src/structures"}},{"name":"joinedAt","description":"The time the client user joined the guild","readonly":true,"type":[[["Date"]]],"meta":{"line":484,"file":"Guild.js","path":"src/structures"}},{"name":"partnered","description":"If this guild is partnered","readonly":true,"type":[[["boolean"]]],"meta":{"line":493,"file":"Guild.js","path":"src/structures"}},{"name":"verified","description":"If this guild is verified","readonly":true,"type":[[["boolean"]]],"meta":{"line":502,"file":"Guild.js","path":"src/structures"}},{"name":"nameAcronym","description":"The acronym that shows up in place of a guild icon.","readonly":true,"type":[[["string"]]],"meta":{"line":521,"file":"Guild.js","path":"src/structures"}},{"name":"owner","description":"The owner of the guild","readonly":true,"nullable":true,"type":[[["GuildMember"]]],"meta":{"line":553,"file":"Guild.js","path":"src/structures"}},{"name":"afkChannel","description":"AFK voice channel for this guild","readonly":true,"nullable":true,"type":[[["VoiceChannel"]]],"meta":{"line":567,"file":"Guild.js","path":"src/structures"}},{"name":"systemChannel","description":"System channel for this guild","readonly":true,"nullable":true,"type":[[["TextChannel"]]],"meta":{"line":576,"file":"Guild.js","path":"src/structures"}},{"name":"widgetChannel","description":"Widget channel for this guild","readonly":true,"nullable":true,"type":[[["TextChannel"]]],"meta":{"line":585,"file":"Guild.js","path":"src/structures"}},{"name":"embedChannel","description":"Embed channel for this guild","readonly":true,"nullable":true,"deprecated":true,"type":[[["TextChannel"]]],"meta":{"line":595,"file":"Guild.js","path":"src/structures"}},{"name":"rulesChannel","description":"Rules channel for this guild","readonly":true,"nullable":true,"type":[[["TextChannel"]]],"meta":{"line":604,"file":"Guild.js","path":"src/structures"}},{"name":"publicUpdatesChannel","description":"Public updates channel for this guild","readonly":true,"nullable":true,"type":[[["TextChannel"]]],"meta":{"line":613,"file":"Guild.js","path":"src/structures"}},{"name":"me","description":"The client user as a GuildMember of this guild","readonly":true,"nullable":true,"type":[[["GuildMember"]]],"meta":{"line":622,"file":"Guild.js","path":"src/structures"}},{"name":"voice","description":"The voice state for the client user of this guild, if any","readonly":true,"nullable":true,"type":[[["VoiceState"]]],"meta":{"line":636,"file":"Guild.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"_patch","description":"Sets up the guild.","access":"private","params":[{"name":"data","description":"The raw data of the guild","type":[["*"]]}],"meta":{"line":122,"file":"Guild.js","path":"src/structures"}},{"name":"bannerURL","description":"The URL to this guild's banner.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":456,"file":"Guild.js","path":"src/structures"}},{"name":"iconURL","description":"The URL to this guild's icon.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":511,"file":"Guild.js","path":"src/structures"}},{"name":"splashURL","description":"The URL to this guild's invite splash image.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":533,"file":"Guild.js","path":"src/structures"}},{"name":"discoverySplashURL","description":"The URL to this guild's discovery splash image.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":543,"file":"Guild.js","path":"src/structures"}},{"name":"member","description":"Returns the GuildMember form of a User object, if the user is present in the guild.","examples":["// Get the guild member of a user\nconst member = guild.member(message.author);"],"params":[{"name":"user","description":"The user that you want to obtain the GuildMember of","type":[[["UserResolvable"]]]}],"returns":{"types":[[["GuildMember"]]],"nullable":true},"meta":{"line":648,"file":"Guild.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this guild.","returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":656,"file":"Guild.js","path":"src/structures"}},{"name":"fetchBan","description":"Fetches information on a banned user from this guild.","params":[{"name":"user","description":"The User to fetch the ban info of","type":[[["UserResolvable"]]]}],"returns":[[["Promise","<"],["BanInfo",">"]]],"meta":{"line":678,"file":"Guild.js","path":"src/structures"}},{"name":"fetchBans","description":"Fetches a collection of banned users in this guild.","returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["BanInfo",">>"]]],"meta":{"line":695,"file":"Guild.js","path":"src/structures"}},{"name":"fetchIntegrations","description":"Fetches a collection of integrations to this guild.\nResolves with a collection mapping integrations by their ids.","examples":["// Fetch integrations\nguild.fetchIntegrations()\n .then(integrations => console.log(`Fetched ${integrations.size} integrations`))\n .catch(console.error);"],"params":[{"name":"options","description":"Options for fetching integrations","optional":true,"type":[[["Object"]]]},{"name":"options.includeApplications","description":"Whether to include bot and Oauth2 webhook integrations","optional":true,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Integration",">>"]]],"meta":{"line":722,"file":"Guild.js","path":"src/structures"}},{"name":"fetchTemplates","description":"Fetches a collection of templates from this guild.\nResolves with a collection mapping templates by their codes.","returns":[[["Promise","<"],["Collection","<"],["string",", "],["GuildTemplate",">>"]]],"meta":{"line":743,"file":"Guild.js","path":"src/structures"}},{"name":"createIntegration","description":"Creates an integration by attaching an integration object","params":[{"name":"data","description":"The data for the integration","type":[[["IntegrationData"]]]},{"name":"reason","description":"Reason for creating the integration","type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":765,"file":"Guild.js","path":"src/structures"}},{"name":"createTemplate","description":"Creates a template for the guild.","params":[{"name":"name","description":"The name for the template","type":[[["string"]]]},{"name":"description","description":"The description for the template","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildTemplate",">"]]],"meta":{"line":778,"file":"Guild.js","path":"src/structures"}},{"name":"fetchInvites","description":"Fetches a collection of invites to this guild.\nResolves with a collection mapping invites by their codes.","examples":["// Fetch invites\nguild.fetchInvites()\n .then(invites => console.log(`Fetched ${invites.size} invites`))\n .catch(console.error);","// Fetch invite creator by their id\nguild.fetchInvites()\n .then(invites => console.log(invites.find(invite => invite.inviter.id === '84484653687267328')))\n .catch(console.error);"],"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Invite",">>"]]],"meta":{"line":800,"file":"Guild.js","path":"src/structures"}},{"name":"fetchPreview","description":"Obtains a guild preview for this guild from Discord.","returns":[[["Promise","<"],["GuildPreview",">"]]],"meta":{"line":818,"file":"Guild.js","path":"src/structures"}},{"name":"fetchVanityCode","description":"Fetches the vanity url invite code to this guild.\nResolves with a string matching the vanity url invite code, not the full url.","examples":["// Fetch invites\nguild.fetchVanityCode()\n .then(code => {\n console.log(`Vanity URL: https://discord.gg/${code}`);\n })\n .catch(console.error);"],"deprecated":true,"returns":[[["Promise","<"],["string",">"]]],"meta":{"line":838,"file":"Guild.js","path":"src/structures"}},{"name":"fetchVanityData","description":"Fetches the vanity url invite object to this guild.\nResolves with an object containing the vanity url invite code and the use count","examples":["// Fetch invite data\nguild.fetchVanityData()\n .then(res => {\n console.log(`Vanity URL: https://discord.gg/${res.code} with ${res.uses} uses`);\n })\n .catch(console.error);"],"async":true,"returns":[[["Promise","<"],["Vanity",">"]]],"meta":{"line":861,"file":"Guild.js","path":"src/structures"}},{"name":"fetchWebhooks","description":"Fetches all webhooks for the guild.","examples":["// Fetch webhooks\nguild.fetchWebhooks()\n .then(webhooks => console.log(`Fetched ${webhooks.size} webhooks`))\n .catch(console.error);"],"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Webhook",">>"]]],"meta":{"line":880,"file":"Guild.js","path":"src/structures"}},{"name":"fetchVoiceRegions","description":"Fetches available voice regions.","returns":[[["Promise","<"],["Collection","<"],["string",", "],["VoiceRegion",">>"]]],"meta":{"line":895,"file":"Guild.js","path":"src/structures"}},{"name":"fetchEmbed","description":"Fetches the guild embed.","examples":["// Fetches the guild embed\nguild.fetchEmbed()\n .then(embed => console.log(`The embed is ${embed.enabled ? 'enabled' : 'disabled'}`))\n .catch(console.error);"],"deprecated":true,"returns":[[["Promise","<"],["GuildWidget",">"]]],"meta":{"line":930,"file":"Guild.js","path":"src/structures"}},{"name":"fetchWidget","description":"Fetches the guild widget.","examples":["// Fetches the guild widget\nguild.fetchWidget()\n .then(widget => console.log(`The widget is ${widget.enabled ? 'enabled' : 'disabled'}`))\n .catch(console.error);"],"async":true,"returns":[[["Promise","<"],["GuildWidget",">"]]],"meta":{"line":943,"file":"Guild.js","path":"src/structures"}},{"name":"fetchAuditLogs","description":"Fetches audit logs for this guild.","examples":["// Output audit log entries\nguild.fetchAuditLogs()\n .then(audit => console.log(audit.entries.first()))\n .catch(console.error);"],"params":[{"name":"options","description":"Options for fetching audit logs","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.before","description":"Limit to entries from before specified entry","optional":true,"type":[[["Snowflake"]],[["GuildAuditLogsEntry"]]]},{"name":"options.limit","description":"Limit number of entries","optional":true,"type":[[["number"]]]},{"name":"options.user","description":"Only show entries involving this user","optional":true,"type":[[["UserResolvable"]]]},{"name":"options.type","description":"Only show entries involving this action type","optional":true,"type":[[["AuditLogAction"]],[["number"]]]}],"returns":[[["Promise","<"],["GuildAuditLogs",">"]]],"meta":{"line":967,"file":"Guild.js","path":"src/structures"}},{"name":"addMember","description":"Adds a user to the guild using OAuth2. Requires the `CREATE_INSTANT_INVITE` permission.","params":[{"name":"user","description":"User to add to the guild","type":[[["UserResolvable"]]]},{"name":"options","description":"Options for the addition","type":[[["Object"]]]},{"name":"options.accessToken","description":"An OAuth2 access token for the user with the `guilds.join` scope granted to the\nbot's application","type":[[["string"]]]},{"name":"options.nick","description":"Nickname to give the member (requires `MANAGE_NICKNAMES`)","optional":true,"type":[[["string"]]]},{"name":"options.roles","description":"Roles to add to the member\n(requires `MANAGE_ROLES`)","optional":true,"type":[[["Collection","<"],["Snowflake",", "],["Role",">"]],[["Array","<"],["RoleResolvable",">"]]]},{"name":"options.mute","description":"Whether the member should be muted (requires `MUTE_MEMBERS`)","optional":true,"type":[[["boolean"]]]},{"name":"options.deaf","description":"Whether the member should be deafened (requires `DEAFEN_MEMBERS`)","optional":true,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":997,"file":"Guild.js","path":"src/structures"}},{"name":"edit","description":"Updates the guild with new information - e.g. a new name.","examples":["// Set the guild name and region\nguild.edit({\n name: 'Discord Guild',\n region: 'london',\n})\n .then(updated => console.log(`New guild name ${updated} in region ${updated.region}`))\n .catch(console.error);"],"params":[{"name":"data","description":"The data to update the guild with","type":[[["GuildEditData"]]]},{"name":"reason","description":"Reason for editing this guild","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1054,"file":"Guild.js","path":"src/structures"}},{"name":"setExplicitContentFilter","description":"Edits the level of the explicit content filter.","params":[{"name":"explicitContentFilter","description":"The new level of the explicit content filter","type":[[["ExplicitContentFilterLevel"]],[["number"]]]},{"name":"reason","description":"Reason for changing the level of the guild's explicit content filter","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1110,"file":"Guild.js","path":"src/structures"}},{"name":"setDefaultMessageNotifications","description":"Edits the setting of the default message notifications of the guild.","params":[{"name":"defaultMessageNotifications","description":"The new setting for the default message notifications","type":[[["DefaultMessageNotifications"]],[["number"]]]},{"name":"reason","description":"Reason for changing the setting of the default message notifications","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1121,"file":"Guild.js","path":"src/structures"}},{"name":"setSystemChannelFlags","description":"Edits the flags of the default message notifications of the guild.","params":[{"name":"systemChannelFlags","description":"The new flags for the default message notifications","type":[[["SystemChannelFlagsResolvable"]]]},{"name":"reason","description":"Reason for changing the flags of the default message notifications","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1132,"file":"Guild.js","path":"src/structures"}},{"name":"setName","description":"Edits the name of the guild.","examples":["// Edit the guild name\nguild.setName('Discord Guild')\n .then(updated => console.log(`Updated guild name to ${updated.name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"The new name of the guild","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1147,"file":"Guild.js","path":"src/structures"}},{"name":"setRegion","description":"Edits the region of the guild.","examples":["// Edit the guild region\nguild.setRegion('london')\n .then(updated => console.log(`Updated guild region to ${updated.region}`))\n .catch(console.error);"],"params":[{"name":"region","description":"The new region of the guild","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild's region","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1162,"file":"Guild.js","path":"src/structures"}},{"name":"setVerificationLevel","description":"Edits the verification level of the guild.","examples":["// Edit the guild verification level\nguild.setVerificationLevel(1)\n .then(updated => console.log(`Updated guild verification level to ${guild.verificationLevel}`))\n .catch(console.error);"],"params":[{"name":"verificationLevel","description":"The new verification level of the guild","type":[[["VerificationLevel"]],[["number"]]]},{"name":"reason","description":"Reason for changing the guild's verification level","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1177,"file":"Guild.js","path":"src/structures"}},{"name":"setAFKChannel","description":"Edits the AFK channel of the guild.","examples":["// Edit the guild AFK channel\nguild.setAFKChannel(channel)\n .then(updated => console.log(`Updated guild AFK channel to ${guild.afkChannel.name}`))\n .catch(console.error);"],"params":[{"name":"afkChannel","description":"The new AFK channel","type":[[["ChannelResolvable"]]]},{"name":"reason","description":"Reason for changing the guild's AFK channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1192,"file":"Guild.js","path":"src/structures"}},{"name":"setSystemChannel","description":"Edits the system channel of the guild.","examples":["// Edit the guild system channel\nguild.setSystemChannel(channel)\n .then(updated => console.log(`Updated guild system channel to ${guild.systemChannel.name}`))\n .catch(console.error);"],"params":[{"name":"systemChannel","description":"The new system channel","type":[[["ChannelResolvable"]]]},{"name":"reason","description":"Reason for changing the guild's system channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1207,"file":"Guild.js","path":"src/structures"}},{"name":"setAFKTimeout","description":"Edits the AFK timeout of the guild.","examples":["// Edit the guild AFK channel\nguild.setAFKTimeout(60)\n .then(updated => console.log(`Updated guild AFK timeout to ${guild.afkTimeout}`))\n .catch(console.error);"],"params":[{"name":"afkTimeout","description":"The time in seconds that a user must be idle to be considered AFK","type":[[["number"]]]},{"name":"reason","description":"Reason for changing the guild's AFK timeout","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1222,"file":"Guild.js","path":"src/structures"}},{"name":"setIcon","description":"Sets a new guild icon.","examples":["// Edit the guild icon\nguild.setIcon('./icon.png')\n .then(updated => console.log('Updated the guild icon'))\n .catch(console.error);"],"params":[{"name":"icon","description":"The new icon of the guild","type":[[["Base64Resolvable"]],[["BufferResolvable"]]]},{"name":"reason","description":"Reason for changing the guild's icon","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1237,"file":"Guild.js","path":"src/structures"}},{"name":"setOwner","description":"Sets a new owner of the guild.","examples":["// Edit the guild owner\nguild.setOwner(guild.members.cache.first())\n .then(updated => console.log(`Updated the guild owner to ${updated.owner.displayName}`))\n .catch(console.error);"],"params":[{"name":"owner","description":"The new owner of the guild","type":[[["GuildMemberResolvable"]]]},{"name":"reason","description":"Reason for setting the new owner","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1252,"file":"Guild.js","path":"src/structures"}},{"name":"setSplash","description":"Sets a new guild invite splash image.","examples":["// Edit the guild splash\nguild.setSplash('./splash.png')\n .then(updated => console.log('Updated the guild splash'))\n .catch(console.error);"],"params":[{"name":"splash","description":"The new invite splash image of the guild","type":[[["Base64Resolvable"]],[["BufferResolvable"]]]},{"name":"reason","description":"Reason for changing the guild's invite splash image","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1267,"file":"Guild.js","path":"src/structures"}},{"name":"setDiscoverySplash","description":"Sets a new guild discovery splash image.","examples":["// Edit the guild discovery splash\nguild.setDiscoverySplash('./discoverysplash.png')\n .then(updated => console.log('Updated the guild discovery splash'))\n .catch(console.error);"],"params":[{"name":"discoverySplash","description":"The new discovery splash image of the guild","type":[[["Base64Resolvable"]],[["BufferResolvable"]]]},{"name":"reason","description":"Reason for changing the guild's discovery splash image","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1282,"file":"Guild.js","path":"src/structures"}},{"name":"setBanner","description":"Sets a new guild banner.","examples":["guild.setBanner('./banner.png')\n .then(updated => console.log('Updated the guild banner'))\n .catch(console.error);"],"params":[{"name":"banner","description":"The new banner of the guild","type":[[["Base64Resolvable"]],[["BufferResolvable"]]]},{"name":"reason","description":"Reason for changing the guild's banner","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1296,"file":"Guild.js","path":"src/structures"}},{"name":"setRulesChannel","description":"Edits the rules channel of the guild.","examples":["// Edit the guild rules channel\nguild.setRulesChannel(channel)\n .then(updated => console.log(`Updated guild rules channel to ${guild.rulesChannel.name}`))\n .catch(console.error);"],"params":[{"name":"rulesChannel","description":"The new rules channel","type":[[["ChannelResolvable"]]]},{"name":"reason","description":"Reason for changing the guild's rules channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1311,"file":"Guild.js","path":"src/structures"}},{"name":"setPublicUpdatesChannel","description":"Edits the community updates channel of the guild.","examples":["// Edit the guild community updates channel\nguild.setPublicUpdatesChannel(channel)\n .then(updated => console.log(`Updated guild community updates channel to ${guild.publicUpdatesChannel.name}`))\n .catch(console.error);"],"params":[{"name":"publicUpdatesChannel","description":"The new community updates channel","type":[[["ChannelResolvable"]]]},{"name":"reason","description":"Reason for changing the guild's community updates channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1326,"file":"Guild.js","path":"src/structures"}},{"name":"setPreferredLocale","description":"Edits the preferred locale of the guild.","examples":["// Edit the guild preferred locale\nguild.setPreferredLocale('en-US')\n .then(updated => console.log(`Updated guild preferred locale to ${guild.preferredLocale}`))\n .catch(console.error);"],"params":[{"name":"preferredLocale","description":"The new preferred locale of the guild","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild's preferred locale","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1341,"file":"Guild.js","path":"src/structures"}},{"name":"setChannelPositions","description":"Batch-updates the guild's channels' positions.","examples":["guild.setChannelPositions([{ channel: channelID, position: newChannelIndex }])\n .then(guild => console.log(`Updated channel positions for ${guild}`))\n .catch(console.error);"],"params":[{"name":"channelPositions","description":"Channel positions to update","type":[[["Array","<"],["ChannelPosition",">"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1361,"file":"Guild.js","path":"src/structures"}},{"name":"setRolePositions","description":"Batch-updates the guild's role positions","examples":["guild.setRolePositions([{ role: roleID, position: updatedRoleIndex }])\n .then(guild => console.log(`Role permissions updated for ${guild}`))\n .catch(console.error);"],"params":[{"name":"rolePositions","description":"Role positions to update","type":[[["Array","<"],["GuildRolePosition",">"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1395,"file":"Guild.js","path":"src/structures"}},{"name":"setEmbed","description":"Edits the guild's embed.","deprecated":true,"params":[{"name":"embed","description":"The embed for the guild","type":[[["GuildWidgetData"]]]},{"name":"reason","description":"Reason for changing the guild's embed","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1424,"file":"Guild.js","path":"src/structures"}},{"name":"setWidget","description":"Edits the guild's widget.","params":[{"name":"widget","description":"The widget for the guild","type":[[["GuildWidgetData"]]]},{"name":"reason","description":"Reason for changing the guild's widget","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1434,"file":"Guild.js","path":"src/structures"}},{"name":"leave","description":"Leaves the guild.","examples":["// Leave a guild\nguild.leave()\n .then(g => console.log(`Left the guild ${g}`))\n .catch(console.error);"],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1456,"file":"Guild.js","path":"src/structures"}},{"name":"delete","description":"Deletes the guild.","examples":["// Delete a guild\nguild.delete()\n .then(g => console.log(`Deleted the guild ${g}`))\n .catch(console.error);"],"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":1474,"file":"Guild.js","path":"src/structures"}},{"name":"equals","description":"Whether this guild equals another guild. It compares all properties, so for most operations\nit is advisable to just compare `guild.id === guild2.id` as it is much faster and is often\nwhat most users need.","params":[{"name":"guild","description":"The guild to compare with","type":[[["Guild"]]]}],"returns":[[["boolean"]]],"meta":{"line":1488,"file":"Guild.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the guild's name instead of the Guild object.","examples":["// Logs: Hello from My Guild!\nconsole.log(`Hello from ${guild}!`);"],"returns":[[["string"]]],"meta":{"line":1526,"file":"Guild.js","path":"src/structures"}},{"name":"_sortedRoles","description":"Creates a collection of this guild's roles, sorted by their position and IDs.","access":"private","returns":[[["Collection","<"],["Role",">"]]],"meta":{"line":1550,"file":"Guild.js","path":"src/structures"}},{"name":"_sortedChannels","description":"Creates a collection of this guild's or a specific category's channels, sorted by their position and IDs.","access":"private","params":[{"name":"channel","description":"Category to get the channels of","optional":true,"type":[[["GuildChannel"]]]}],"returns":[[["Collection","<"],["GuildChannel",">"]]],"meta":{"line":1560,"file":"Guild.js","path":"src/structures"}}],"meta":{"line":39,"file":"Guild.js","path":"src/structures"}},{"name":"GuildAuditLogs","description":"Audit logs entries are held in this class.","props":[{"name":"webhooks","description":"Cached webhooks","access":"private","type":[[["Collection","<"],["Snowflake",", "],["Webhook",">"]]],"meta":{"line":139,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"integrations","description":"Cached integrations","access":"private","type":[[["Collection","<"],["Snowflake",", "],["Integration",">"]]],"meta":{"line":151,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"entries","description":"The entries for this guild's audit logs","type":[[["Collection","<"],["Snowflake",", "],["GuildAuditLogsEntry",">"]]],"meta":{"line":162,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"Targets","description":"Key mirror of all available audit log targets.","scope":"static","type":[[["Object","<"],["string",", "],["string",">"]]],"meta":{"line":24,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"Actions","description":"All available actions keyed under their names to their numeric values.","scope":"static","type":[[["Object","<"],["string",", "],["number",">"]]],"meta":{"line":84,"file":"GuildAuditLogs.js","path":"src/structures"}}],"methods":[{"name":"build","description":"Handles possible promises for entry targets.","scope":"static","returns":[[["Promise","<"],["GuildAuditLogs",">"]]],"meta":{"line":173,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"targetType","description":"Finds the target type from the entry action.","scope":"static","params":[{"name":"target","description":"The action target","type":[[["AuditLogAction"]]]}],"returns":[[["AuditLogTargetType"]]],"meta":{"line":197,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"actionType","description":"Finds the action type from the entry action.","scope":"static","params":[{"name":"action","description":"The action target","type":[[["AuditLogAction"]]]}],"returns":[[["AuditLogActionType"]]],"meta":{"line":224,"file":"GuildAuditLogs.js","path":"src/structures"}}],"meta":{"line":131,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"GuildAuditLogsEntry","description":"Audit logs entry.","props":[{"name":"targetType","description":"The target type of this entry","type":[[["AuditLogTargetType"]]],"meta":{"line":299,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"actionType","description":"The action type of this entry","type":[[["AuditLogActionType"]]],"meta":{"line":305,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"action","description":"Specific action type of this entry in its string presentation","type":[[["AuditLogAction"]]],"meta":{"line":311,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"reason","description":"The reason of this entry","nullable":true,"type":[[["string"]]],"meta":{"line":317,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"executor","description":"The user that executed this entry","type":[[["User"]]],"meta":{"line":323,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"changes","description":"Specific property changes","type":[[["Array","<"],["AuditLogChange",">"]]],"meta":{"line":339,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"id","description":"The ID of this entry","type":[[["Snowflake"]]],"meta":{"line":345,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"extra","description":"Any extra data from the entry","type":[[["Object"]],[["Role"]],[["GuildMember"]]],"meta":{"line":351,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"target","description":"The target of this entry","nullable":true,"type":[[["AuditLogEntryTarget"]]],"meta":{"line":412,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp this entry was created at","readonly":true,"type":[[["number"]]],"meta":{"line":487,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"createdAt","description":"The time this entry was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":496,"file":"GuildAuditLogs.js","path":"src/structures"}}],"meta":{"line":292,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"GuildChannel","description":"Represents a guild channel from any of the following:\n- {@link TextChannel}\n- {@link VoiceChannel}\n- {@link CategoryChannel}\n- {@link NewsChannel}\n- {@link StoreChannel}","extends":[[["Channel"]]],"abstract":true,"construct":{"name":"GuildChannel","params":[{"name":"guild","description":"The guild the guild channel is part of","type":[[["Guild"]]]},{"name":"data","description":"The data for the guild channel","type":[[["Object"]]]}]},"props":[{"name":"guild","description":"The guild the channel is in","type":[[["Guild"]]],"meta":{"line":34,"file":"GuildChannel.js","path":"src/structures"}},{"name":"name","description":"The name of the guild channel","type":[[["string"]]],"meta":{"line":44,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rawPosition","description":"The raw position of the channel from discord","type":[[["number"]]],"meta":{"line":50,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parentID","description":"The ID of the category parent of this channel","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":56,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionOverwrites","description":"A map of permission overwrites in this channel for roles and users","type":[[["Collection","<"],["Snowflake",", "],["PermissionOverwrites",">"]]],"meta":{"line":62,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parent","description":"The category parent of this channel","readonly":true,"nullable":true,"type":[[["CategoryChannel"]]],"meta":{"line":75,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionsLocked","description":"If the permissionOverwrites match the parent channel, null if no parent","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":84,"file":"GuildChannel.js","path":"src/structures"}},{"name":"position","description":"The position of the channel","readonly":true,"type":[[["number"]]],"meta":{"line":102,"file":"GuildChannel.js","path":"src/structures"}},{"name":"members","description":"A collection of members that can see this channel, mapped by their ID","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":283,"file":"GuildChannel.js","path":"src/structures"}},{"name":"deletable","description":"Whether the channel is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":573,"file":"GuildChannel.js","path":"src/structures"}},{"name":"manageable","description":"Whether the channel is manageable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":582,"file":"GuildChannel.js","path":"src/structures"}},{"name":"viewable","description":"Whether the channel is viewable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":599,"file":"GuildChannel.js","path":"src/structures"}},{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"permissionsFor","description":"Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.","params":[{"name":"memberOrRole","description":"The member or role to obtain the overall permissions for","type":[[["GuildMemberResolvable"]],[["RoleResolvable"]]]}],"returns":{"types":[[["Readonly","<"],["Permissions",">"]]],"nullable":true},"meta":{"line":112,"file":"GuildChannel.js","path":"src/structures"}},{"name":"memberPermissions","description":"Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.","access":"private","params":[{"name":"member","description":"The member to obtain the overall permissions for","type":[[["GuildMember"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":152,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rolePermissions","description":"Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.","access":"private","params":[{"name":"role","description":"The role to obtain the overall permissions for","type":[[["Role"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":178,"file":"GuildChannel.js","path":"src/structures"}},{"name":"overwritePermissions","description":"Replaces the permission overwrites in this channel.","examples":["channel.overwritePermissions([\n {\n id: message.author.id,\n deny: ['VIEW_CHANNEL'],\n },\n], 'Needed to change permissions');"],"params":[{"name":"overwrites","description":"Permission overwrites the channel gets updated with","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"reason","description":"Reason for updating the channel overwrites","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":206,"file":"GuildChannel.js","path":"src/structures"}},{"name":"updateOverwrite","description":"Updates Overwrites for a user or role in this channel. (creates if non-existent)","examples":["// Update or Create permission overwrites for a message author\nmessage.channel.updateOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":229,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createOverwrite","description":"Overwrites the permissions for a user or role in this channel. (replaces if existent)","examples":["// Create or Replace permissions overwrites for a message author\nmessage.channel.createOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":252,"file":"GuildChannel.js","path":"src/structures"}},{"name":"lockPermissions","description":"Locks in the permission overwrites from the parent channel.","returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":272,"file":"GuildChannel.js","path":"src/structures"}},{"name":"edit","description":"Edits the channel.","examples":["// Edit a channel\nchannel.edit({ name: 'new-channel' })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"data","description":"The new data for the channel","type":[[["ChannelData"]]]},{"name":"reason","description":"Reason for editing this channel","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":321,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setName","description":"Sets a new name for the guild channel.","examples":["// Set a new channel name\nchannel.setName('not_general')\n .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"The new name for the guild channel","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":386,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setParent","description":"Sets the category parent of this channel.","examples":["// Add a parent to a channel\nmessage.channel.setParent('355908108431917066', { lockPermissions: false })\n .then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))\n .catch(console.error);"],"params":[{"name":"channel","description":"Parent channel","type":[[["CategoryChannel"]],[["Snowflake"]]]},{"name":"options","description":"Options to pass","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.lockPermissions","description":"Lock the permissions to what the parent's permissions are","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for modifying the parent of this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":403,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setTopic","description":"Sets a new topic for the guild channel.","examples":["// Set a new channel topic\nchannel.setTopic('needs more rate limiting')\n .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))\n .catch(console.error);"],"params":[{"name":"topic","description":"The new topic for the guild channel","nullable":true,"type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's topic","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":425,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setPosition","description":"Sets a new position for the guild channel.","examples":["// Set a new channel position\nchannel.setPosition(2)\n .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))\n .catch(console.error);"],"params":[{"name":"position","description":"The new position for the guild channel","type":[[["number"]]]},{"name":"options","description":"Options for setting position","optional":true,"type":[[["Object"]]]},{"name":"options.relative","description":"Change the position relative to its current value","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for changing the position","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":442,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createInvite","description":"Creates an invite to this guild channel.","examples":["// Create an invite to a channel\nchannel.createInvite()\n .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n .catch(console.error);"],"params":[{"name":"options","description":"Options for the invite","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.temporary","description":"Whether members that joined via the invite should be automatically\nkicked after 24 hours if they have not yet received a role","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.maxAge","description":"How long the invite should last (in seconds, 0 for forever)","optional":true,"default":86400,"type":[[["number"]]]},{"name":"options.maxUses","description":"Maximum number of uses","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.unique","description":"Create a unique invite, or use an existing one with similar settings","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for creating this","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Invite",">"]]],"meta":{"line":475,"file":"GuildChannel.js","path":"src/structures"}},{"name":"fetchInvites","description":"Fetches a collection of invites to this guild channel.\nResolves with a collection mapping invites by their codes.","async":true,"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Invite",">>"]]],"meta":{"line":495,"file":"GuildChannel.js","path":"src/structures"}},{"name":"clone","description":"Clones this channel.","params":[{"name":"options","description":"The options","optional":true,"type":[[["Object"]]]},{"name":"options.name","description":"Name of the new channel","optional":true,"default":"this.name","type":[[["string"]]]},{"name":"options.permissionOverwrites","description":"Permission overwrites of the new channel","optional":true,"default":"this.permissionOverwrites","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"options.type","description":"Type of the new channel","optional":true,"default":"this.type","type":[[["string"]]]},{"name":"options.topic","description":"Topic of the new channel (only text)","optional":true,"default":"this.topic","type":[[["string"]]]},{"name":"options.nsfw","description":"Whether the new channel is nsfw (only text)","optional":true,"default":"this.nsfw","type":[[["boolean"]]]},{"name":"options.bitrate","description":"Bitrate of the new channel in bits (only voice)","optional":true,"default":"this.bitrate","type":[[["number"]]]},{"name":"options.userLimit","description":"Maximum amount of users allowed in the new channel (only voice)","optional":true,"default":"this.userLimit","type":[[["number"]]]},{"name":"options.rateLimitPerUser","description":"Ratelimit per user for the new channel (only text)","optional":true,"default":"this.rateLimitPerUser","type":[[["number"]]]},{"name":"options.parent","description":"Parent of the new channel","optional":true,"default":"this.parent","type":[[["ChannelResolvable"]]]},{"name":"options.reason","description":"Reason for cloning this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":522,"file":"GuildChannel.js","path":"src/structures"}},{"name":"equals","description":"Checks if this channel has the same type, topic, position, name, overwrites and ID as another channel.\nIn most cases, a simple `channel.id === channel2.id` will do, and is much faster too.","params":[{"name":"channel","description":"Channel to compare with","type":[[["GuildChannel"]]]}],"returns":[[["boolean"]]],"meta":{"line":548,"file":"GuildChannel.js","path":"src/structures"}},{"name":"delete","description":"Deletes this channel.","examples":["// Delete the channel\nchannel.delete('making room for new channels')\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"reason","description":"Reason for deleting this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":616,"file":"GuildChannel.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.","inherits":"Channel#toString","inherited":true,"examples":["// Logs: Hello from <#123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":72,"file":"Channel.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this channel.","inherits":"Channel#fetch","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":97,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","inherits":"Channel#isText","inherited":true,"returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":22,"file":"GuildChannel.js","path":"src/structures"}},{"name":"GuildEmoji","description":"Represents a custom emoji.","extends":[[["BaseGuildEmoji"]]],"construct":{"name":"GuildEmoji","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the guild emoji","type":[[["Object"]]]},{"name":"guild","description":"The guild the guild emoji is part of","type":[[["Guild"]]]}]},"props":[{"name":"author","description":"The user who created this emoji","nullable":true,"type":[[["User"]]],"meta":{"line":25,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"guild","description":"The guild this emoji is part of","type":[[["Guild"]]],"meta":{"line":28,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"deletable","description":"Whether the emoji is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":50,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"roles","description":"A manager for roles this emoji is active for.","readonly":true,"type":[[["GuildEmojiRoleManager"]]],"meta":{"line":60,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"_roles","description":"Array of role ids this emoji is active for","access":"private","type":[[["Array","<"],["Snowflake",">"]]],"meta":{"line":24,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"requiresColons","description":"Whether or not this emoji requires colons surrounding it","nullable":true,"type":[[["boolean"]]],"meta":{"line":43,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"managed","description":"Whether this emoji is managed by an external service","nullable":true,"type":[[["boolean"]]],"meta":{"line":51,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"available","description":"Whether this emoji is available","nullable":true,"type":[[["boolean"]]],"meta":{"line":59,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"animated","description":"Whether this emoji is animated","type":[[["boolean"]]],"meta":{"line":17,"file":"Emoji.js","path":"src/structures"}},{"name":"name","description":"The name of this emoji","type":[[["string"]]],"meta":{"line":23,"file":"Emoji.js","path":"src/structures"}},{"name":"id","description":"The ID of this emoji","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":29,"file":"Emoji.js","path":"src/structures"}},{"name":"deleted","description":"Whether this emoji has been deleted","type":[[["boolean"]]],"meta":{"line":35,"file":"Emoji.js","path":"src/structures"}},{"name":"identifier","description":"The identifier of this emoji, used for message reactions","readonly":true,"type":[[["string"]]],"meta":{"line":43,"file":"Emoji.js","path":"src/structures"}},{"name":"url","description":"The URL to the emoji file if its a custom emoji","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":53,"file":"Emoji.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["number"]]],"meta":{"line":63,"file":"Emoji.js","path":"src/structures"}},{"name":"createdAt","description":"The time the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":73,"file":"Emoji.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"fetchAuthor","description":"Fetches the author for this emoji","async":true,"returns":[[["Promise","<"],["User",">"]]],"meta":{"line":68,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"edit","description":"Edits the emoji.","examples":["// Edit an emoji\nemoji.edit({ name: 'newemoji' })\n .then(e => console.log(`Edited emoji ${e}`))\n .catch(console.error);"],"params":[{"name":"data","description":"The new data for the emoji","type":[[["GuildEmojiEditData"]]]},{"name":"reason","description":"Reason for editing this emoji","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildEmoji",">"]]],"meta":{"line":100,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"setName","description":"Sets the name of the emoji.","params":[{"name":"name","description":"The new name for the emoji","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the emoji's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildEmoji",">"]]],"meta":{"line":125,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"delete","description":"Deletes the emoji.","params":[{"name":"reason","description":"Reason for deleting the emoji","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildEmoji",">"]]],"meta":{"line":134,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"equals","description":"Whether this emoji is the same as another one.","params":[{"name":"other","description":"The emoji to compare it to","type":[[["GuildEmoji"]],[["Object"]]]}],"returns":{"types":[[["boolean"]]],"description":"Whether the emoji is equal to the given emoji or not"},"meta":{"line":147,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord\ninstead of the Emoji object.","inherits":"Emoji#toString","inherited":true,"examples":["// Send a custom emoji from a guild:\nconst emoji = guild.emojis.cache.first();\nmsg.reply(`Hello! ${emoji}`);","// Send the emoji used in a reaction to the channel the reaction is part of\nreaction.message.channel.send(`The emoji used was: ${reaction.emoji}`);"],"returns":[[["string"]]],"meta":{"line":90,"file":"Emoji.js","path":"src/structures"}}],"meta":{"line":12,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"GuildMember","description":"Represents a member of a guild on Discord.","extends":[[["Base"]]],"implements":[[["TextBasedChannel"]]],"construct":{"name":"GuildMember","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the guild member","type":[[["Object"]]]},{"name":"guild","description":"The guild the member is part of","type":[[["Guild"]]]}]},"props":[{"name":"guild","description":"The guild that this member is part of","type":[[["Guild"]]],"meta":{"line":29,"file":"GuildMember.js","path":"src/structures"}},{"name":"joinedTimestamp","description":"The timestamp the member joined the guild at","nullable":true,"type":[[["number"]]],"meta":{"line":35,"file":"GuildMember.js","path":"src/structures"}},{"name":"lastMessageID","description":"The ID of the last message sent by the member in their guild, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":41,"file":"GuildMember.js","path":"src/structures"}},{"name":"lastMessageChannelID","description":"The ID of the channel for the last message sent by the member in their guild, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":47,"file":"GuildMember.js","path":"src/structures"}},{"name":"premiumSinceTimestamp","description":"The timestamp of when the member used their Nitro boost on the guild, if it was used","nullable":true,"type":[[["number"]]],"meta":{"line":53,"file":"GuildMember.js","path":"src/structures"}},{"name":"deleted","description":"Whether the member has been removed from the guild","type":[[["boolean"]]],"meta":{"line":59,"file":"GuildMember.js","path":"src/structures"}},{"name":"nickname","description":"The nickname of this member, if they have one","nullable":true,"type":[[["string"]]],"meta":{"line":65,"file":"GuildMember.js","path":"src/structures"}},{"name":"user","description":"The user that this guild member instance represents","type":[[["User"]]],"meta":{"line":77,"file":"GuildMember.js","path":"src/structures"}},{"name":"partial","description":"Whether this GuildMember is a partial","readonly":true,"type":[[["boolean"]]],"meta":{"line":97,"file":"GuildMember.js","path":"src/structures"}},{"name":"roles","description":"A manager for the roles belonging to this member","readonly":true,"type":[[["GuildMemberRoleManager"]]],"meta":{"line":106,"file":"GuildMember.js","path":"src/structures"}},{"name":"lastMessage","description":"The Message object of the last message sent by the member in their guild, if one was sent","readonly":true,"nullable":true,"type":[[["Message"]]],"meta":{"line":115,"file":"GuildMember.js","path":"src/structures"}},{"name":"voice","description":"The voice state of this member","readonly":true,"type":[[["VoiceState"]]],"meta":{"line":125,"file":"GuildMember.js","path":"src/structures"}},{"name":"joinedAt","description":"The time this member joined the guild","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":136,"file":"GuildMember.js","path":"src/structures"}},{"name":"premiumSince","description":"The time of when the member used their Nitro boost on the guild, if it was used","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":145,"file":"GuildMember.js","path":"src/structures"}},{"name":"presence","description":"The presence of this guild member","readonly":true,"type":[[["Presence"]]],"meta":{"line":154,"file":"GuildMember.js","path":"src/structures"}},{"name":"displayColor","description":"The displayed color of this member in base 10","readonly":true,"type":[[["number"]]],"meta":{"line":173,"file":"GuildMember.js","path":"src/structures"}},{"name":"displayHexColor","description":"The displayed color of this member in hexadecimal","readonly":true,"type":[[["string"]]],"meta":{"line":183,"file":"GuildMember.js","path":"src/structures"}},{"name":"id","description":"The ID of this member","readonly":true,"type":[[["Snowflake"]]],"meta":{"line":193,"file":"GuildMember.js","path":"src/structures"}},{"name":"displayName","description":"The nickname of this member, or their username if they don't have one","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":202,"file":"GuildMember.js","path":"src/structures"}},{"name":"permissions","description":"The overall set of permissions for this member, taking only roles into account","readonly":true,"type":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":211,"file":"GuildMember.js","path":"src/structures"}},{"name":"manageable","description":"Whether the client user is above this user in the hierarchy, according to role position and guild ownership.\nThis is a prerequisite for many moderative actions.","readonly":true,"type":[[["boolean"]]],"meta":{"line":222,"file":"GuildMember.js","path":"src/structures"}},{"name":"kickable","description":"Whether this member is kickable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":235,"file":"GuildMember.js","path":"src/structures"}},{"name":"bannable","description":"Whether this member is bannable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":244,"file":"GuildMember.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"permissionsIn","description":"Returns `channel.permissionsFor(guildMember)`. Returns permissions for a member in a guild channel,\ntaking into account roles and permission overwrites.","params":[{"name":"channel","description":"The guild channel to use as context","type":[[["ChannelResolvable"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":254,"file":"GuildMember.js","path":"src/structures"}},{"name":"hasPermission","description":"Checks if any of this member's roles have a permission.","params":[{"name":"permission","description":"Permission(s) to check for","type":[[["PermissionResolvable"]]]},{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.checkAdmin","description":"Whether to allow the administrator permission to override","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.checkOwner","description":"Whether to allow being the guild's owner to override","optional":true,"default":true,"type":[[["boolean"]]]}],"returns":[[["boolean"]]],"meta":{"line":268,"file":"GuildMember.js","path":"src/structures"}},{"name":"edit","description":"Edits this member.","params":[{"name":"data","description":"The data to edit the member with","type":[[["GuildMemberEditData"]]]},{"name":"reason","description":"Reason for editing this user","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":291,"file":"GuildMember.js","path":"src/structures"}},{"name":"setNickname","description":"Sets the nickname for this member.","params":[{"name":"nick","description":"The nickname for the guild member","type":[[["string"]]]},{"name":"reason","description":"Reason for setting the nickname","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":326,"file":"GuildMember.js","path":"src/structures"}},{"name":"createDM","description":"Creates a DM channel between the client and this member.","returns":[[["Promise","<"],["DMChannel",">"]]],"meta":{"line":334,"file":"GuildMember.js","path":"src/structures"}},{"name":"deleteDM","description":"Deletes any DMs with this member.","returns":[[["Promise","<"],["DMChannel",">"]]],"meta":{"line":342,"file":"GuildMember.js","path":"src/structures"}},{"name":"kick","description":"Kicks this member from the guild.","params":[{"name":"reason","description":"Reason for kicking user","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":351,"file":"GuildMember.js","path":"src/structures"}},{"name":"ban","description":"Bans this guild member.","examples":["// ban a guild member\nguildMember.ban({ days: 7, reason: 'They deserved it' })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"options","description":"Options for the ban","optional":true,"type":[[["Object"]]]},{"name":"options.days","description":"Number of days of messages to delete, must be between 0 and 7","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.reason","description":"Reason for banning","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":371,"file":"GuildMember.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this GuildMember.","params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":380,"file":"GuildMember.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the user's mention instead of the GuildMember object.","examples":["// Logs: Hello from <@123456789012345678>!\nconsole.log(`Hello from ${member}!`);"],"returns":[[["string"]]],"meta":{"line":391,"file":"GuildMember.js","path":"src/structures"}},{"name":"send","description":"Sends a message to this channel.","implements":["TextBasedChannel#send"],"examples":["// Send a basic message\nchannel.send('hello!')\n .then(message => console.log(`Sent message: ${message.content}`))\n .catch(console.error);","// Send a remote file\nchannel.send({\n files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n})\n .then(console.log)\n .catch(console.error);","// Send a local file\nchannel.send({\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);","// Send an embed with a local image inside\nchannel.send('This is an embed', {\n embed: {\n thumbnail: {\n url: 'attachment://file.jpg'\n }\n },\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"content","description":"The content to send","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["MessageOptions"]],[["MessageAdditions"]]]}],"async":true,"returns":[[["Promise","<("],["Message","|"],["Array","<"],["Message",">)>"]]],"meta":{"line":153,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}}],"meta":{"line":16,"file":"GuildMember.js","path":"src/structures"}},{"name":"GuildPreview","description":"Represents the data about the guild any bot can preview, connected to the specified guild.","extends":[[["Base"]]],"props":[{"name":"id","description":"The id of this guild","type":[[["string"]]],"meta":{"line":30,"file":"GuildPreview.js","path":"src/structures"}},{"name":"name","description":"The name of this guild","type":[[["string"]]],"meta":{"line":36,"file":"GuildPreview.js","path":"src/structures"}},{"name":"icon","description":"The icon of this guild","nullable":true,"type":[[["string"]]],"meta":{"line":42,"file":"GuildPreview.js","path":"src/structures"}},{"name":"splash","description":"The splash icon of this guild","nullable":true,"type":[[["string"]]],"meta":{"line":48,"file":"GuildPreview.js","path":"src/structures"}},{"name":"discoverySplash","description":"The discovery splash icon of this guild","nullable":true,"type":[[["string"]]],"meta":{"line":54,"file":"GuildPreview.js","path":"src/structures"}},{"name":"features","description":"An array of enabled guild features","type":[[["Array","<"],["Features",">"]]],"meta":{"line":60,"file":"GuildPreview.js","path":"src/structures"}},{"name":"approximateMemberCount","description":"The approximate count of members in this guild","type":[[["number"]]],"meta":{"line":66,"file":"GuildPreview.js","path":"src/structures"}},{"name":"approximatePresenceCount","description":"The approximate count of online members in this guild","type":[[["number"]]],"meta":{"line":72,"file":"GuildPreview.js","path":"src/structures"}},{"name":"description","description":"The description for this guild","nullable":true,"type":[[["string"]]],"meta":{"line":78,"file":"GuildPreview.js","path":"src/structures"}},{"name":"emojis","description":"Collection of emojis belonging to this guild","type":[[["Collection","<"],["Snowflake",", "],["GuildPreviewEmoji",">"]]],"meta":{"line":85,"file":"GuildPreview.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"_patch","description":"Builds the guild with the provided data.","access":"private","params":[{"name":"data","description":"The raw data of the guild","type":[["*"]]}],"meta":{"line":25,"file":"GuildPreview.js","path":"src/structures"}},{"name":"splashURL","description":"The URL to this guild's splash.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":99,"file":"GuildPreview.js","path":"src/structures"}},{"name":"discoverySplashURL","description":"The URL to this guild's discovery splash.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":109,"file":"GuildPreview.js","path":"src/structures"}},{"name":"iconURL","description":"The URL to this guild's icon.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":119,"file":"GuildPreview.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this guild.","returns":[[["Promise","<"],["GuildPreview",">"]]],"meta":{"line":128,"file":"GuildPreview.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the guild's name instead of the Guild object.","examples":["// Logs: Hello from My Guild!\nconsole.log(`Hello from ${previewGuild}!`);"],"returns":[[["string"]]],"meta":{"line":145,"file":"GuildPreview.js","path":"src/structures"}}],"meta":{"line":11,"file":"GuildPreview.js","path":"src/structures"}},{"name":"GuildPreviewEmoji","description":"Represents an instance of an emoji belonging to a public guild obtained through Discord's preview endpoint.","extends":[[["BaseGuildEmoji"]]],"props":[{"name":"guild","description":"The public guild this emoji is part of","type":[[["GuildPreview"]]],"meta":{"line":10,"file":"GuildPreviewEmoji.js","path":"src/structures"}},{"name":"roles","description":"Set of roles this emoji is active for","readonly":true,"type":[[["Set","<"],["Snowflake",">"]]],"meta":{"line":21,"file":"GuildPreviewEmoji.js","path":"src/structures"}},{"name":"_roles","description":"Array of role ids this emoji is active for","access":"private","type":[[["Array","<"],["Snowflake",">"]]],"meta":{"line":24,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"requiresColons","description":"Whether or not this emoji requires colons surrounding it","nullable":true,"type":[[["boolean"]]],"meta":{"line":43,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"managed","description":"Whether this emoji is managed by an external service","nullable":true,"type":[[["boolean"]]],"meta":{"line":51,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"available","description":"Whether this emoji is available","nullable":true,"type":[[["boolean"]]],"meta":{"line":59,"file":"BaseGuildEmoji.js","path":"src/structures"}},{"name":"animated","description":"Whether this emoji is animated","type":[[["boolean"]]],"meta":{"line":17,"file":"Emoji.js","path":"src/structures"}},{"name":"name","description":"The name of this emoji","type":[[["string"]]],"meta":{"line":23,"file":"Emoji.js","path":"src/structures"}},{"name":"id","description":"The ID of this emoji","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":29,"file":"Emoji.js","path":"src/structures"}},{"name":"deleted","description":"Whether this emoji has been deleted","type":[[["boolean"]]],"meta":{"line":35,"file":"Emoji.js","path":"src/structures"}},{"name":"identifier","description":"The identifier of this emoji, used for message reactions","readonly":true,"type":[[["string"]]],"meta":{"line":43,"file":"Emoji.js","path":"src/structures"}},{"name":"url","description":"The URL to the emoji file if its a custom emoji","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":53,"file":"Emoji.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["number"]]],"meta":{"line":63,"file":"Emoji.js","path":"src/structures"}},{"name":"createdAt","description":"The time the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":73,"file":"Emoji.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"toString","description":"When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord\ninstead of the Emoji object.","inherits":"Emoji#toString","inherited":true,"examples":["// Send a custom emoji from a guild:\nconst emoji = guild.emojis.cache.first();\nmsg.reply(`Hello! ${emoji}`);","// Send the emoji used in a reaction to the channel the reaction is part of\nreaction.message.channel.send(`The emoji used was: ${reaction.emoji}`);"],"returns":[[["string"]]],"meta":{"line":90,"file":"Emoji.js","path":"src/structures"}}],"meta":{"line":9,"file":"GuildPreviewEmoji.js","path":"src/structures"}},{"name":"GuildTemplate","description":"Represents the template for a guild.","extends":[[["Base"]]],"construct":{"name":"GuildTemplate","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The raw data for the template","type":[[["Object"]]]}]},"props":[{"name":"code","description":"The unique code of this template","type":[[["string"]]],"meta":{"line":32,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"name","description":"The name of this template","type":[[["string"]]],"meta":{"line":38,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"description","description":"The description of this template","nullable":true,"type":[[["string"]]],"meta":{"line":44,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"usageCount","description":"The amount of times this template has been used","type":[[["number"]]],"meta":{"line":50,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"creatorID","description":"The ID of the user that created this template","type":[[["Snowflake"]]],"meta":{"line":56,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"creator","description":"The user that created this template","type":[[["User"]]],"meta":{"line":62,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"createdAt","description":"The time of when this template was created at","type":[[["Date"]]],"meta":{"line":68,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"updatedAt","description":"The time of when this template was last synced to the guild","type":[[["Date"]]],"meta":{"line":74,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"guildID","description":"The ID of the guild that this template belongs to","type":[[["Snowflake"]]],"meta":{"line":80,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"serializedGuild","description":"The data of the guild that this template would create","see":["{@link https://discord.com/developers/docs/resources/guild#guild-resource}"],"type":[[["Object"]]],"meta":{"line":87,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"unSynced","description":"Whether this template has unsynced changes","nullable":true,"type":[[["boolean"]]],"meta":{"line":93,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp of when this template was created at","readonly":true,"type":[[["number"]]],"meta":{"line":182,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"updatedTimestamp","description":"The timestamp of when this template was last synced to the guild","readonly":true,"type":[[["number"]]],"meta":{"line":191,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"guild","description":"The guild that this template belongs to","readonly":true,"nullable":true,"type":[[["Guild"]]],"meta":{"line":200,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"url","description":"The URL of this template","readonly":true,"type":[[["string"]]],"meta":{"line":209,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"_patch","description":"Builds or updates the template with the provided data.","access":"private","params":[{"name":"data","description":"The raw data for the template","type":[[["Object"]]]}],"returns":[[["GuildTemplate"]]],"meta":{"line":27,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"createGuild","description":"Creates a guild based from this template.\nThis is only available to bots in fewer than 10 guilds.","params":[{"name":"name","description":"The name of the guild","type":[[["string"]]]},{"name":"icon","description":"The icon for the guild","optional":true,"type":[[["BufferResolvable"]],[["Base64Resolvable"]]]}],"async":true,"returns":[[["Promise","<"],["Guild",">"]]],"meta":{"line":105,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"edit","description":"Updates the metadata on this template.","params":[{"name":"options","description":"Options for the template","type":[[["Object"]]]},{"name":"options.name","description":"The name of this template","optional":true,"type":[[["string"]]]},{"name":"options.description","description":"The description of this template","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildTemplate",">"]]],"meta":{"line":145,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"delete","description":"Deletes this template.","returns":[[["Promise","<"],["GuildTemplate",">"]]],"meta":{"line":157,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"sync","description":"Syncs this template to the current state of the guild.","returns":[[["Promise","<"],["GuildTemplate",">"]]],"meta":{"line":169,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the templates's code instead of the template object.","examples":["// Logs: Template: FKvmczH2HyUf\nconsole.log(`Template: ${guildTemplate}!`);"],"returns":[[["string"]]],"meta":{"line":220,"file":"GuildTemplate.js","path":"src/structures"}}],"meta":{"line":11,"file":"GuildTemplate.js","path":"src/structures"}},{"name":"Integration","description":"Represents a guild integration.","props":[{"name":"guild","description":"The guild this integration belongs to","type":[[["Guild"]]],"meta":{"line":24,"file":"Integration.js","path":"src/structures"}},{"name":"id","description":"The integration id","type":[[["Snowflake"]]],"meta":{"line":30,"file":"Integration.js","path":"src/structures"}},{"name":"name","description":"The integration name","type":[[["string"]]],"meta":{"line":36,"file":"Integration.js","path":"src/structures"}},{"name":"type","description":"The integration type (twitch, youtube, etc)","type":[[["string"]]],"meta":{"line":42,"file":"Integration.js","path":"src/structures"}},{"name":"enabled","description":"Whether this integration is enabled","type":[[["boolean"]]],"meta":{"line":48,"file":"Integration.js","path":"src/structures"}},{"name":"syncing","description":"Whether this integration is syncing","type":[[["boolean"]]],"meta":{"line":54,"file":"Integration.js","path":"src/structures"}},{"name":"role","description":"The role that this integration uses for subscribers","type":[[["Role"]]],"meta":{"line":60,"file":"Integration.js","path":"src/structures"}},{"name":"user","description":"The user for this integration","nullable":true,"type":[[["User"]]],"meta":{"line":67,"file":"Integration.js","path":"src/structures"}},{"name":"account","description":"The account integration information","type":[[["IntegrationAccount"]]],"meta":{"line":76,"file":"Integration.js","path":"src/structures"}},{"name":"syncedAt","description":"The last time this integration was last synced","type":[[["number"]]],"meta":{"line":82,"file":"Integration.js","path":"src/structures"}},{"name":"expireBehavior","description":"The behavior of expiring subscribers","type":[[["number"]]],"meta":{"line":91,"file":"Integration.js","path":"src/structures"}},{"name":"expireGracePeriod","description":"The grace period before expiring subscribers","type":[[["number"]]],"meta":{"line":97,"file":"Integration.js","path":"src/structures"}},{"name":"application","description":"The application for this integration","nullable":true,"type":[[["IntegrationApplication"]]],"meta":{"line":107,"file":"Integration.js","path":"src/structures"}}],"methods":[{"name":"sync","description":"Sync this integration","returns":[[["Promise","<"],["Integration",">"]]],"meta":{"line":118,"file":"Integration.js","path":"src/structures"}},{"name":"edit","description":"Edits this integration.","params":[{"name":"data","description":"The data to edit this integration with","type":[[["IntegrationEditData"]]]},{"name":"reason","description":"Reason for editing this integration","type":[[["string"]]]}],"returns":[[["Promise","<"],["Integration",">"]]],"meta":{"line":144,"file":"Integration.js","path":"src/structures"}},{"name":"delete","description":"Deletes this integration.","params":[{"name":"reason","description":"Reason for deleting this integration","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Integration",">"]]],"meta":{"line":169,"file":"Integration.js","path":"src/structures"}}],"meta":{"line":16,"file":"Integration.js","path":"src/structures"}},{"name":"IntegrationApplication","description":"Represents an Integration's OAuth2 Application.","extends":[[["Application"]]],"props":[{"name":"bot","description":"The bot {@link User user} for this application","nullable":true,"type":[[["User"]]],"meta":{"line":18,"file":"IntegrationApplication.js","path":"src/structures"}},{"name":"id","description":"The ID of the app","type":[[["Snowflake"]]],"meta":{"line":24,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"name","description":"The name of the app","type":[[["string"]]],"meta":{"line":30,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"description","description":"The app's description","type":[[["string"]]],"meta":{"line":36,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"icon","description":"The app's icon hash","type":[[["string"]]],"meta":{"line":42,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"createdTimestamp","description":"The timestamp the app was created at","readonly":true,"type":[[["number"]]],"meta":{"line":50,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"createdAt","description":"The time the app was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":59,"file":"Application.js","path":"src/structures/interfaces"}}],"methods":[{"name":"iconURL","description":"A link to the application's icon.","inherits":"Application#iconURL","inherited":true,"params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"description":"URL to the icon","nullable":true},"meta":{"line":68,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"coverImage","description":"A link to this application's cover image.","inherits":"Application#coverImage","inherited":true,"params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"description":"URL to the cover image","nullable":true},"meta":{"line":78,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"fetchAssets","description":"Gets the clients rich presence assets.","inherits":"Application#fetchAssets","inherited":true,"returns":[[["Promise","<"],["Array","<"],["ApplicationAsset",">>"]]],"meta":{"line":95,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the application's name instead of the\nOauth2Application object.","inherits":"Application#toString","inherited":true,"examples":["// Logs: Application name: My App\nconsole.log(`Application name: ${application}`);"],"returns":[[["string"]]],"meta":{"line":116,"file":"Application.js","path":"src/structures/interfaces"}}],"meta":{"line":9,"file":"IntegrationApplication.js","path":"src/structures"}},{"name":"Application","description":"Represents an OAuth2 Application.","abstract":true,"props":[{"name":"id","description":"The ID of the app","type":[[["Snowflake"]]],"meta":{"line":24,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"name","description":"The name of the app","type":[[["string"]]],"meta":{"line":30,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"description","description":"The app's description","type":[[["string"]]],"meta":{"line":36,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"icon","description":"The app's icon hash","type":[[["string"]]],"meta":{"line":42,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"createdTimestamp","description":"The timestamp the app was created at","readonly":true,"type":[[["number"]]],"meta":{"line":50,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"createdAt","description":"The time the app was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":59,"file":"Application.js","path":"src/structures/interfaces"}}],"methods":[{"name":"iconURL","description":"A link to the application's icon.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"description":"URL to the icon","nullable":true},"meta":{"line":68,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"coverImage","description":"A link to this application's cover image.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"description":"URL to the cover image","nullable":true},"meta":{"line":78,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"fetchAssets","description":"Gets the clients rich presence assets.","returns":[[["Promise","<"],["Array","<"],["ApplicationAsset",">>"]]],"meta":{"line":95,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the application's name instead of the\nOauth2Application object.","examples":["// Logs: Application name: My App\nconsole.log(`Application name: ${application}`);"],"returns":[[["string"]]],"meta":{"line":116,"file":"Application.js","path":"src/structures/interfaces"}}],"meta":{"line":13,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"Collector","description":"Abstract class for defining a new Collector.","abstract":true,"props":[{"name":"client","description":"The client that instantiated this Collector","readonly":true,"type":[[["Client"]]],"meta":{"line":31,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"filter","description":"The filter applied to this collector","type":[[["CollectorFilter"]]],"meta":{"line":43,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"options","description":"The options of this collector","type":[[["CollectorOptions"]]],"meta":{"line":49,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"collected","description":"The items collected by this collector","type":[[["Collection"]]],"meta":{"line":55,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"ended","description":"Whether this collector has finished collecting","type":[[["boolean"]]],"meta":{"line":61,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"_timeout","description":"Timeout for cleanup","access":"private","nullable":true,"type":[[["Timeout"]]],"meta":{"line":68,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"_idletimeout","description":"Timeout for cleanup due to inactivity","access":"private","nullable":true,"type":[[["Timeout"]]],"meta":{"line":75,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"next","description":"Returns a promise that resolves with the next collected element;\nrejects with collected elements if the collector finishes without receiving a next element","readonly":true,"type":[[["Promise"]]],"meta":{"line":137,"file":"Collector.js","path":"src/structures/interfaces"}}],"methods":[{"name":"handleCollect","description":"Call this to handle an event as a collectable element. Accepts any event data as parameters.","emits":["Collector#event:collect"],"params":[{"name":"args","description":"The arguments emitted by the listener","variable":true,"type":[["*"]]}],"async":true,"meta":{"line":89,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"handleDispose","description":"Call this to remove an element from the collection. Accepts any event data as parameters.","emits":["Collector#event:dispose"],"params":[{"name":"args","description":"The arguments emitted by the listener","variable":true,"type":[["*"]]}],"meta":{"line":115,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"stop","description":"Stops this collector and emits the `end` event.","emits":["Collector#event:end"],"params":[{"name":"reason","description":"The reason this collector is ending","optional":true,"default":"'user'","type":[[["string"]]]}],"meta":{"line":169,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"resetTimer","description":"Resets the collectors timeout and idle timer.","params":[{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.time","description":"How long to run the collector for in milliseconds","optional":true,"type":[[["number"]]]},{"name":"options.idle","description":"How long to stop the collector after inactivity in milliseconds","optional":true,"type":[[["number"]]]}],"meta":{"line":197,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"checkEnd","description":"Checks whether the collector should end, and if so, ends it.","meta":{"line":211,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"collect","description":"Handles incoming events from the `handleCollect` function. Returns null if the event should not\nbe collected, or returns an object describing the data that should be stored.","see":["Collector#handleCollect"],"abstract":true,"params":[{"name":"args","description":"Any args the event listener emits","variable":true,"type":[["*"]]}],"returns":{"types":[[["Object"]]],"description":"Data to insert into collection, if any","nullable":true},"meta":{"line":260,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"dispose","description":"Handles incoming events from the `handleDispose`. Returns null if the event should not\nbe disposed, or returns the key that should be removed.","see":["Collector#handleDispose"],"abstract":true,"params":[{"name":"args","description":"Any args the event listener emits","variable":true,"type":[["*"]]}],"returns":{"types":[["*"]],"description":"Key to remove from the collection, if any","nullable":true},"meta":{"line":270,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"endReason","description":"The reason this collector has ended or will end with.","abstract":true,"returns":{"types":[[["string"]]],"description":"Reason to end the collector, if any","nullable":true},"meta":{"line":277,"file":"Collector.js","path":"src/structures/interfaces"}}],"events":[{"name":"collect","description":"Emitted whenever an element is collected.","params":[{"name":"args","description":"The arguments emitted by the listener","variable":true,"type":[["*"]]}],"meta":{"line":95,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"dispose","description":"Emitted whenever an element is disposed of.","params":[{"name":"args","description":"The arguments emitted by the listener","variable":true,"type":[["*"]]}],"meta":{"line":122,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"end","description":"Emitted when the collector is finished collecting.","params":[{"name":"collected","description":"The elements collected by the collector","type":[[["Collection"]]]},{"name":"reason","description":"The reason the collector ended","type":[[["string"]]]}],"meta":{"line":182,"file":"Collector.js","path":"src/structures/interfaces"}}],"meta":{"line":27,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"Invite","description":"Represents an invitation to a guild channel.\nThe only guaranteed properties are `code`, `channel`, and `url`. Other properties can be missing.","extends":[[["Base"]]],"props":[{"name":"guild","description":"The guild the invite is for","nullable":true,"type":[[["Guild"]]],"meta":{"line":23,"file":"Invite.js","path":"src/structures"}},{"name":"code","description":"The code for this invite","type":[[["string"]]],"meta":{"line":29,"file":"Invite.js","path":"src/structures"}},{"name":"presenceCount","description":"The approximate number of online members of the guild this invite is for","nullable":true,"type":[[["number"]]],"meta":{"line":35,"file":"Invite.js","path":"src/structures"}},{"name":"memberCount","description":"The approximate total number of members of the guild this invite is for","nullable":true,"type":[[["number"]]],"meta":{"line":41,"file":"Invite.js","path":"src/structures"}},{"name":"temporary","description":"Whether or not this invite is temporary","nullable":true,"type":[[["boolean"]]],"meta":{"line":47,"file":"Invite.js","path":"src/structures"}},{"name":"maxAge","description":"The maximum age of the invite, in seconds, 0 if never expires","nullable":true,"type":[[["number"]]],"meta":{"line":53,"file":"Invite.js","path":"src/structures"}},{"name":"uses","description":"How many times this invite has been used","nullable":true,"type":[[["number"]]],"meta":{"line":59,"file":"Invite.js","path":"src/structures"}},{"name":"maxUses","description":"The maximum uses of this invite","nullable":true,"type":[[["number"]]],"meta":{"line":65,"file":"Invite.js","path":"src/structures"}},{"name":"inviter","description":"The user who created this invite","nullable":true,"type":[[["User"]]],"meta":{"line":71,"file":"Invite.js","path":"src/structures"}},{"name":"targetUser","description":"The target user for this invite","nullable":true,"type":[[["User"]]],"meta":{"line":77,"file":"Invite.js","path":"src/structures"}},{"name":"targetUserType","description":"The target user type","nullable":true,"type":[[["TargetUser"]]],"meta":{"line":89,"file":"Invite.js","path":"src/structures"}},{"name":"channel","description":"The channel the invite is for","type":[[["Channel"]]],"meta":{"line":95,"file":"Invite.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the invite was created at","nullable":true,"type":[[["number"]]],"meta":{"line":101,"file":"Invite.js","path":"src/structures"}},{"name":"createdAt","description":"The time the invite was created at","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":109,"file":"Invite.js","path":"src/structures"}},{"name":"deletable","description":"Whether the invite is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":118,"file":"Invite.js","path":"src/structures"}},{"name":"expiresTimestamp","description":"The timestamp the invite will expire at","readonly":true,"nullable":true,"type":[[["number"]]],"meta":{"line":133,"file":"Invite.js","path":"src/structures"}},{"name":"expiresAt","description":"The time the invite will expire at","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":142,"file":"Invite.js","path":"src/structures"}},{"name":"url","description":"The URL to the invite","readonly":true,"type":[[["string"]]],"meta":{"line":152,"file":"Invite.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"delete","description":"Deletes this invite.","params":[{"name":"reason","description":"Reason for deleting this invite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Invite",">"]]],"meta":{"line":161,"file":"Invite.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically concatenates the invite's URL instead of the object.","examples":["// Logs: Invite: https://discord.gg/A1b2C3\nconsole.log(`Invite: ${invite}`);"],"returns":[[["string"]]],"meta":{"line":172,"file":"Invite.js","path":"src/structures"}}],"meta":{"line":12,"file":"Invite.js","path":"src/structures"}},{"name":"Message","description":"Represents a message on Discord.","extends":[[["Base"]]],"construct":{"name":"Message","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the message","type":[[["Object"]]]},{"name":"channel","description":"The channel the message was sent in","type":[[["TextChannel"]],[["DMChannel"]],[["NewsChannel"]]]}]},"props":[{"name":"channel","description":"The channel that the message was sent in","type":[[["TextChannel"]],[["DMChannel"]],[["NewsChannel"]]],"meta":{"line":36,"file":"Message.js","path":"src/structures"}},{"name":"deleted","description":"Whether this message has been deleted","type":[[["boolean"]]],"meta":{"line":42,"file":"Message.js","path":"src/structures"}},{"name":"id","description":"The ID of the message","type":[[["Snowflake"]]],"meta":{"line":52,"file":"Message.js","path":"src/structures"}},{"name":"type","description":"The type of the message","nullable":true,"type":[[["MessageType"]]],"meta":{"line":59,"file":"Message.js","path":"src/structures"}},{"name":"system","description":"Whether or not this message was sent by Discord, not actually a user (e.g. pin notifications)","nullable":true,"type":[[["boolean"]]],"meta":{"line":65,"file":"Message.js","path":"src/structures"}},{"name":"content","description":"The content of the message","nullable":true,"type":[[["string"]]],"meta":{"line":76,"file":"Message.js","path":"src/structures"}},{"name":"author","description":"The author of the message","nullable":true,"type":[[["User"]]],"meta":{"line":86,"file":"Message.js","path":"src/structures"}},{"name":"pinned","description":"Whether or not this message is pinned","nullable":true,"type":[[["boolean"]]],"meta":{"line":96,"file":"Message.js","path":"src/structures"}},{"name":"tts","description":"Whether or not the message was Text-To-Speech","nullable":true,"type":[[["boolean"]]],"meta":{"line":106,"file":"Message.js","path":"src/structures"}},{"name":"nonce","description":"A random number or string used for checking message delivery\nThis is only received after the message was sent successfully, and\nlost if re-fetched","nullable":true,"type":[[["string"]]],"meta":{"line":117,"file":"Message.js","path":"src/structures"}},{"name":"embeds","description":"A list of embeds in the message - e.g. YouTube Player","type":[[["Array","<"],["MessageEmbed",">"]]],"meta":{"line":123,"file":"Message.js","path":"src/structures"}},{"name":"attachments","description":"A collection of attachments in the message - e.g. Pictures - mapped by their ID","type":[[["Collection","<"],["Snowflake",", "],["MessageAttachment",">"]]],"meta":{"line":129,"file":"Message.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the message was sent at","type":[[["number"]]],"meta":{"line":140,"file":"Message.js","path":"src/structures"}},{"name":"editedTimestamp","description":"The timestamp the message was last edited at (if applicable)","nullable":true,"type":[[["number"]]],"meta":{"line":146,"file":"Message.js","path":"src/structures"}},{"name":"reactions","description":"A manager of the reactions belonging to this message","type":[[["ReactionManager"]]],"meta":{"line":152,"file":"Message.js","path":"src/structures"}},{"name":"mentions","description":"All valid mentions that the message contains","type":[[["MessageMentions"]]],"meta":{"line":163,"file":"Message.js","path":"src/structures"}},{"name":"webhookID","description":"ID of the webhook that sent the message, if applicable","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":169,"file":"Message.js","path":"src/structures"}},{"name":"application","description":"Supplemental application information for group activities","nullable":true,"type":[[["ClientApplication"]]],"meta":{"line":175,"file":"Message.js","path":"src/structures"}},{"name":"activity","description":"Group activity","nullable":true,"type":[[["MessageActivity"]]],"meta":{"line":181,"file":"Message.js","path":"src/structures"}},{"name":"_edits","description":"The previous versions of the message, sorted with the most recent first","access":"private","type":[[["Array","<"],["Message",">"]]],"meta":{"line":193,"file":"Message.js","path":"src/structures"}},{"name":"flags","description":"Flags that are applied to the message","type":[[["Readonly","<"],["MessageFlags",">"]]],"meta":{"line":205,"file":"Message.js","path":"src/structures"}},{"name":"reference","description":"Message reference data","nullable":true,"type":[[["MessageReference"]]],"meta":{"line":219,"file":"Message.js","path":"src/structures"}},{"name":"partial","description":"Whether or not this message is a partial","readonly":true,"type":[[["boolean"]]],"meta":{"line":233,"file":"Message.js","path":"src/structures"}},{"name":"member","description":"Represents the author of the message as a guild member.\nOnly available if the message comes from a guild where the author is still a member","readonly":true,"nullable":true,"type":[[["GuildMember"]]],"meta":{"line":286,"file":"Message.js","path":"src/structures"}},{"name":"createdAt","description":"The time the message was sent at","readonly":true,"type":[[["Date"]]],"meta":{"line":295,"file":"Message.js","path":"src/structures"}},{"name":"editedAt","description":"The time the message was last edited at (if applicable)","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":304,"file":"Message.js","path":"src/structures"}},{"name":"guild","description":"The guild the message was sent in (if in a guild channel)","readonly":true,"nullable":true,"type":[[["Guild"]]],"meta":{"line":313,"file":"Message.js","path":"src/structures"}},{"name":"url","description":"The url to jump to this message","readonly":true,"type":[[["string"]]],"meta":{"line":322,"file":"Message.js","path":"src/structures"}},{"name":"cleanContent","description":"The message contents with all mentions replaced by the equivalent text.\nIf mentions cannot be resolved to a name, the relevant mention in the message content will not be converted.","readonly":true,"type":[[["string"]]],"meta":{"line":332,"file":"Message.js","path":"src/structures"}},{"name":"edits","description":"An array of cached versions of the message, including the current version\nSorted from latest (first) to oldest (last)","readonly":true,"type":[[["Array","<"],["Message",">"]]],"meta":{"line":388,"file":"Message.js","path":"src/structures"}},{"name":"editable","description":"Whether the message is editable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":399,"file":"Message.js","path":"src/structures"}},{"name":"deletable","description":"Whether the message is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":408,"file":"Message.js","path":"src/structures"}},{"name":"pinnable","description":"Whether the message is pinnable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":421,"file":"Message.js","path":"src/structures"}},{"name":"crosspostable","description":"Whether the message is crosspostable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":433,"file":"Message.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"patch","description":"Updates the message and returns the old message.","access":"private","params":[{"name":"data","description":"Raw Discord message update data","type":[[["Object"]]]}],"returns":[[["Message"]]],"meta":{"line":243,"file":"Message.js","path":"src/structures"}},{"name":"createReactionCollector","description":"Creates a reaction collector.","examples":["// Create a reaction collector\nconst filter = (reaction, user) => reaction.emoji.name === '👌' && user.id === 'someID';\nconst collector = message.createReactionCollector(filter, { time: 15000 });\ncollector.on('collect', r => console.log(`Collected ${r.emoji.name}`));\ncollector.on('end', collected => console.log(`Collected ${collected.size} items`));"],"params":[{"name":"filter","description":"The filter to apply","type":[[["CollectorFilter"]]]},{"name":"options","description":"Options to send to the collector","optional":true,"default":"{}","type":[[["ReactionCollectorOptions"]]]}],"returns":[[["ReactionCollector"]]],"meta":{"line":349,"file":"Message.js","path":"src/structures"}},{"name":"awaitReactions","description":"Similar to createReactionCollector but in promise form.\nResolves with a collection of reactions that pass the specified filter.","examples":["// Create a reaction collector\nconst filter = (reaction, user) => reaction.emoji.name === '👌' && user.id === 'someID'\nmessage.awaitReactions(filter, { time: 15000 })\n .then(collected => console.log(`Collected ${collected.size} reactions`))\n .catch(console.error);"],"params":[{"name":"filter","description":"The filter function to use","type":[[["CollectorFilter"]]]},{"name":"options","description":"Optional options to pass to the internal collector","optional":true,"default":"{}","type":[[["AwaitReactionsOptions"]]]}],"returns":[[["Promise","<"],["Collection","<"],["string",", "],["MessageReaction",">>"]]],"meta":{"line":372,"file":"Message.js","path":"src/structures"}},{"name":"edit","description":"Edits the content of the message.","examples":["// Update the content of a message\nmessage.edit('This is my new content!')\n .then(msg => console.log(`Updated the content of a message to ${msg.content}`))\n .catch(console.error);"],"params":[{"name":"content","description":"The new content for the message","optional":true,"type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"type":[[["MessageEditOptions"]],[["MessageEmbed"]]]}],"returns":[[["Promise","<"],["Message",">"]]],"meta":{"line":465,"file":"Message.js","path":"src/structures"}},{"name":"crosspost","description":"Publishes a message in an announcement channel to all channels following it.","examples":["// Crosspost a message\nif (message.channel.type === 'news') {\n message.crosspost()\n .then(() => console.log('Crossposted message'))\n .catch(console.error);\n}"],"async":true,"returns":[[["Promise","<"],["Message",">"]]],"meta":{"line":486,"file":"Message.js","path":"src/structures"}},{"name":"pin","description":"Pins this message to the channel's pinned messages.","examples":["// Pin a message with a reason\nmessage.pin({ reason: 'important' })\n .then(console.log)\n .catch(console.error)"],"params":[{"name":"options","description":"Options for pinning","optional":true,"type":[[["Object"]]]},{"name":"options.reason","description":"Reason for pinning","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Message",">"]]],"meta":{"line":502,"file":"Message.js","path":"src/structures"}},{"name":"unpin","description":"Unpins this message from the channel's pinned messages.","examples":["// Unpin a message with a reason\nmessage.unpin({ reason: 'no longer relevant' })\n .then(console.log)\n .catch(console.error)"],"params":[{"name":"options","description":"Options for unpinning","optional":true,"type":[[["Object"]]]},{"name":"options.reason","description":"Reason for unpinning","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Message",">"]]],"meta":{"line":521,"file":"Message.js","path":"src/structures"}},{"name":"react","description":"Adds a reaction to the message.","examples":["// React to a message with a unicode emoji\nmessage.react('🤔')\n .then(console.log)\n .catch(console.error);","// React to a message with a custom emoji\nmessage.react(message.guild.emojis.cache.get('123456789012345678'))\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"emoji","description":"The emoji to react with","type":[[["EmojiIdentifierResolvable"]]]}],"returns":[[["Promise","<"],["MessageReaction",">"]]],"meta":{"line":544,"file":"Message.js","path":"src/structures"}},{"name":"delete","description":"Deletes the message.","examples":["// Delete a message\nmessage.delete({ timeout: 5000 })\n .then(msg => console.log(`Deleted message from ${msg.author.username} after 5 seconds`))\n .catch(console.error);"],"params":[{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.timeout","description":"How long to wait to delete the message in milliseconds","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.reason","description":"Reason for deleting this message, if it does not belong to the client user","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Message",">"]]],"meta":{"line":576,"file":"Message.js","path":"src/structures"}},{"name":"reply","description":"Replies to the message.","examples":["// Reply to a message\nmessage.reply('Hey, I\\'m a reply!')\n .then(() => console.log(`Sent a reply to ${message.author.username}`))\n .catch(console.error);"],"params":[{"name":"content","description":"The content for the message","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["MessageOptions"]],[["MessageAdditions"]]]}],"returns":[[["Promise","<("],["Message","|"],["Array","<"],["Message",">)>"]]],"meta":{"line":601,"file":"Message.js","path":"src/structures"}},{"name":"fetch","description":"Fetch this message.","params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Message",">"]]],"meta":{"line":614,"file":"Message.js","path":"src/structures"}},{"name":"fetchWebhook","description":"Fetches the webhook used to create this message.","returns":[[["Promise",""]]],"meta":{"line":622,"file":"Message.js","path":"src/structures"}},{"name":"suppressEmbeds","description":"Suppresses or unsuppresses embeds on a message","params":[{"name":"suppress","description":"If the embeds should be suppressed or not","optional":true,"default":true,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Message",">"]]],"meta":{"line":632,"file":"Message.js","path":"src/structures"}},{"name":"equals","description":"Used mainly internally. Whether two messages are identical in properties. If you want to compare messages\nwithout checking all the properties, use `message.id === message2.id`, which is much more efficient. This\nmethod allows you to see if there are differences in content, embeds, attachments, nonce and tts properties.","params":[{"name":"message","description":"The message to compare it to","type":[[["Message"]]]},{"name":"rawData","description":"Raw data passed through the WebSocket about this message","type":[[["Object"]]]}],"returns":[[["boolean"]]],"meta":{"line":652,"file":"Message.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically concatenates the message's content instead of the object.","examples":["// Logs: Message: This is a message!\nconsole.log(`Message: ${message}`);"],"returns":[[["string"]]],"meta":{"line":683,"file":"Message.js","path":"src/structures"}}],"meta":{"line":23,"file":"Message.js","path":"src/structures"}},{"name":"MessageAttachment","description":"Represents an attachment in a message.","construct":{"name":"MessageAttachment","params":[{"name":"attachment","description":"The file","type":[[["BufferResolvable"]],[["Stream"]]]},{"name":"name","description":"The name of the file, if any","optional":true,"default":null,"type":[[["string"]]]},{"name":"data","description":"Extra data","optional":true,"type":[[["Object"]]]}]},"props":[{"name":"name","description":"The name of this attachment","nullable":true,"type":[[["string"]]],"meta":{"line":20,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"id","description":"The ID of this attachment","type":[[["Snowflake"]]],"meta":{"line":51,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"size","description":"The size of this attachment in bytes","type":[[["number"]]],"meta":{"line":57,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"url","description":"The URL to this attachment","type":[[["string"]]],"meta":{"line":63,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"proxyURL","description":"The Proxy URL to this attachment","type":[[["string"]]],"meta":{"line":69,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"height","description":"The height of this attachment (if an image or video)","nullable":true,"type":[[["number"]]],"meta":{"line":75,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"width","description":"The width of this attachment (if an image or video)","nullable":true,"type":[[["number"]]],"meta":{"line":81,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"spoiler","description":"Whether or not this attachment has been marked as a spoiler","readonly":true,"type":[[["boolean"]]],"meta":{"line":89,"file":"MessageAttachment.js","path":"src/structures"}}],"methods":[{"name":"setFile","description":"Sets the file of this attachment.","params":[{"name":"attachment","description":"The file","type":[[["BufferResolvable"]],[["Stream"]]]},{"name":"name","description":"The name of the file, if any","optional":true,"default":null,"type":[[["string"]]]}],"returns":{"types":[[["MessageAttachment"]]],"description":"This attachment"},"meta":{"line":30,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"setName","description":"Sets the name of this attachment.","params":[{"name":"name","description":"The name of the file","type":[[["string"]]]}],"returns":{"types":[[["MessageAttachment"]]],"description":"This attachment"},"meta":{"line":41,"file":"MessageAttachment.js","path":"src/structures"}}],"meta":{"line":8,"file":"MessageAttachment.js","path":"src/structures"}},{"name":"MessageCollector","description":"Collects messages on a channel.\nWill automatically stop if the channel (`'channelDelete'`) or guild (`'guildDelete'`) are deleted.","extends":[[["Collector"]]],"construct":{"name":"MessageCollector","params":[{"name":"channel","description":"The channel","type":[[["TextChannel"]],[["DMChannel"]]]},{"name":"filter","description":"The filter to be applied to this collector","type":[[["CollectorFilter"]]]},{"name":"options","description":"The options to be applied to this collector","type":[[["MessageCollectorOptions"]]]}]},"props":[{"name":"channel","description":"The channel","type":[[["TextBasedChannel"]]],"meta":{"line":31,"file":"MessageCollector.js","path":"src/structures"}},{"name":"received","description":"Total number of messages that were received in the channel during message collection","type":[[["number"]]],"meta":{"line":37,"file":"MessageCollector.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this Collector","readonly":true,"type":[[["Client"]]],"meta":{"line":31,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"filter","description":"The filter applied to this collector","type":[[["CollectorFilter"]]],"meta":{"line":43,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"options","description":"The options of this collector","type":[[["CollectorOptions"]]],"meta":{"line":49,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"collected","description":"The items collected by this collector","type":[[["Collection"]]],"meta":{"line":55,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"ended","description":"Whether this collector has finished collecting","type":[[["boolean"]]],"meta":{"line":61,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"_timeout","description":"Timeout for cleanup","access":"private","nullable":true,"type":[[["Timeout"]]],"meta":{"line":68,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"_idletimeout","description":"Timeout for cleanup due to inactivity","access":"private","nullable":true,"type":[[["Timeout"]]],"meta":{"line":75,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"next","description":"Returns a promise that resolves with the next collected element;\nrejects with collected elements if the collector finishes without receiving a next element","readonly":true,"type":[[["Promise"]]],"meta":{"line":137,"file":"Collector.js","path":"src/structures/interfaces"}}],"methods":[{"name":"collect","description":"Handles a message for possible collection.","access":"private","params":[{"name":"message","description":"The message that could be collected","type":[[["Message"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":68,"file":"MessageCollector.js","path":"src/structures"}},{"name":"dispose","description":"Handles a message for possible disposal.","params":[{"name":"message","description":"The message that could be disposed of","type":[[["Message"]]]}],"returns":{"types":[[["Snowflake"]]],"nullable":true},"meta":{"line":84,"file":"MessageCollector.js","path":"src/structures"}},{"name":"endReason","description":"Checks after un/collection to see if the collector is done.","access":"private","returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":98,"file":"MessageCollector.js","path":"src/structures"}},{"name":"_handleChannelDeletion","description":"Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.","access":"private","params":[{"name":"channel","description":"The channel that was deleted","type":[[["GuildChannel"]]]}],"returns":[[["void"]]],"meta":{"line":110,"file":"MessageCollector.js","path":"src/structures"}},{"name":"_handleGuildDeletion","description":"Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.","access":"private","params":[{"name":"guild","description":"The guild that was deleted","type":[[["Guild"]]]}],"returns":[[["void"]]],"meta":{"line":122,"file":"MessageCollector.js","path":"src/structures"}},{"name":"handleCollect","description":"Call this to handle an event as a collectable element. Accepts any event data as parameters.","inherits":"Collector#handleCollect","inherited":true,"emits":["Collector#event:collect"],"params":[{"name":"args","description":"The arguments emitted by the listener","variable":true,"type":[["*"]]}],"async":true,"meta":{"line":89,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"handleDispose","description":"Call this to remove an element from the collection. Accepts any event data as parameters.","inherits":"Collector#handleDispose","inherited":true,"emits":["Collector#event:dispose"],"params":[{"name":"args","description":"The arguments emitted by the listener","variable":true,"type":[["*"]]}],"meta":{"line":115,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"stop","description":"Stops this collector and emits the `end` event.","inherits":"Collector#stop","inherited":true,"emits":["Collector#event:end"],"params":[{"name":"reason","description":"The reason this collector is ending","optional":true,"default":"'user'","type":[[["string"]]]}],"meta":{"line":169,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"resetTimer","description":"Resets the collectors timeout and idle timer.","inherits":"Collector#resetTimer","inherited":true,"params":[{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.time","description":"How long to run the collector for in milliseconds","optional":true,"type":[[["number"]]]},{"name":"options.idle","description":"How long to stop the collector after inactivity in milliseconds","optional":true,"type":[[["number"]]]}],"meta":{"line":197,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"checkEnd","description":"Checks whether the collector should end, and if so, ends it.","inherits":"Collector#checkEnd","inherited":true,"meta":{"line":211,"file":"Collector.js","path":"src/structures/interfaces"}}],"events":[{"name":"collect","description":"Emitted whenever a message is collected.","params":[{"name":"message","description":"The message that was collected","type":[[["Message"]]]}],"meta":{"line":69,"file":"MessageCollector.js","path":"src/structures"}},{"name":"dispose","description":"Emitted whenever a message is disposed of.","params":[{"name":"message","description":"The message that was disposed of","type":[[["Message"]]]}],"meta":{"line":85,"file":"MessageCollector.js","path":"src/structures"}},{"name":"end","description":"Emitted when the collector is finished collecting.","params":[{"name":"collected","description":"The elements collected by the collector","type":[[["Collection"]]]},{"name":"reason","description":"The reason the collector ended","type":[[["string"]]]}],"meta":{"line":182,"file":"Collector.js","path":"src/structures/interfaces"}}],"meta":{"line":17,"file":"MessageCollector.js","path":"src/structures"}},{"name":"MessageEmbed","description":"Represents an embed in a message (image/video preview, rich embed, etc.)","construct":{"name":"MessageEmbed","params":[{"name":"data","description":"MessageEmbed to clone or raw embed data","optional":true,"default":"{}","type":[[["MessageEmbed"]],[["Object"]]]}]},"props":[{"name":"type","description":"The type of this embed, either:\n* `rich` - a rich embed\n* `image` - an image embed\n* `video` - a video embed\n* `gifv` - a gifv embed\n* `article` - an article embed\n* `link` - a link embed","type":[[["string"]]],"meta":{"line":32,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"title","description":"The title of this embed","nullable":true,"type":[[["string"]]],"meta":{"line":38,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"description","description":"The description of this embed","nullable":true,"type":[[["string"]]],"meta":{"line":44,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"url","description":"The URL of this embed","nullable":true,"type":[[["string"]]],"meta":{"line":50,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"color","description":"The color of this embed","nullable":true,"type":[[["number"]]],"meta":{"line":56,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"timestamp","description":"The timestamp of this embed","nullable":true,"type":[[["number"]]],"meta":{"line":62,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"fields","description":"The fields of this embed","type":[[["Array","<"],["EmbedField",">"]]],"meta":{"line":76,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"thumbnail","description":"The thumbnail of this embed (if there is one)","nullable":true,"type":[[["MessageEmbedThumbnail"]]],"meta":{"line":94,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"image","description":"The image of this embed, if there is one","nullable":true,"type":[[["MessageEmbedImage"]]],"meta":{"line":116,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"video","description":"The video of this embed (if there is one)","readonly":true,"nullable":true,"type":[[["MessageEmbedVideo"]]],"meta":{"line":139,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"author","description":"The author of this embed (if there is one)","nullable":true,"type":[[["MessageEmbedAuthor"]]],"meta":{"line":161,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"provider","description":"The provider of this embed (if there is one)","nullable":true,"type":[[["MessageEmbedProvider"]]],"meta":{"line":181,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"footer","description":"The footer of this embed","nullable":true,"type":[[["MessageEmbedFooter"]]],"meta":{"line":200,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"files","description":"The files of this embed","type":[[["Array","<("],["FileOptions","|"],["string","|"],["MessageAttachment",")>"]]],"meta":{"line":212,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"createdAt","description":"The date displayed on this embed","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":220,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"hexColor","description":"The hexadecimal version of the embed color, with a leading hash","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":229,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"length","description":"The accumulated length for the embed title, description, fields and footer text","readonly":true,"type":[[["number"]]],"meta":{"line":238,"file":"MessageEmbed.js","path":"src/structures"}}],"methods":[{"name":"addField","description":"Adds a field to the embed (max 25).","params":[{"name":"name","description":"The name of this field","type":[[["StringResolvable"]]]},{"name":"value","description":"The value of this field","type":[[["StringResolvable"]]]},{"name":"inline","description":"If this field will be displayed inline","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":256,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"addFields","description":"Adds fields to the embed (max 25).","params":[{"name":"fields","description":"The fields to add","variable":true,"type":[[["EmbedFieldData"]],[["Array","<"],["EmbedFieldData",">"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":265,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"spliceFields","description":"Removes, replaces, and inserts fields in the embed (max 25).","params":[{"name":"index","description":"The index to start at","type":[[["number"]]]},{"name":"deleteCount","description":"The number of fields to remove","type":[[["number"]]]},{"name":"fields","description":"The replacing field objects","optional":true,"variable":true,"type":[[["EmbedFieldData"]],[["Array","<"],["EmbedFieldData",">"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":277,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"attachFiles","description":"Sets the file to upload alongside the embed. This file can be accessed via `attachment://fileName.extension` when\nsetting an embed image or author/footer icons. Multiple files can be attached.","params":[{"name":"files","description":"Files to attach","type":[[["Array","<("],["FileOptions","|"],["string","|"],["MessageAttachment",")>"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":288,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setAuthor","description":"Sets the author of this embed.","params":[{"name":"name","description":"The name of the author","type":[[["StringResolvable"]]]},{"name":"iconURL","description":"The icon URL of the author","optional":true,"type":[[["string"]]]},{"name":"url","description":"The URL of the author","optional":true,"type":[[["string"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":300,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setColor","description":"Sets the color of this embed.","params":[{"name":"color","description":"The color of the embed","type":[[["ColorResolvable"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":310,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setDescription","description":"Sets the description of this embed.","params":[{"name":"description","description":"The description","type":[[["StringResolvable"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":320,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setFooter","description":"Sets the footer of this embed.","params":[{"name":"text","description":"The text of the footer","type":[[["StringResolvable"]]]},{"name":"iconURL","description":"The icon URL of the footer","optional":true,"type":[[["string"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":332,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setImage","description":"Sets the image of this embed.","params":[{"name":"url","description":"The URL of the image","type":[[["string"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":343,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setThumbnail","description":"Sets the thumbnail of this embed.","params":[{"name":"url","description":"The URL of the thumbnail","type":[[["string"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":353,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setTimestamp","description":"Sets the timestamp of this embed.","params":[{"name":"timestamp","description":"The timestamp or date","optional":true,"default":"Date.now()","type":[[["Date"]],[["number"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":363,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setTitle","description":"Sets the title of this embed.","params":[{"name":"title","description":"The title","type":[[["StringResolvable"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":374,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"setURL","description":"Sets the URL of this embed.","params":[{"name":"url","description":"The URL","type":[[["string"]]]}],"returns":[[["MessageEmbed"]]],"meta":{"line":385,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"toJSON","description":"Transforms the embed to a plain object.","returns":{"types":[[["Object"]]],"description":"The raw data of this embed"},"meta":{"line":394,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"normalizeField","description":"Normalizes field input and resolves strings.","scope":"static","params":[{"name":"name","description":"The name of the field","type":[[["StringResolvable"]]]},{"name":"value","description":"The value of the field","type":[[["StringResolvable"]]]},{"name":"inline","description":"Set the field to display inline","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["EmbedField"]]],"meta":{"line":428,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"normalizeFields","description":"Normalizes field input and resolves strings.","scope":"static","params":[{"name":"fields","description":"Fields to normalize","variable":true,"type":[[["EmbedFieldData"]],[["Array","<"],["EmbedFieldData",">"]]]}],"returns":[[["Array","<"],["EmbedField",">"]]],"meta":{"line":448,"file":"MessageEmbed.js","path":"src/structures"}}],"meta":{"line":9,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"MessageMentions","description":"Keeps track of mentions in a {@link Message}.","props":[{"name":"everyone","description":"Whether `@everyone` or `@here` were mentioned","type":[[["boolean"]]],"meta":{"line":38,"file":"MessageMentions.js","path":"src/structures"}},{"name":"users","description":"Any users that were mentioned\nOrder as received from the API, not as they appear in the message content","type":[[["Collection","<"],["Snowflake",", "],["User",">"]]],"meta":{"line":47,"file":"MessageMentions.js","path":"src/structures"}},{"name":"roles","description":"Any roles that were mentioned\nOrder as received from the API, not as they appear in the message content","type":[[["Collection","<"],["Snowflake",", "],["Role",">"]]],"meta":{"line":69,"file":"MessageMentions.js","path":"src/structures"}},{"name":"_members","description":"Cached members for {@link MessageMentions#members}","access":"private","nullable":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":86,"file":"MessageMentions.js","path":"src/structures"}},{"name":"_channels","description":"Cached channels for {@link MessageMentions#channels}","access":"private","nullable":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildChannel",">"]]],"meta":{"line":93,"file":"MessageMentions.js","path":"src/structures"}},{"name":"crosspostedChannels","description":"A collection of crossposted channels\nOrder as received from the API, not as they appear in the message content","type":[[["Collection","<"],["Snowflake",", "],["CrosspostedChannel",">"]]],"meta":{"line":111,"file":"MessageMentions.js","path":"src/structures"}},{"name":"members","description":"Any members that were mentioned (only in {@link TextChannel}s)\nOrder as received from the API, not as they appear in the message content","readonly":true,"nullable":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":136,"file":"MessageMentions.js","path":"src/structures"}},{"name":"channels","description":"Any channels that were mentioned\nOrder as they appear first in the message content","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildChannel",">"]]],"meta":{"line":153,"file":"MessageMentions.js","path":"src/structures"}},{"name":"EVERYONE_PATTERN","description":"Regular expression that globally matches `@everyone` and `@here`","scope":"static","type":[[["RegExp"]]],"meta":{"line":205,"file":"MessageMentions.js","path":"src/structures"}},{"name":"USERS_PATTERN","description":"Regular expression that globally matches user mentions like `<@81440962496172032>`","scope":"static","type":[[["RegExp"]]],"meta":{"line":211,"file":"MessageMentions.js","path":"src/structures"}},{"name":"ROLES_PATTERN","description":"Regular expression that globally matches role mentions like `<@&297577916114403338>`","scope":"static","type":[[["RegExp"]]],"meta":{"line":217,"file":"MessageMentions.js","path":"src/structures"}},{"name":"CHANNELS_PATTERN","description":"Regular expression that globally matches channel mentions like `<#222079895583457280>`","scope":"static","type":[[["RegExp"]]],"meta":{"line":223,"file":"MessageMentions.js","path":"src/structures"}}],"methods":[{"name":"has","description":"Checks if a user, guild member, role, or channel is mentioned.\nTakes into account user mentions, role mentions, and @everyone/@here mentions.","params":[{"name":"data","description":"User/Role/Channel to check","type":[[["UserResolvable"]],[["RoleResolvable"]],[["GuildChannelResolvable"]]]},{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.ignoreDirect","description":"Whether to ignore direct mentions to the item","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.ignoreRoles","description":"Whether to ignore role mentions to a guild member","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.ignoreEveryone","description":"Whether to ignore everyone/here mentions","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["boolean"]]],"meta":{"line":174,"file":"MessageMentions.js","path":"src/structures"}}],"meta":{"line":10,"file":"MessageMentions.js","path":"src/structures"}},{"name":"MessageReaction","description":"Represents a reaction to a message.","construct":{"name":"MessageReaction","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the message reaction","type":[[["Object"]]]},{"name":"message","description":"The message the reaction refers to","type":[[["Message"]]]}]},"props":[{"name":"client","description":"The client that instantiated this message reaction","readonly":true,"type":[[["Client"]]],"meta":{"line":18,"file":"MessageReaction.js","path":"src/structures"}},{"name":"message","description":"The message that this reaction refers to","type":[[["Message"]]],"meta":{"line":29,"file":"MessageReaction.js","path":"src/structures"}},{"name":"users","description":"A manager of the users that have given this reaction","type":[[["ReactionUserManager"]]],"meta":{"line":35,"file":"MessageReaction.js","path":"src/structures"}},{"name":"count","description":"The number of people that have given the same reaction","nullable":true,"type":[[["number"]]],"meta":{"line":49,"file":"MessageReaction.js","path":"src/structures"}},{"name":"me","description":"Whether the client has given this reaction","type":[[["boolean"]]],"meta":{"line":56,"file":"MessageReaction.js","path":"src/structures"}},{"name":"emoji","description":"The emoji of this reaction, either an GuildEmoji object for known custom emojis, or a ReactionEmoji\nobject which has fewer properties. Whatever the prototype of the emoji, it will still have\n`name`, `id`, `identifier` and `toString()`","readonly":true,"type":[[["GuildEmoji"]],[["ReactionEmoji"]]],"meta":{"line":79,"file":"MessageReaction.js","path":"src/structures"}},{"name":"partial","description":"Whether or not this reaction is a partial","readonly":true,"type":[[["boolean"]]],"meta":{"line":98,"file":"MessageReaction.js","path":"src/structures"}}],"methods":[{"name":"remove","description":"Removes all users from this reaction.","async":true,"returns":[[["Promise","<"],["MessageReaction",">"]]],"meta":{"line":63,"file":"MessageReaction.js","path":"src/structures"}},{"name":"fetch","description":"Fetch this reaction.","async":true,"returns":[[["Promise","<"],["MessageReaction",">"]]],"meta":{"line":106,"file":"MessageReaction.js","path":"src/structures"}}],"meta":{"line":11,"file":"MessageReaction.js","path":"src/structures"}},{"name":"NewsChannel","description":"Represents a guild news channel on Discord.","extends":[[["TextChannel"]]],"props":[{"name":"messages","description":"A manager of the messages sent to this channel","type":[[["MessageManager"]]],"meta":{"line":26,"file":"TextChannel.js","path":"src/structures"}},{"name":"nsfw","description":"If the guild considers this channel NSFW","readonly":true,"type":[[["boolean"]]],"meta":{"line":33,"file":"TextChannel.js","path":"src/structures"}},{"name":"topic","description":"The topic of the text channel","nullable":true,"type":[[["string"]]],"meta":{"line":44,"file":"TextChannel.js","path":"src/structures"}},{"name":"lastMessageID","description":"The ID of the last message sent in this channel, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":52,"file":"TextChannel.js","path":"src/structures"}},{"name":"rateLimitPerUser","description":"The ratelimit per user for this channel in seconds","type":[[["number"]]],"meta":{"line":58,"file":"TextChannel.js","path":"src/structures"}},{"name":"lastPinTimestamp","description":"The timestamp when the last pinned message was pinned, if there was one","nullable":true,"type":[[["number"]]],"meta":{"line":64,"file":"TextChannel.js","path":"src/structures"}},{"name":"lastMessage","description":"The Message object of the last message in the channel, if one was sent","readonly":true,"nullable":true,"type":[[["Message"]]],"meta":{"line":40,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"lastPinAt","description":"The date when the last pinned message was pinned, if there was one","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":49,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"typing","description":"Whether or not the typing indicator is being shown in the channel","readonly":true,"type":[[["boolean"]]],"meta":{"line":250,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"typingCount","description":"Number of times `startTyping` has been called","readonly":true,"type":[[["number"]]],"meta":{"line":259,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"guild","description":"The guild the channel is in","type":[[["Guild"]]],"meta":{"line":34,"file":"GuildChannel.js","path":"src/structures"}},{"name":"name","description":"The name of the guild channel","type":[[["string"]]],"meta":{"line":44,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rawPosition","description":"The raw position of the channel from discord","type":[[["number"]]],"meta":{"line":50,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parentID","description":"The ID of the category parent of this channel","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":56,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionOverwrites","description":"A map of permission overwrites in this channel for roles and users","type":[[["Collection","<"],["Snowflake",", "],["PermissionOverwrites",">"]]],"meta":{"line":62,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parent","description":"The category parent of this channel","readonly":true,"nullable":true,"type":[[["CategoryChannel"]]],"meta":{"line":75,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionsLocked","description":"If the permissionOverwrites match the parent channel, null if no parent","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":84,"file":"GuildChannel.js","path":"src/structures"}},{"name":"position","description":"The position of the channel","readonly":true,"type":[[["number"]]],"meta":{"line":102,"file":"GuildChannel.js","path":"src/structures"}},{"name":"members","description":"A collection of members that can see this channel, mapped by their ID","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":283,"file":"GuildChannel.js","path":"src/structures"}},{"name":"deletable","description":"Whether the channel is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":573,"file":"GuildChannel.js","path":"src/structures"}},{"name":"manageable","description":"Whether the channel is manageable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":582,"file":"GuildChannel.js","path":"src/structures"}},{"name":"viewable","description":"Whether the channel is viewable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":599,"file":"GuildChannel.js","path":"src/structures"}},{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"addFollower","description":"Adds the target to this channel's followers.","examples":["if (channel.type === 'news') {\n channel.addFollower('222197033908436994', 'Important announcements')\n .then(() => console.log('Added follower'))\n .catch(console.error);\n}"],"params":[{"name":"channel","description":"The channel where the webhook should be created","type":[[["GuildChannelResolvable"]]]},{"name":"reason","description":"Reason for creating the webhook","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["NewsChannel",">"]]],"meta":{"line":30,"file":"NewsChannel.js","path":"src/structures"}},{"name":"setRateLimitPerUser","description":"Sets the rate limit per user for this channel.","inherits":"TextChannel#setRateLimitPerUser","inherited":true,"params":[{"name":"rateLimitPerUser","description":"The new ratelimit in seconds","type":[[["number"]]]},{"name":"reason","description":"Reason for changing the channel's ratelimits","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["TextChannel",">"]]],"meta":{"line":75,"file":"TextChannel.js","path":"src/structures"}},{"name":"setNSFW","description":"Sets whether this channel is flagged as NSFW.","inherits":"TextChannel#setNSFW","inherited":true,"params":[{"name":"nsfw","description":"Whether the channel should be considered NSFW","type":[[["boolean"]]]},{"name":"reason","description":"Reason for changing the channel's NSFW flag","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["TextChannel",">"]]],"meta":{"line":85,"file":"TextChannel.js","path":"src/structures"}},{"name":"fetchWebhooks","description":"Fetches all webhooks for the channel.","inherits":"TextChannel#fetchWebhooks","inherited":true,"examples":["// Fetch webhooks\nchannel.fetchWebhooks()\n .then(hooks => console.log(`This channel has ${hooks.size} hooks`))\n .catch(console.error);"],"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Webhook",">>"]]],"meta":{"line":98,"file":"TextChannel.js","path":"src/structures"}},{"name":"createWebhook","description":"Creates a webhook for the channel.","inherits":"TextChannel#createWebhook","inherited":true,"examples":["// Create a webhook for the current channel\nchannel.createWebhook('Snek', {\n avatar: 'https://i.imgur.com/mI8XcpG.jpg',\n reason: 'Needed a cool new Webhook'\n})\n .then(console.log)\n .catch(console.error)"],"params":[{"name":"name","description":"The name of the webhook","type":[[["string"]]]},{"name":"options","description":"Options for creating the webhook","optional":true,"type":[[["Object"]]]},{"name":"options.avatar","description":"Avatar for the webhook","optional":true,"type":[[["BufferResolvable"]],[["Base64Resolvable"]]]},{"name":"options.reason","description":"Reason for creating the webhook","optional":true,"type":[[["string"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["Webhook",">"]]],"description":"webhook The created webhook"},"meta":{"line":122,"file":"TextChannel.js","path":"src/structures"}},{"name":"send","description":"Sends a message to this channel.","inherits":"TextChannel#send","inherited":true,"implements":["TextBasedChannel#send"],"examples":["// Send a basic message\nchannel.send('hello!')\n .then(message => console.log(`Sent message: ${message.content}`))\n .catch(console.error);","// Send a remote file\nchannel.send({\n files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n})\n .then(console.log)\n .catch(console.error);","// Send a local file\nchannel.send({\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);","// Send an embed with a local image inside\nchannel.send('This is an embed', {\n embed: {\n thumbnail: {\n url: 'attachment://file.jpg'\n }\n },\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"content","description":"The content to send","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["MessageOptions"]],[["MessageAdditions"]]]}],"async":true,"returns":[[["Promise","<("],["Message","|"],["Array","<"],["Message",">)>"]]],"meta":{"line":153,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"startTyping","description":"Starts a typing indicator in the channel.","inherits":"TextChannel#startTyping","inherited":true,"implements":["TextBasedChannel#startTyping"],"examples":["// Start typing in a channel, or increase the typing count by one\nchannel.startTyping();","// Start typing in a channel with a typing count of five, or set it to five\nchannel.startTyping(5);"],"params":[{"name":"count","description":"The number of times startTyping should be considered to have been called","optional":true,"default":1,"type":[[["number"]]]}],"returns":{"types":[[["Promise"]]],"description":"Resolves once the bot stops typing gracefully, or rejects when an error occurs"},"meta":{"line":189,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"stopTyping","description":"Stops the typing indicator in the channel.\nThe indicator will only stop if this is called as many times as startTyping().\nIt can take a few seconds for the client user to stop typing.","inherits":"TextChannel#stopTyping","inherited":true,"implements":["TextBasedChannel#stopTyping"],"examples":["// Reduce the typing count by one and stop typing if it reached 0\nchannel.stopTyping();","// Force typing to fully stop regardless of typing count\nchannel.stopTyping(true);"],"params":[{"name":"force","description":"Whether or not to reset the call count and force the indicator to stop","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":233,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"createMessageCollector","description":"Creates a Message Collector.","inherits":"TextChannel#createMessageCollector","inherited":true,"implements":["TextBasedChannel#createMessageCollector"],"examples":["// Create a message collector\nconst filter = m => m.content.includes('discord');\nconst collector = channel.createMessageCollector(filter, { time: 15000 });\ncollector.on('collect', m => console.log(`Collected ${m.content}`));\ncollector.on('end', collected => console.log(`Collected ${collected.size} items`));"],"params":[{"name":"filter","description":"The filter to create the collector with","type":[[["CollectorFilter"]]]},{"name":"options","description":"The options to pass to the collector","optional":true,"default":"{}","type":[[["MessageCollectorOptions"]]]}],"returns":[[["MessageCollector"]]],"meta":{"line":276,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"awaitMessages","description":"Similar to createMessageCollector but in promise form.\nResolves with a collection of messages that pass the specified filter.","inherits":"TextChannel#awaitMessages","inherited":true,"implements":["TextBasedChannel#awaitMessages"],"examples":["// Await !vote messages\nconst filter = m => m.content.startsWith('!vote');\n// Errors: ['time'] treats ending because of the time limit as an error\nchannel.awaitMessages(filter, { max: 4, time: 60000, errors: ['time'] })\n .then(collected => console.log(collected.size))\n .catch(collected => console.log(`After a minute, only ${collected.size} out of 4 voted.`));"],"params":[{"name":"filter","description":"The filter function to use","type":[[["CollectorFilter"]]]},{"name":"options","description":"Optional options to pass to the internal collector","optional":true,"default":"{}","type":[[["AwaitMessagesOptions"]]]}],"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"meta":{"line":300,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"bulkDelete","description":"Bulk deletes given messages that are newer than two weeks.","inherits":"TextChannel#bulkDelete","inherited":true,"implements":["TextBasedChannel#bulkDelete"],"examples":["// Bulk delete messages\nchannel.bulkDelete(5)\n .then(messages => console.log(`Bulk deleted ${messages.size} messages`))\n .catch(console.error);"],"params":[{"name":"messages","description":"Messages or number of messages to delete","type":[[["Collection","<"],["Snowflake",", "],["Message",">"]],[["Array","<"],["MessageResolvable",">"]],[["number"]]]},{"name":"filterOld","description":"Filter messages to remove those which are older than two weeks automatically","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"description":"Deleted messages"},"meta":{"line":325,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"permissionsFor","description":"Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.","inherits":"GuildChannel#permissionsFor","inherited":true,"params":[{"name":"memberOrRole","description":"The member or role to obtain the overall permissions for","type":[[["GuildMemberResolvable"]],[["RoleResolvable"]]]}],"returns":{"types":[[["Readonly","<"],["Permissions",">"]]],"nullable":true},"meta":{"line":112,"file":"GuildChannel.js","path":"src/structures"}},{"name":"memberPermissions","description":"Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#memberPermissions","inherited":true,"params":[{"name":"member","description":"The member to obtain the overall permissions for","type":[[["GuildMember"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":152,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rolePermissions","description":"Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#rolePermissions","inherited":true,"params":[{"name":"role","description":"The role to obtain the overall permissions for","type":[[["Role"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":178,"file":"GuildChannel.js","path":"src/structures"}},{"name":"overwritePermissions","description":"Replaces the permission overwrites in this channel.","inherits":"GuildChannel#overwritePermissions","inherited":true,"examples":["channel.overwritePermissions([\n {\n id: message.author.id,\n deny: ['VIEW_CHANNEL'],\n },\n], 'Needed to change permissions');"],"params":[{"name":"overwrites","description":"Permission overwrites the channel gets updated with","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"reason","description":"Reason for updating the channel overwrites","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":206,"file":"GuildChannel.js","path":"src/structures"}},{"name":"updateOverwrite","description":"Updates Overwrites for a user or role in this channel. (creates if non-existent)","inherits":"GuildChannel#updateOverwrite","inherited":true,"examples":["// Update or Create permission overwrites for a message author\nmessage.channel.updateOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":229,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createOverwrite","description":"Overwrites the permissions for a user or role in this channel. (replaces if existent)","inherits":"GuildChannel#createOverwrite","inherited":true,"examples":["// Create or Replace permissions overwrites for a message author\nmessage.channel.createOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":252,"file":"GuildChannel.js","path":"src/structures"}},{"name":"lockPermissions","description":"Locks in the permission overwrites from the parent channel.","inherits":"GuildChannel#lockPermissions","inherited":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":272,"file":"GuildChannel.js","path":"src/structures"}},{"name":"edit","description":"Edits the channel.","inherits":"GuildChannel#edit","inherited":true,"examples":["// Edit a channel\nchannel.edit({ name: 'new-channel' })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"data","description":"The new data for the channel","type":[[["ChannelData"]]]},{"name":"reason","description":"Reason for editing this channel","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":321,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setName","description":"Sets a new name for the guild channel.","inherits":"GuildChannel#setName","inherited":true,"examples":["// Set a new channel name\nchannel.setName('not_general')\n .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"The new name for the guild channel","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":386,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setParent","description":"Sets the category parent of this channel.","inherits":"GuildChannel#setParent","inherited":true,"examples":["// Add a parent to a channel\nmessage.channel.setParent('355908108431917066', { lockPermissions: false })\n .then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))\n .catch(console.error);"],"params":[{"name":"channel","description":"Parent channel","type":[[["CategoryChannel"]],[["Snowflake"]]]},{"name":"options","description":"Options to pass","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.lockPermissions","description":"Lock the permissions to what the parent's permissions are","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for modifying the parent of this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":403,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setTopic","description":"Sets a new topic for the guild channel.","inherits":"GuildChannel#setTopic","inherited":true,"examples":["// Set a new channel topic\nchannel.setTopic('needs more rate limiting')\n .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))\n .catch(console.error);"],"params":[{"name":"topic","description":"The new topic for the guild channel","nullable":true,"type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's topic","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":425,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setPosition","description":"Sets a new position for the guild channel.","inherits":"GuildChannel#setPosition","inherited":true,"examples":["// Set a new channel position\nchannel.setPosition(2)\n .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))\n .catch(console.error);"],"params":[{"name":"position","description":"The new position for the guild channel","type":[[["number"]]]},{"name":"options","description":"Options for setting position","optional":true,"type":[[["Object"]]]},{"name":"options.relative","description":"Change the position relative to its current value","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for changing the position","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":442,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createInvite","description":"Creates an invite to this guild channel.","inherits":"GuildChannel#createInvite","inherited":true,"examples":["// Create an invite to a channel\nchannel.createInvite()\n .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n .catch(console.error);"],"params":[{"name":"options","description":"Options for the invite","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.temporary","description":"Whether members that joined via the invite should be automatically\nkicked after 24 hours if they have not yet received a role","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.maxAge","description":"How long the invite should last (in seconds, 0 for forever)","optional":true,"default":86400,"type":[[["number"]]]},{"name":"options.maxUses","description":"Maximum number of uses","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.unique","description":"Create a unique invite, or use an existing one with similar settings","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for creating this","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Invite",">"]]],"meta":{"line":475,"file":"GuildChannel.js","path":"src/structures"}},{"name":"fetchInvites","description":"Fetches a collection of invites to this guild channel.\nResolves with a collection mapping invites by their codes.","inherits":"GuildChannel#fetchInvites","inherited":true,"async":true,"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Invite",">>"]]],"meta":{"line":495,"file":"GuildChannel.js","path":"src/structures"}},{"name":"clone","description":"Clones this channel.","inherits":"GuildChannel#clone","inherited":true,"params":[{"name":"options","description":"The options","optional":true,"type":[[["Object"]]]},{"name":"options.name","description":"Name of the new channel","optional":true,"default":"this.name","type":[[["string"]]]},{"name":"options.permissionOverwrites","description":"Permission overwrites of the new channel","optional":true,"default":"this.permissionOverwrites","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"options.type","description":"Type of the new channel","optional":true,"default":"this.type","type":[[["string"]]]},{"name":"options.topic","description":"Topic of the new channel (only text)","optional":true,"default":"this.topic","type":[[["string"]]]},{"name":"options.nsfw","description":"Whether the new channel is nsfw (only text)","optional":true,"default":"this.nsfw","type":[[["boolean"]]]},{"name":"options.bitrate","description":"Bitrate of the new channel in bits (only voice)","optional":true,"default":"this.bitrate","type":[[["number"]]]},{"name":"options.userLimit","description":"Maximum amount of users allowed in the new channel (only voice)","optional":true,"default":"this.userLimit","type":[[["number"]]]},{"name":"options.rateLimitPerUser","description":"Ratelimit per user for the new channel (only text)","optional":true,"default":"this.rateLimitPerUser","type":[[["number"]]]},{"name":"options.parent","description":"Parent of the new channel","optional":true,"default":"this.parent","type":[[["ChannelResolvable"]]]},{"name":"options.reason","description":"Reason for cloning this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":522,"file":"GuildChannel.js","path":"src/structures"}},{"name":"equals","description":"Checks if this channel has the same type, topic, position, name, overwrites and ID as another channel.\nIn most cases, a simple `channel.id === channel2.id` will do, and is much faster too.","inherits":"GuildChannel#equals","inherited":true,"params":[{"name":"channel","description":"Channel to compare with","type":[[["GuildChannel"]]]}],"returns":[[["boolean"]]],"meta":{"line":548,"file":"GuildChannel.js","path":"src/structures"}},{"name":"delete","description":"Deletes this channel.","inherits":"GuildChannel#delete","inherited":true,"examples":["// Delete the channel\nchannel.delete('making room for new channels')\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"reason","description":"Reason for deleting this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":616,"file":"GuildChannel.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.","inherits":"Channel#toString","inherited":true,"examples":["// Logs: Hello from <#123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":72,"file":"Channel.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this channel.","inherits":"Channel#fetch","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":97,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","inherits":"Channel#isText","inherited":true,"returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":10,"file":"NewsChannel.js","path":"src/structures"}},{"name":"PartialGroupDMChannel","description":"Represents a Partial Group DM Channel on Discord.","extends":[[["Channel"]]],"props":[{"name":"name","description":"The name of this Group DM Channel","type":[[["string"]]],"meta":{"line":18,"file":"PartialGroupDMChannel.js","path":"src/structures"}},{"name":"icon","description":"The hash of the channel icon","nullable":true,"type":[[["string"]]],"meta":{"line":24,"file":"PartialGroupDMChannel.js","path":"src/structures"}},{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"iconURL","description":"The URL to this channel's icon.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":32,"file":"PartialGroupDMChannel.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.","inherits":"Channel#toString","inherited":true,"examples":["// Logs: Hello from <#123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":72,"file":"Channel.js","path":"src/structures"}},{"name":"delete","description":"Deletes this channel.","inherits":"Channel#delete","inherited":true,"examples":["// Delete the channel\nchannel.delete()\n .then(console.log)\n .catch(console.error);"],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":85,"file":"Channel.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this channel.","inherits":"Channel#fetch","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":97,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","inherits":"Channel#isText","inherited":true,"returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":10,"file":"PartialGroupDMChannel.js","path":"src/structures"}},{"name":"PermissionOverwrites","description":"Represents a permission overwrite for a role or member in a guild channel.","props":[{"name":"channel","description":"The GuildChannel this overwrite is for","readonly":true,"type":[[["GuildChannel"]]],"meta":{"line":13,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"id","description":"The ID of this overwrite, either a user ID or a role ID","type":[[["Snowflake"]]],"meta":{"line":29,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"type","description":"The type of this overwrite","type":[[["OverwriteType"]]],"meta":{"line":42,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"deny","description":"The permissions that are denied for the user or role.","type":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":48,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"allow","description":"The permissions that are allowed for the user or role.","type":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":54,"file":"PermissionOverwrites.js","path":"src/structures"}}],"methods":[{"name":"update","description":"Updates this permissionOverwrites.","examples":["// Update permission overwrites\npermissionOverwrites.update({\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["PermissionOverwrites",">"]]],"meta":{"line":70,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"delete","description":"Deletes this Permission Overwrite.","params":[{"name":"reason","description":"Reason for deleting this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["PermissionOverwrites",">"]]],"meta":{"line":87,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"resolveOverwriteOptions","description":"Resolves bitfield permissions overwrites from an object.","scope":"static","params":[{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"initialPermissions","description":"The initial permissions","type":[[["Object"]]]},{"name":"initialPermissions.allow","description":"Initial allowed permissions","type":[[["PermissionResolvable"]]]},{"name":"initialPermissions.deny","description":"Initial denied permissions","type":[[["PermissionResolvable"]]]}],"returns":[[["ResolvedOverwriteOptions"]]],"meta":{"line":121,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"resolve","description":"Resolves an overwrite into {@link RawOverwriteData}.","scope":"static","params":[{"name":"overwrite","description":"The overwrite-like data to resolve","type":[[["OverwriteResolvable"]]]},{"name":"guild","description":"The guild to resolve from","type":[[["Guild"]]]}],"returns":[[["RawOverwriteData"]]],"meta":{"line":170,"file":"PermissionOverwrites.js","path":"src/structures"}}],"meta":{"line":11,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"Presence","description":"Represents a user's presence.","construct":{"name":"Presence","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the presence","optional":true,"default":"{}","type":[[["Object"]]]}]},"props":[{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":41,"file":"Presence.js","path":"src/structures"}},{"name":"userID","description":"The user ID of this presence","type":[[["Snowflake"]]],"meta":{"line":52,"file":"Presence.js","path":"src/structures"}},{"name":"guild","description":"The guild of this presence","nullable":true,"type":[[["Guild"]]],"meta":{"line":58,"file":"Presence.js","path":"src/structures"}},{"name":"user","description":"The user of this presence","readonly":true,"nullable":true,"type":[[["User"]]],"meta":{"line":68,"file":"Presence.js","path":"src/structures"}},{"name":"member","description":"The member of this presence","readonly":true,"nullable":true,"type":[[["GuildMember"]]],"meta":{"line":77,"file":"Presence.js","path":"src/structures"}},{"name":"status","description":"The status of this presence","type":[[["PresenceStatus"]]],"meta":{"line":86,"file":"Presence.js","path":"src/structures"}},{"name":"activities","description":"The activities of this presence","type":[[["Array","<"],["Activity",">"]]],"meta":{"line":93,"file":"Presence.js","path":"src/structures"}},{"name":"clientStatus","description":"The devices this presence is on","nullable":true,"type":[[["Object"]]],"props":[{"name":"web","description":"The current presence in the web application","nullable":true,"type":[[["ClientPresenceStatus"]]]},{"name":"mobile","description":"The current presence in the mobile application","nullable":true,"type":[[["ClientPresenceStatus"]]]},{"name":"desktop","description":"The current presence in the desktop application","nullable":true,"type":[[["ClientPresenceStatus"]]]}],"meta":{"line":107,"file":"Presence.js","path":"src/structures"}}],"methods":[{"name":"equals","description":"Whether this presence is equal to another.","params":[{"name":"presence","description":"The presence to compare with","type":[[["Presence"]]]}],"returns":[[["boolean"]]],"meta":{"line":123,"file":"Presence.js","path":"src/structures"}}],"meta":{"line":35,"file":"Presence.js","path":"src/structures"}},{"name":"Activity","description":"Represents an activity that is part of a user's presence.","props":[{"name":"name","description":"The name of the activity being played","type":[[["string"]]],"meta":{"line":152,"file":"Presence.js","path":"src/structures"}},{"name":"type","description":"The type of the activity status","type":[[["ActivityType"]]],"meta":{"line":158,"file":"Presence.js","path":"src/structures"}},{"name":"url","description":"If the activity is being streamed, a link to the stream","nullable":true,"type":[[["string"]]],"meta":{"line":164,"file":"Presence.js","path":"src/structures"}},{"name":"details","description":"Details about the activity","nullable":true,"type":[[["string"]]],"meta":{"line":170,"file":"Presence.js","path":"src/structures"}},{"name":"state","description":"State of the activity","nullable":true,"type":[[["string"]]],"meta":{"line":176,"file":"Presence.js","path":"src/structures"}},{"name":"applicationID","description":"Application ID associated with this activity","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":182,"file":"Presence.js","path":"src/structures"}},{"name":"timestamps","description":"Timestamps for the activity","nullable":true,"type":[[["Object"]]],"props":[{"name":"start","description":"When the activity started","nullable":true,"type":[[["Date"]]]},{"name":"end","description":"When the activity will end","nullable":true,"type":[[["Date"]]]}],"meta":{"line":190,"file":"Presence.js","path":"src/structures"}},{"name":"party","description":"Party of the activity","nullable":true,"type":[[["Object"]]],"props":[{"name":"id","description":"ID of the party","nullable":true,"type":[[["string"]]]},{"name":"size","description":"Size of the party as `[current, max]`","type":[[["Array","<"],["number",">"]]]}],"meta":{"line":203,"file":"Presence.js","path":"src/structures"}},{"name":"assets","description":"Assets for rich presence","nullable":true,"type":[[["RichPresenceAssets"]]],"meta":{"line":209,"file":"Presence.js","path":"src/structures"}},{"name":"flags","description":"Flags that describe the activity","type":[[["Readonly","<"],["ActivityFlags",">"]]],"meta":{"line":217,"file":"Presence.js","path":"src/structures"}},{"name":"emoji","description":"Emoji for a custom activity","nullable":true,"type":[[["Emoji"]]],"meta":{"line":223,"file":"Presence.js","path":"src/structures"}},{"name":"createdTimestamp","description":"Creation date of the activity","type":[[["number"]]],"meta":{"line":229,"file":"Presence.js","path":"src/structures"}},{"name":"createdAt","description":"The time the activity was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":249,"file":"Presence.js","path":"src/structures"}}],"methods":[{"name":"equals","description":"Whether this activity is equal to another activity.","params":[{"name":"activity","description":"The activity to compare with","type":[[["Activity"]]]}],"returns":[[["boolean"]]],"meta":{"line":237,"file":"Presence.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the activities' name instead of the Activity object.","returns":[[["string"]]],"meta":{"line":257,"file":"Presence.js","path":"src/structures"}}],"meta":{"line":144,"file":"Presence.js","path":"src/structures"}},{"name":"RichPresenceAssets","description":"Assets for a rich presence","props":[{"name":"largeText","description":"Hover text for the large image","nullable":true,"type":[[["string"]]],"meta":{"line":277,"file":"Presence.js","path":"src/structures"}},{"name":"smallText","description":"Hover text for the small image","nullable":true,"type":[[["string"]]],"meta":{"line":283,"file":"Presence.js","path":"src/structures"}},{"name":"largeImage","description":"ID of the large image asset","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":289,"file":"Presence.js","path":"src/structures"}},{"name":"smallImage","description":"ID of the small image asset","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":295,"file":"Presence.js","path":"src/structures"}}],"methods":[{"name":"smallImageURL","description":"Gets the URL of the small image asset","params":[{"name":"options","description":"Options for the image url","optional":true,"type":[[["Object"]]]},{"name":"options.format","description":"Format of the image","optional":true,"type":[[["string"]]]},{"name":"options.size","description":"Size of the image","optional":true,"type":[[["number"]]]}],"returns":{"types":[[["string"]]],"description":"The small image URL","nullable":true},"meta":{"line":305,"file":"Presence.js","path":"src/structures"}},{"name":"largeImageURL","description":"Gets the URL of the large image asset","params":[{"name":"options","description":"Options for the image url","optional":true,"type":[[["Object"]]]},{"name":"options.format","description":"Format of the image","optional":true,"type":[[["string"]]]},{"name":"options.size","description":"Size of the image","optional":true,"type":[[["number"]]]}],"returns":{"types":[[["string"]]],"description":"The large image URL","nullable":true},"meta":{"line":320,"file":"Presence.js","path":"src/structures"}}],"meta":{"line":269,"file":"Presence.js","path":"src/structures"}},{"name":"ReactionCollector","description":"Collects reactions on messages.\nWill automatically stop if the message (`'messageDelete'`),\nchannel (`'channelDelete'`), or guild (`'guildDelete'`) are deleted.","extends":[[["Collector"]]],"construct":{"name":"ReactionCollector","params":[{"name":"message","description":"The message upon which to collect reactions","type":[[["Message"]]]},{"name":"filter","description":"The filter to apply to this collector","type":[[["CollectorFilter"]]]},{"name":"options","description":"The options to apply to this collector","optional":true,"default":"{}","type":[[["ReactionCollectorOptions"]]]}]},"props":[{"name":"message","description":"The message upon which to collect reactions","type":[[["Message"]]],"meta":{"line":33,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"users","description":"The users which have reacted to this message","type":[[["Collection"]]],"meta":{"line":39,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"total","description":"The total number of reactions collected","type":[[["number"]]],"meta":{"line":45,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this Collector","readonly":true,"type":[[["Client"]]],"meta":{"line":31,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"filter","description":"The filter applied to this collector","type":[[["CollectorFilter"]]],"meta":{"line":43,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"options","description":"The options of this collector","type":[[["CollectorOptions"]]],"meta":{"line":49,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"collected","description":"The items collected by this collector","type":[[["Collection"]]],"meta":{"line":55,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"ended","description":"Whether this collector has finished collecting","type":[[["boolean"]]],"meta":{"line":61,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"_timeout","description":"Timeout for cleanup","access":"private","nullable":true,"type":[[["Timeout"]]],"meta":{"line":68,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"_idletimeout","description":"Timeout for cleanup due to inactivity","access":"private","nullable":true,"type":[[["Timeout"]]],"meta":{"line":75,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"next","description":"Returns a promise that resolves with the next collected element;\nrejects with collected elements if the collector finishes without receiving a next element","readonly":true,"type":[[["Promise"]]],"meta":{"line":137,"file":"Collector.js","path":"src/structures/interfaces"}}],"methods":[{"name":"collect","description":"Handles an incoming reaction for possible collection.","access":"private","params":[{"name":"reaction","description":"The reaction to possibly collect","type":[[["MessageReaction"]]]}],"returns":[[["Snowflake"]],[["string"]]],"meta":{"line":87,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"dispose","description":"Handles a reaction deletion for possible disposal.","params":[{"name":"reaction","description":"The reaction to possibly dispose of","type":[[["MessageReaction"]]]},{"name":"user","description":"The user that removed the reaction","type":[[["User"]]]}],"returns":[[["Snowflake"]],[["string"]]],"meta":{"line":104,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"empty","description":"Empties this reaction collector.","meta":{"line":128,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"_handleMessageDeletion","description":"Handles checking if the message has been deleted, and if so, stops the collector with the reason 'messageDelete'.","access":"private","params":[{"name":"message","description":"The message that was deleted","type":[[["Message"]]]}],"returns":[[["void"]]],"meta":{"line":148,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"_handleChannelDeletion","description":"Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.","access":"private","params":[{"name":"channel","description":"The channel that was deleted","type":[[["GuildChannel"]]]}],"returns":[[["void"]]],"meta":{"line":160,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"_handleGuildDeletion","description":"Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.","access":"private","params":[{"name":"guild","description":"The guild that was deleted","type":[[["Guild"]]]}],"returns":[[["void"]]],"meta":{"line":172,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"handleCollect","description":"Call this to handle an event as a collectable element. Accepts any event data as parameters.","inherits":"Collector#handleCollect","inherited":true,"emits":["Collector#event:collect"],"params":[{"name":"args","description":"The arguments emitted by the listener","variable":true,"type":[["*"]]}],"async":true,"meta":{"line":89,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"handleDispose","description":"Call this to remove an element from the collection. Accepts any event data as parameters.","inherits":"Collector#handleDispose","inherited":true,"emits":["Collector#event:dispose"],"params":[{"name":"args","description":"The arguments emitted by the listener","variable":true,"type":[["*"]]}],"meta":{"line":115,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"stop","description":"Stops this collector and emits the `end` event.","inherits":"Collector#stop","inherited":true,"emits":["Collector#event:end"],"params":[{"name":"reason","description":"The reason this collector is ending","optional":true,"default":"'user'","type":[[["string"]]]}],"meta":{"line":169,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"resetTimer","description":"Resets the collectors timeout and idle timer.","inherits":"Collector#resetTimer","inherited":true,"params":[{"name":"options","description":"Options","optional":true,"type":[[["Object"]]]},{"name":"options.time","description":"How long to run the collector for in milliseconds","optional":true,"type":[[["number"]]]},{"name":"options.idle","description":"How long to stop the collector after inactivity in milliseconds","optional":true,"type":[[["number"]]]}],"meta":{"line":197,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"checkEnd","description":"Checks whether the collector should end, and if so, ends it.","inherits":"Collector#checkEnd","inherited":true,"meta":{"line":211,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"endReason","description":"The reason this collector has ended or will end with.","inherits":"Collector#endReason","inherited":true,"abstract":false,"returns":{"types":[[["string"]]],"description":"Reason to end the collector, if any","nullable":true},"meta":{"line":277,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"key","description":"Gets the collector key for a reaction.","scope":"static","params":[{"name":"reaction","description":"The message reaction to get the key for","type":[[["MessageReaction"]]]}],"returns":[[["Snowflake"]],[["string"]]],"meta":{"line":183,"file":"ReactionCollector.js","path":"src/structures"}}],"events":[{"name":"collect","description":"Emitted whenever a reaction is collected.","params":[{"name":"reaction","description":"The reaction that was collected","type":[[["MessageReaction"]]]},{"name":"user","description":"The user that added the reaction","type":[[["User"]]]}],"meta":{"line":88,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"dispose","description":"Emitted when the reaction had all the users removed and the `dispose` option is set to true.","params":[{"name":"reaction","description":"The reaction that was disposed of","type":[[["MessageReaction"]]]},{"name":"user","description":"The user that removed the reaction","type":[[["User"]]]}],"meta":{"line":105,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"remove","description":"Emitted when the reaction had one user removed and the `dispose` option is set to true.","params":[{"name":"reaction","description":"The reaction that was removed","type":[[["MessageReaction"]]]},{"name":"user","description":"The user that removed the reaction","type":[[["User"]]]}],"meta":{"line":113,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"end","description":"Emitted when the collector is finished collecting.","params":[{"name":"collected","description":"The elements collected by the collector","type":[[["Collection"]]]},{"name":"reason","description":"The reason the collector ended","type":[[["string"]]]}],"meta":{"line":182,"file":"Collector.js","path":"src/structures/interfaces"}}],"meta":{"line":20,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"ReactionEmoji","description":"Represents a limited emoji set used for both custom and unicode emojis. Custom emojis\nwill use this class opposed to the Emoji class when the client doesn't know enough\ninformation about them.","extends":[[["Emoji"]]],"props":[{"name":"reaction","description":"The message reaction this emoji refers to","type":[[["MessageReaction"]]],"meta":{"line":19,"file":"ReactionEmoji.js","path":"src/structures"}},{"name":"animated","description":"Whether this emoji is animated","type":[[["boolean"]]],"meta":{"line":17,"file":"Emoji.js","path":"src/structures"}},{"name":"name","description":"The name of this emoji","type":[[["string"]]],"meta":{"line":23,"file":"Emoji.js","path":"src/structures"}},{"name":"id","description":"The ID of this emoji","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":29,"file":"Emoji.js","path":"src/structures"}},{"name":"deleted","description":"Whether this emoji has been deleted","type":[[["boolean"]]],"meta":{"line":35,"file":"Emoji.js","path":"src/structures"}},{"name":"identifier","description":"The identifier of this emoji, used for message reactions","readonly":true,"type":[[["string"]]],"meta":{"line":43,"file":"Emoji.js","path":"src/structures"}},{"name":"url","description":"The URL to the emoji file if its a custom emoji","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":53,"file":"Emoji.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["number"]]],"meta":{"line":63,"file":"Emoji.js","path":"src/structures"}},{"name":"createdAt","description":"The time the emoji was created at, or null if unicode","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":73,"file":"Emoji.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"toString","description":"When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord\ninstead of the Emoji object.","inherits":"Emoji#toString","inherited":true,"examples":["// Send a custom emoji from a guild:\nconst emoji = guild.emojis.cache.first();\nmsg.reply(`Hello! ${emoji}`);","// Send the emoji used in a reaction to the channel the reaction is part of\nreaction.message.channel.send(`The emoji used was: ${reaction.emoji}`);"],"returns":[[["string"]]],"meta":{"line":90,"file":"Emoji.js","path":"src/structures"}}],"meta":{"line":12,"file":"ReactionEmoji.js","path":"src/structures"}},{"name":"Role","description":"Represents a role on Discord.","extends":[[["Base"]]],"construct":{"name":"Role","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the role","type":[[["Object"]]]},{"name":"guild","description":"The guild the role is part of","type":[[["Guild"]]]}]},"props":[{"name":"guild","description":"The guild that the role belongs to","type":[[["Guild"]]],"meta":{"line":26,"file":"Role.js","path":"src/structures"}},{"name":"id","description":"The ID of the role (unique to the guild it is part of)","type":[[["Snowflake"]]],"meta":{"line":36,"file":"Role.js","path":"src/structures"}},{"name":"name","description":"The name of the role","type":[[["string"]]],"meta":{"line":42,"file":"Role.js","path":"src/structures"}},{"name":"color","description":"The base 10 color of the role","type":[[["number"]]],"meta":{"line":48,"file":"Role.js","path":"src/structures"}},{"name":"hoist","description":"If true, users that are part of this role will appear in a separate category in the users list","type":[[["boolean"]]],"meta":{"line":54,"file":"Role.js","path":"src/structures"}},{"name":"rawPosition","description":"The raw position of the role from the API","type":[[["number"]]],"meta":{"line":60,"file":"Role.js","path":"src/structures"}},{"name":"permissions","description":"The permissions of the role","type":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":66,"file":"Role.js","path":"src/structures"}},{"name":"managed","description":"Whether or not the role is managed by an external service","type":[[["boolean"]]],"meta":{"line":72,"file":"Role.js","path":"src/structures"}},{"name":"mentionable","description":"Whether or not the role can be mentioned by anyone","type":[[["boolean"]]],"meta":{"line":78,"file":"Role.js","path":"src/structures"}},{"name":"deleted","description":"Whether the role has been deleted","type":[[["boolean"]]],"meta":{"line":84,"file":"Role.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the role was created at","readonly":true,"type":[[["number"]]],"meta":{"line":92,"file":"Role.js","path":"src/structures"}},{"name":"createdAt","description":"The time the role was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":101,"file":"Role.js","path":"src/structures"}},{"name":"hexColor","description":"The hexadecimal version of the role color, with a leading hashtag","readonly":true,"type":[[["string"]]],"meta":{"line":110,"file":"Role.js","path":"src/structures"}},{"name":"members","description":"The cached guild members that have this role","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":119,"file":"Role.js","path":"src/structures"}},{"name":"editable","description":"Whether the role is editable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":128,"file":"Role.js","path":"src/structures"}},{"name":"position","description":"The position of the role in the role manager","readonly":true,"type":[[["number"]]],"meta":{"line":140,"file":"Role.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"comparePositionTo","description":"Compares this role's position to another role's.","params":[{"name":"role","description":"Role to compare to this one","type":[[["RoleResolvable"]]]}],"returns":{"types":[[["number"]]],"description":"Negative number if this role's position is lower (other role's is higher),\npositive number if this one is higher (other's is lower), 0 if equal"},"meta":{"line":151,"file":"Role.js","path":"src/structures"}},{"name":"edit","description":"Edits the role.","examples":["// Edit a role\nrole.edit({ name: 'new role' })\n .then(updated => console.log(`Edited role name to ${updated.name}`))\n .catch(console.error);"],"params":[{"name":"data","description":"The new data for the role","type":[[["RoleData"]]]},{"name":"reason","description":"Reason for editing this role","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":179,"file":"Role.js","path":"src/structures"}},{"name":"permissionsIn","description":"Returns `channel.permissionsFor(role)`. Returns permissions for a role in a guild channel,\ntaking into account permission overwrites.","params":[{"name":"channel","description":"The guild channel to use as context","type":[[["ChannelResolvable"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":221,"file":"Role.js","path":"src/structures"}},{"name":"setName","description":"Sets a new name for the role.","examples":["// Set the name of the role\nrole.setName('new role')\n .then(updated => console.log(`Updated role name to ${updated.name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"The new name of the role","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the role's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":238,"file":"Role.js","path":"src/structures"}},{"name":"setColor","description":"Sets a new color for the role.","examples":["// Set the color of a role\nrole.setColor('#FF0000')\n .then(updated => console.log(`Set color of role to ${updated.color}`))\n .catch(console.error);"],"params":[{"name":"color","description":"The color of the role","type":[[["ColorResolvable"]]]},{"name":"reason","description":"Reason for changing the role's color","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":253,"file":"Role.js","path":"src/structures"}},{"name":"setHoist","description":"Sets whether or not the role should be hoisted.","examples":["// Set the hoist of the role\nrole.setHoist(true)\n .then(updated => console.log(`Role hoisted: ${updated.hoist}`))\n .catch(console.error);"],"params":[{"name":"hoist","description":"Whether or not to hoist the role","type":[[["boolean"]]]},{"name":"reason","description":"Reason for setting whether or not the role should be hoisted","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":268,"file":"Role.js","path":"src/structures"}},{"name":"setPermissions","description":"Sets the permissions of the role.","examples":["// Set the permissions of the role\nrole.setPermissions(['KICK_MEMBERS', 'BAN_MEMBERS'])\n .then(updated => console.log(`Updated permissions to ${updated.permissions.bitfield}`))\n .catch(console.error);","// Remove all permissions from a role\nrole.setPermissions(0)\n .then(updated => console.log(`Updated permissions to ${updated.permissions.bitfield}`))\n .catch(console.error);"],"params":[{"name":"permissions","description":"The permissions of the role","type":[[["PermissionResolvable"]]]},{"name":"reason","description":"Reason for changing the role's permissions","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":288,"file":"Role.js","path":"src/structures"}},{"name":"setMentionable","description":"Sets whether this role is mentionable.","examples":["// Make the role mentionable\nrole.setMentionable(true)\n .then(updated => console.log(`Role updated ${updated.name}`))\n .catch(console.error);"],"params":[{"name":"mentionable","description":"Whether this role should be mentionable","type":[[["boolean"]]]},{"name":"reason","description":"Reason for setting whether or not this role should be mentionable","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":303,"file":"Role.js","path":"src/structures"}},{"name":"setPosition","description":"Sets the position of the role.","examples":["// Set the position of the role\nrole.setPosition(1)\n .then(updated => console.log(`Role position: ${updated.position}`))\n .catch(console.error);"],"params":[{"name":"position","description":"The position of the role","type":[[["number"]]]},{"name":"options","description":"Options for setting position","optional":true,"type":[[["Object"]]]},{"name":"options.relative","description":"Change the position relative to its current value","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for changing the position","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":320,"file":"Role.js","path":"src/structures"}},{"name":"delete","description":"Deletes the role.","examples":["// Delete a role\nrole.delete('The role needed to go')\n .then(deleted => console.log(`Deleted role ${deleted.name}`))\n .catch(console.error);"],"params":[{"name":"reason","description":"Reason for deleting this role","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Role",">"]]],"meta":{"line":347,"file":"Role.js","path":"src/structures"}},{"name":"equals","description":"Whether this role equals another role. It compares all properties, so for most operations\nit is advisable to just compare `role.id === role2.id` as it is much faster and is often\nwhat most users need.","params":[{"name":"role","description":"Role to compare with","type":[[["Role"]]]}],"returns":[[["boolean"]]],"meta":{"line":361,"file":"Role.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the role's mention instead of the Role object.","examples":["// Logs: Role: <@&123456789012345678>\nconsole.log(`Role: ${role}`);"],"returns":[[["string"]]],"meta":{"line":381,"file":"Role.js","path":"src/structures"}},{"name":"comparePositions","description":"Compares the positions of two roles.","scope":"static","params":[{"name":"role1","description":"First role to compare","type":[[["Role"]]]},{"name":"role2","description":"Second role to compare","type":[[["Role"]]]}],"returns":{"types":[[["number"]]],"description":"Negative number if the first role's position is lower (second role's is higher),\npositive number if the first's is higher (second's is lower), 0 if equal"},"meta":{"line":397,"file":"Role.js","path":"src/structures"}}],"meta":{"line":13,"file":"Role.js","path":"src/structures"}},{"name":"StoreChannel","description":"Represents a guild store channel on Discord.","extends":[[["GuildChannel"]]],"construct":{"name":"StoreChannel","params":[{"name":"guild","description":"The guild the store channel is part of","type":[["*"]]},{"name":"data","description":"The data for the store channel","type":[["*"]]}]},"props":[{"name":"nsfw","description":"If the guild considers this channel NSFW","readonly":true,"type":[[["boolean"]]],"meta":{"line":22,"file":"StoreChannel.js","path":"src/structures"}},{"name":"guild","description":"The guild the channel is in","type":[[["Guild"]]],"meta":{"line":34,"file":"GuildChannel.js","path":"src/structures"}},{"name":"name","description":"The name of the guild channel","type":[[["string"]]],"meta":{"line":44,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rawPosition","description":"The raw position of the channel from discord","type":[[["number"]]],"meta":{"line":50,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parentID","description":"The ID of the category parent of this channel","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":56,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionOverwrites","description":"A map of permission overwrites in this channel for roles and users","type":[[["Collection","<"],["Snowflake",", "],["PermissionOverwrites",">"]]],"meta":{"line":62,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parent","description":"The category parent of this channel","readonly":true,"nullable":true,"type":[[["CategoryChannel"]]],"meta":{"line":75,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionsLocked","description":"If the permissionOverwrites match the parent channel, null if no parent","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":84,"file":"GuildChannel.js","path":"src/structures"}},{"name":"position","description":"The position of the channel","readonly":true,"type":[[["number"]]],"meta":{"line":102,"file":"GuildChannel.js","path":"src/structures"}},{"name":"members","description":"A collection of members that can see this channel, mapped by their ID","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":283,"file":"GuildChannel.js","path":"src/structures"}},{"name":"deletable","description":"Whether the channel is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":573,"file":"GuildChannel.js","path":"src/structures"}},{"name":"manageable","description":"Whether the channel is manageable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":582,"file":"GuildChannel.js","path":"src/structures"}},{"name":"viewable","description":"Whether the channel is viewable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":599,"file":"GuildChannel.js","path":"src/structures"}},{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"permissionsFor","description":"Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.","inherits":"GuildChannel#permissionsFor","inherited":true,"params":[{"name":"memberOrRole","description":"The member or role to obtain the overall permissions for","type":[[["GuildMemberResolvable"]],[["RoleResolvable"]]]}],"returns":{"types":[[["Readonly","<"],["Permissions",">"]]],"nullable":true},"meta":{"line":112,"file":"GuildChannel.js","path":"src/structures"}},{"name":"memberPermissions","description":"Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#memberPermissions","inherited":true,"params":[{"name":"member","description":"The member to obtain the overall permissions for","type":[[["GuildMember"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":152,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rolePermissions","description":"Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#rolePermissions","inherited":true,"params":[{"name":"role","description":"The role to obtain the overall permissions for","type":[[["Role"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":178,"file":"GuildChannel.js","path":"src/structures"}},{"name":"overwritePermissions","description":"Replaces the permission overwrites in this channel.","inherits":"GuildChannel#overwritePermissions","inherited":true,"examples":["channel.overwritePermissions([\n {\n id: message.author.id,\n deny: ['VIEW_CHANNEL'],\n },\n], 'Needed to change permissions');"],"params":[{"name":"overwrites","description":"Permission overwrites the channel gets updated with","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"reason","description":"Reason for updating the channel overwrites","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":206,"file":"GuildChannel.js","path":"src/structures"}},{"name":"updateOverwrite","description":"Updates Overwrites for a user or role in this channel. (creates if non-existent)","inherits":"GuildChannel#updateOverwrite","inherited":true,"examples":["// Update or Create permission overwrites for a message author\nmessage.channel.updateOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":229,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createOverwrite","description":"Overwrites the permissions for a user or role in this channel. (replaces if existent)","inherits":"GuildChannel#createOverwrite","inherited":true,"examples":["// Create or Replace permissions overwrites for a message author\nmessage.channel.createOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":252,"file":"GuildChannel.js","path":"src/structures"}},{"name":"lockPermissions","description":"Locks in the permission overwrites from the parent channel.","inherits":"GuildChannel#lockPermissions","inherited":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":272,"file":"GuildChannel.js","path":"src/structures"}},{"name":"edit","description":"Edits the channel.","inherits":"GuildChannel#edit","inherited":true,"examples":["// Edit a channel\nchannel.edit({ name: 'new-channel' })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"data","description":"The new data for the channel","type":[[["ChannelData"]]]},{"name":"reason","description":"Reason for editing this channel","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":321,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setName","description":"Sets a new name for the guild channel.","inherits":"GuildChannel#setName","inherited":true,"examples":["// Set a new channel name\nchannel.setName('not_general')\n .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"The new name for the guild channel","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":386,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setParent","description":"Sets the category parent of this channel.","inherits":"GuildChannel#setParent","inherited":true,"examples":["// Add a parent to a channel\nmessage.channel.setParent('355908108431917066', { lockPermissions: false })\n .then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))\n .catch(console.error);"],"params":[{"name":"channel","description":"Parent channel","type":[[["CategoryChannel"]],[["Snowflake"]]]},{"name":"options","description":"Options to pass","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.lockPermissions","description":"Lock the permissions to what the parent's permissions are","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for modifying the parent of this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":403,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setTopic","description":"Sets a new topic for the guild channel.","inherits":"GuildChannel#setTopic","inherited":true,"examples":["// Set a new channel topic\nchannel.setTopic('needs more rate limiting')\n .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))\n .catch(console.error);"],"params":[{"name":"topic","description":"The new topic for the guild channel","nullable":true,"type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's topic","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":425,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setPosition","description":"Sets a new position for the guild channel.","inherits":"GuildChannel#setPosition","inherited":true,"examples":["// Set a new channel position\nchannel.setPosition(2)\n .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))\n .catch(console.error);"],"params":[{"name":"position","description":"The new position for the guild channel","type":[[["number"]]]},{"name":"options","description":"Options for setting position","optional":true,"type":[[["Object"]]]},{"name":"options.relative","description":"Change the position relative to its current value","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for changing the position","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":442,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createInvite","description":"Creates an invite to this guild channel.","inherits":"GuildChannel#createInvite","inherited":true,"examples":["// Create an invite to a channel\nchannel.createInvite()\n .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n .catch(console.error);"],"params":[{"name":"options","description":"Options for the invite","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.temporary","description":"Whether members that joined via the invite should be automatically\nkicked after 24 hours if they have not yet received a role","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.maxAge","description":"How long the invite should last (in seconds, 0 for forever)","optional":true,"default":86400,"type":[[["number"]]]},{"name":"options.maxUses","description":"Maximum number of uses","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.unique","description":"Create a unique invite, or use an existing one with similar settings","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for creating this","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Invite",">"]]],"meta":{"line":475,"file":"GuildChannel.js","path":"src/structures"}},{"name":"fetchInvites","description":"Fetches a collection of invites to this guild channel.\nResolves with a collection mapping invites by their codes.","inherits":"GuildChannel#fetchInvites","inherited":true,"async":true,"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Invite",">>"]]],"meta":{"line":495,"file":"GuildChannel.js","path":"src/structures"}},{"name":"clone","description":"Clones this channel.","inherits":"GuildChannel#clone","inherited":true,"params":[{"name":"options","description":"The options","optional":true,"type":[[["Object"]]]},{"name":"options.name","description":"Name of the new channel","optional":true,"default":"this.name","type":[[["string"]]]},{"name":"options.permissionOverwrites","description":"Permission overwrites of the new channel","optional":true,"default":"this.permissionOverwrites","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"options.type","description":"Type of the new channel","optional":true,"default":"this.type","type":[[["string"]]]},{"name":"options.topic","description":"Topic of the new channel (only text)","optional":true,"default":"this.topic","type":[[["string"]]]},{"name":"options.nsfw","description":"Whether the new channel is nsfw (only text)","optional":true,"default":"this.nsfw","type":[[["boolean"]]]},{"name":"options.bitrate","description":"Bitrate of the new channel in bits (only voice)","optional":true,"default":"this.bitrate","type":[[["number"]]]},{"name":"options.userLimit","description":"Maximum amount of users allowed in the new channel (only voice)","optional":true,"default":"this.userLimit","type":[[["number"]]]},{"name":"options.rateLimitPerUser","description":"Ratelimit per user for the new channel (only text)","optional":true,"default":"this.rateLimitPerUser","type":[[["number"]]]},{"name":"options.parent","description":"Parent of the new channel","optional":true,"default":"this.parent","type":[[["ChannelResolvable"]]]},{"name":"options.reason","description":"Reason for cloning this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":522,"file":"GuildChannel.js","path":"src/structures"}},{"name":"equals","description":"Checks if this channel has the same type, topic, position, name, overwrites and ID as another channel.\nIn most cases, a simple `channel.id === channel2.id` will do, and is much faster too.","inherits":"GuildChannel#equals","inherited":true,"params":[{"name":"channel","description":"Channel to compare with","type":[[["GuildChannel"]]]}],"returns":[[["boolean"]]],"meta":{"line":548,"file":"GuildChannel.js","path":"src/structures"}},{"name":"delete","description":"Deletes this channel.","inherits":"GuildChannel#delete","inherited":true,"examples":["// Delete the channel\nchannel.delete('making room for new channels')\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"reason","description":"Reason for deleting this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":616,"file":"GuildChannel.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.","inherits":"Channel#toString","inherited":true,"examples":["// Logs: Hello from <#123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":72,"file":"Channel.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this channel.","inherits":"Channel#fetch","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":97,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","inherits":"Channel#isText","inherited":true,"returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":9,"file":"StoreChannel.js","path":"src/structures"}},{"name":"Team","description":"Represents a Client OAuth2 Application Team.","extends":[[["Base"]]],"props":[{"name":"id","description":"The ID of the Team","type":[[["Snowflake"]]],"meta":{"line":23,"file":"Team.js","path":"src/structures"}},{"name":"name","description":"The name of the Team","type":[[["string"]]],"meta":{"line":29,"file":"Team.js","path":"src/structures"}},{"name":"icon","description":"The Team's icon hash","nullable":true,"type":[[["string"]]],"meta":{"line":35,"file":"Team.js","path":"src/structures"}},{"name":"ownerID","description":"The Team's owner id","nullable":true,"type":[[["string"]]],"meta":{"line":41,"file":"Team.js","path":"src/structures"}},{"name":"members","description":"The Team's members","type":[[["Collection","<"],["Snowflake",", "],["TeamMember",">"]]],"meta":{"line":47,"file":"Team.js","path":"src/structures"}},{"name":"owner","description":"The owner of this team","readonly":true,"nullable":true,"type":[[["TeamMember"]]],"meta":{"line":60,"file":"Team.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the team was created at","readonly":true,"type":[[["number"]]],"meta":{"line":69,"file":"Team.js","path":"src/structures"}},{"name":"createdAt","description":"The time the team was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":78,"file":"Team.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"iconURL","description":"A link to the teams's icon.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"description":"URL to the icon","nullable":true},"meta":{"line":87,"file":"Team.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the Team's name instead of the\nTeam object.","examples":["// Logs: Team name: My Team\nconsole.log(`Team name: ${team}`);"],"returns":[[["string"]]],"meta":{"line":100,"file":"Team.js","path":"src/structures"}}],"meta":{"line":12,"file":"Team.js","path":"src/structures"}},{"name":"TeamMember","description":"Represents a Client OAuth2 Application Team Member.","extends":[[["Base"]]],"props":[{"name":"team","description":"The Team this member is part of","type":[[["Team"]]],"meta":{"line":18,"file":"TeamMember.js","path":"src/structures"}},{"name":"permissions","description":"The permissions this Team Member has with regard to the team","type":[[["Array","<"],["string",">"]]],"meta":{"line":28,"file":"TeamMember.js","path":"src/structures"}},{"name":"membershipState","description":"The permissions this Team Member has with regard to the team","type":[[["MembershipStates"]]],"meta":{"line":34,"file":"TeamMember.js","path":"src/structures"}},{"name":"user","description":"The user for this Team Member","type":[[["User"]]],"meta":{"line":40,"file":"TeamMember.js","path":"src/structures"}},{"name":"id","description":"The ID of the Team Member","readonly":true,"type":[[["Snowflake"]]],"meta":{"line":48,"file":"TeamMember.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"toString","description":"When concatenated with a string, this automatically returns the team members's mention instead of the\nTeamMember object.","examples":["// Logs: Team Member's mention: <@123456789012345678>\nconsole.log(`Team Member's mention: ${teamMember}`);"],"returns":[[["string"]]],"meta":{"line":60,"file":"TeamMember.js","path":"src/structures"}}],"meta":{"line":10,"file":"TeamMember.js","path":"src/structures"}},{"name":"TextChannel","description":"Represents a guild text channel on Discord.","extends":[[["GuildChannel"]]],"implements":[[["TextBasedChannel"]]],"construct":{"name":"TextChannel","params":[{"name":"guild","description":"The guild the text channel is part of","type":[[["Guild"]]]},{"name":"data","description":"The data for the text channel","type":[[["Object"]]]}]},"props":[{"name":"messages","description":"A manager of the messages sent to this channel","type":[[["MessageManager"]]],"meta":{"line":26,"file":"TextChannel.js","path":"src/structures"}},{"name":"nsfw","description":"If the guild considers this channel NSFW","readonly":true,"type":[[["boolean"]]],"meta":{"line":33,"file":"TextChannel.js","path":"src/structures"}},{"name":"topic","description":"The topic of the text channel","nullable":true,"type":[[["string"]]],"meta":{"line":44,"file":"TextChannel.js","path":"src/structures"}},{"name":"lastMessageID","description":"The ID of the last message sent in this channel, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":52,"file":"TextChannel.js","path":"src/structures"}},{"name":"rateLimitPerUser","description":"The ratelimit per user for this channel in seconds","type":[[["number"]]],"meta":{"line":58,"file":"TextChannel.js","path":"src/structures"}},{"name":"lastPinTimestamp","description":"The timestamp when the last pinned message was pinned, if there was one","nullable":true,"type":[[["number"]]],"meta":{"line":64,"file":"TextChannel.js","path":"src/structures"}},{"name":"lastMessage","description":"The Message object of the last message in the channel, if one was sent","readonly":true,"nullable":true,"type":[[["Message"]]],"meta":{"line":40,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"lastPinAt","description":"The date when the last pinned message was pinned, if there was one","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":49,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"typing","description":"Whether or not the typing indicator is being shown in the channel","readonly":true,"type":[[["boolean"]]],"meta":{"line":250,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"typingCount","description":"Number of times `startTyping` has been called","readonly":true,"type":[[["number"]]],"meta":{"line":259,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"guild","description":"The guild the channel is in","type":[[["Guild"]]],"meta":{"line":34,"file":"GuildChannel.js","path":"src/structures"}},{"name":"name","description":"The name of the guild channel","type":[[["string"]]],"meta":{"line":44,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rawPosition","description":"The raw position of the channel from discord","type":[[["number"]]],"meta":{"line":50,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parentID","description":"The ID of the category parent of this channel","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":56,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionOverwrites","description":"A map of permission overwrites in this channel for roles and users","type":[[["Collection","<"],["Snowflake",", "],["PermissionOverwrites",">"]]],"meta":{"line":62,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parent","description":"The category parent of this channel","readonly":true,"nullable":true,"type":[[["CategoryChannel"]]],"meta":{"line":75,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionsLocked","description":"If the permissionOverwrites match the parent channel, null if no parent","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":84,"file":"GuildChannel.js","path":"src/structures"}},{"name":"position","description":"The position of the channel","readonly":true,"type":[[["number"]]],"meta":{"line":102,"file":"GuildChannel.js","path":"src/structures"}},{"name":"members","description":"A collection of members that can see this channel, mapped by their ID","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":283,"file":"GuildChannel.js","path":"src/structures"}},{"name":"deletable","description":"Whether the channel is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":573,"file":"GuildChannel.js","path":"src/structures"}},{"name":"manageable","description":"Whether the channel is manageable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":582,"file":"GuildChannel.js","path":"src/structures"}},{"name":"viewable","description":"Whether the channel is viewable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":599,"file":"GuildChannel.js","path":"src/structures"}},{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"setRateLimitPerUser","description":"Sets the rate limit per user for this channel.","params":[{"name":"rateLimitPerUser","description":"The new ratelimit in seconds","type":[[["number"]]]},{"name":"reason","description":"Reason for changing the channel's ratelimits","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["TextChannel",">"]]],"meta":{"line":75,"file":"TextChannel.js","path":"src/structures"}},{"name":"setNSFW","description":"Sets whether this channel is flagged as NSFW.","params":[{"name":"nsfw","description":"Whether the channel should be considered NSFW","type":[[["boolean"]]]},{"name":"reason","description":"Reason for changing the channel's NSFW flag","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["TextChannel",">"]]],"meta":{"line":85,"file":"TextChannel.js","path":"src/structures"}},{"name":"fetchWebhooks","description":"Fetches all webhooks for the channel.","examples":["// Fetch webhooks\nchannel.fetchWebhooks()\n .then(hooks => console.log(`This channel has ${hooks.size} hooks`))\n .catch(console.error);"],"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Webhook",">>"]]],"meta":{"line":98,"file":"TextChannel.js","path":"src/structures"}},{"name":"createWebhook","description":"Creates a webhook for the channel.","examples":["// Create a webhook for the current channel\nchannel.createWebhook('Snek', {\n avatar: 'https://i.imgur.com/mI8XcpG.jpg',\n reason: 'Needed a cool new Webhook'\n})\n .then(console.log)\n .catch(console.error)"],"params":[{"name":"name","description":"The name of the webhook","type":[[["string"]]]},{"name":"options","description":"Options for creating the webhook","optional":true,"type":[[["Object"]]]},{"name":"options.avatar","description":"Avatar for the webhook","optional":true,"type":[[["BufferResolvable"]],[["Base64Resolvable"]]]},{"name":"options.reason","description":"Reason for creating the webhook","optional":true,"type":[[["string"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["Webhook",">"]]],"description":"webhook The created webhook"},"meta":{"line":122,"file":"TextChannel.js","path":"src/structures"}},{"name":"send","description":"Sends a message to this channel.","implements":["TextBasedChannel#send"],"examples":["// Send a basic message\nchannel.send('hello!')\n .then(message => console.log(`Sent message: ${message.content}`))\n .catch(console.error);","// Send a remote file\nchannel.send({\n files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n})\n .then(console.log)\n .catch(console.error);","// Send a local file\nchannel.send({\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);","// Send an embed with a local image inside\nchannel.send('This is an embed', {\n embed: {\n thumbnail: {\n url: 'attachment://file.jpg'\n }\n },\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"content","description":"The content to send","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["MessageOptions"]],[["MessageAdditions"]]]}],"async":true,"returns":[[["Promise","<("],["Message","|"],["Array","<"],["Message",">)>"]]],"meta":{"line":153,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"startTyping","description":"Starts a typing indicator in the channel.","implements":["TextBasedChannel#startTyping"],"examples":["// Start typing in a channel, or increase the typing count by one\nchannel.startTyping();","// Start typing in a channel with a typing count of five, or set it to five\nchannel.startTyping(5);"],"params":[{"name":"count","description":"The number of times startTyping should be considered to have been called","optional":true,"default":1,"type":[[["number"]]]}],"returns":{"types":[[["Promise"]]],"description":"Resolves once the bot stops typing gracefully, or rejects when an error occurs"},"meta":{"line":189,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"stopTyping","description":"Stops the typing indicator in the channel.\nThe indicator will only stop if this is called as many times as startTyping().\nIt can take a few seconds for the client user to stop typing.","implements":["TextBasedChannel#stopTyping"],"examples":["// Reduce the typing count by one and stop typing if it reached 0\nchannel.stopTyping();","// Force typing to fully stop regardless of typing count\nchannel.stopTyping(true);"],"params":[{"name":"force","description":"Whether or not to reset the call count and force the indicator to stop","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":233,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"createMessageCollector","description":"Creates a Message Collector.","implements":["TextBasedChannel#createMessageCollector"],"examples":["// Create a message collector\nconst filter = m => m.content.includes('discord');\nconst collector = channel.createMessageCollector(filter, { time: 15000 });\ncollector.on('collect', m => console.log(`Collected ${m.content}`));\ncollector.on('end', collected => console.log(`Collected ${collected.size} items`));"],"params":[{"name":"filter","description":"The filter to create the collector with","type":[[["CollectorFilter"]]]},{"name":"options","description":"The options to pass to the collector","optional":true,"default":"{}","type":[[["MessageCollectorOptions"]]]}],"returns":[[["MessageCollector"]]],"meta":{"line":276,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"awaitMessages","description":"Similar to createMessageCollector but in promise form.\nResolves with a collection of messages that pass the specified filter.","implements":["TextBasedChannel#awaitMessages"],"examples":["// Await !vote messages\nconst filter = m => m.content.startsWith('!vote');\n// Errors: ['time'] treats ending because of the time limit as an error\nchannel.awaitMessages(filter, { max: 4, time: 60000, errors: ['time'] })\n .then(collected => console.log(collected.size))\n .catch(collected => console.log(`After a minute, only ${collected.size} out of 4 voted.`));"],"params":[{"name":"filter","description":"The filter function to use","type":[[["CollectorFilter"]]]},{"name":"options","description":"Optional options to pass to the internal collector","optional":true,"default":"{}","type":[[["AwaitMessagesOptions"]]]}],"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"meta":{"line":300,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"bulkDelete","description":"Bulk deletes given messages that are newer than two weeks.","implements":["TextBasedChannel#bulkDelete"],"examples":["// Bulk delete messages\nchannel.bulkDelete(5)\n .then(messages => console.log(`Bulk deleted ${messages.size} messages`))\n .catch(console.error);"],"params":[{"name":"messages","description":"Messages or number of messages to delete","type":[[["Collection","<"],["Snowflake",", "],["Message",">"]],[["Array","<"],["MessageResolvable",">"]],[["number"]]]},{"name":"filterOld","description":"Filter messages to remove those which are older than two weeks automatically","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"description":"Deleted messages"},"meta":{"line":325,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"permissionsFor","description":"Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.","inherits":"GuildChannel#permissionsFor","inherited":true,"params":[{"name":"memberOrRole","description":"The member or role to obtain the overall permissions for","type":[[["GuildMemberResolvable"]],[["RoleResolvable"]]]}],"returns":{"types":[[["Readonly","<"],["Permissions",">"]]],"nullable":true},"meta":{"line":112,"file":"GuildChannel.js","path":"src/structures"}},{"name":"memberPermissions","description":"Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#memberPermissions","inherited":true,"params":[{"name":"member","description":"The member to obtain the overall permissions for","type":[[["GuildMember"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":152,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rolePermissions","description":"Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#rolePermissions","inherited":true,"params":[{"name":"role","description":"The role to obtain the overall permissions for","type":[[["Role"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":178,"file":"GuildChannel.js","path":"src/structures"}},{"name":"overwritePermissions","description":"Replaces the permission overwrites in this channel.","inherits":"GuildChannel#overwritePermissions","inherited":true,"examples":["channel.overwritePermissions([\n {\n id: message.author.id,\n deny: ['VIEW_CHANNEL'],\n },\n], 'Needed to change permissions');"],"params":[{"name":"overwrites","description":"Permission overwrites the channel gets updated with","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"reason","description":"Reason for updating the channel overwrites","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":206,"file":"GuildChannel.js","path":"src/structures"}},{"name":"updateOverwrite","description":"Updates Overwrites for a user or role in this channel. (creates if non-existent)","inherits":"GuildChannel#updateOverwrite","inherited":true,"examples":["// Update or Create permission overwrites for a message author\nmessage.channel.updateOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":229,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createOverwrite","description":"Overwrites the permissions for a user or role in this channel. (replaces if existent)","inherits":"GuildChannel#createOverwrite","inherited":true,"examples":["// Create or Replace permissions overwrites for a message author\nmessage.channel.createOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":252,"file":"GuildChannel.js","path":"src/structures"}},{"name":"lockPermissions","description":"Locks in the permission overwrites from the parent channel.","inherits":"GuildChannel#lockPermissions","inherited":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":272,"file":"GuildChannel.js","path":"src/structures"}},{"name":"edit","description":"Edits the channel.","inherits":"GuildChannel#edit","inherited":true,"examples":["// Edit a channel\nchannel.edit({ name: 'new-channel' })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"data","description":"The new data for the channel","type":[[["ChannelData"]]]},{"name":"reason","description":"Reason for editing this channel","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":321,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setName","description":"Sets a new name for the guild channel.","inherits":"GuildChannel#setName","inherited":true,"examples":["// Set a new channel name\nchannel.setName('not_general')\n .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"The new name for the guild channel","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":386,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setParent","description":"Sets the category parent of this channel.","inherits":"GuildChannel#setParent","inherited":true,"examples":["// Add a parent to a channel\nmessage.channel.setParent('355908108431917066', { lockPermissions: false })\n .then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))\n .catch(console.error);"],"params":[{"name":"channel","description":"Parent channel","type":[[["CategoryChannel"]],[["Snowflake"]]]},{"name":"options","description":"Options to pass","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.lockPermissions","description":"Lock the permissions to what the parent's permissions are","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for modifying the parent of this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":403,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setTopic","description":"Sets a new topic for the guild channel.","inherits":"GuildChannel#setTopic","inherited":true,"examples":["// Set a new channel topic\nchannel.setTopic('needs more rate limiting')\n .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))\n .catch(console.error);"],"params":[{"name":"topic","description":"The new topic for the guild channel","nullable":true,"type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's topic","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":425,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setPosition","description":"Sets a new position for the guild channel.","inherits":"GuildChannel#setPosition","inherited":true,"examples":["// Set a new channel position\nchannel.setPosition(2)\n .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))\n .catch(console.error);"],"params":[{"name":"position","description":"The new position for the guild channel","type":[[["number"]]]},{"name":"options","description":"Options for setting position","optional":true,"type":[[["Object"]]]},{"name":"options.relative","description":"Change the position relative to its current value","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for changing the position","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":442,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createInvite","description":"Creates an invite to this guild channel.","inherits":"GuildChannel#createInvite","inherited":true,"examples":["// Create an invite to a channel\nchannel.createInvite()\n .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n .catch(console.error);"],"params":[{"name":"options","description":"Options for the invite","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.temporary","description":"Whether members that joined via the invite should be automatically\nkicked after 24 hours if they have not yet received a role","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.maxAge","description":"How long the invite should last (in seconds, 0 for forever)","optional":true,"default":86400,"type":[[["number"]]]},{"name":"options.maxUses","description":"Maximum number of uses","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.unique","description":"Create a unique invite, or use an existing one with similar settings","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for creating this","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Invite",">"]]],"meta":{"line":475,"file":"GuildChannel.js","path":"src/structures"}},{"name":"fetchInvites","description":"Fetches a collection of invites to this guild channel.\nResolves with a collection mapping invites by their codes.","inherits":"GuildChannel#fetchInvites","inherited":true,"async":true,"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Invite",">>"]]],"meta":{"line":495,"file":"GuildChannel.js","path":"src/structures"}},{"name":"clone","description":"Clones this channel.","inherits":"GuildChannel#clone","inherited":true,"params":[{"name":"options","description":"The options","optional":true,"type":[[["Object"]]]},{"name":"options.name","description":"Name of the new channel","optional":true,"default":"this.name","type":[[["string"]]]},{"name":"options.permissionOverwrites","description":"Permission overwrites of the new channel","optional":true,"default":"this.permissionOverwrites","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"options.type","description":"Type of the new channel","optional":true,"default":"this.type","type":[[["string"]]]},{"name":"options.topic","description":"Topic of the new channel (only text)","optional":true,"default":"this.topic","type":[[["string"]]]},{"name":"options.nsfw","description":"Whether the new channel is nsfw (only text)","optional":true,"default":"this.nsfw","type":[[["boolean"]]]},{"name":"options.bitrate","description":"Bitrate of the new channel in bits (only voice)","optional":true,"default":"this.bitrate","type":[[["number"]]]},{"name":"options.userLimit","description":"Maximum amount of users allowed in the new channel (only voice)","optional":true,"default":"this.userLimit","type":[[["number"]]]},{"name":"options.rateLimitPerUser","description":"Ratelimit per user for the new channel (only text)","optional":true,"default":"this.rateLimitPerUser","type":[[["number"]]]},{"name":"options.parent","description":"Parent of the new channel","optional":true,"default":"this.parent","type":[[["ChannelResolvable"]]]},{"name":"options.reason","description":"Reason for cloning this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":522,"file":"GuildChannel.js","path":"src/structures"}},{"name":"equals","description":"Checks if this channel has the same type, topic, position, name, overwrites and ID as another channel.\nIn most cases, a simple `channel.id === channel2.id` will do, and is much faster too.","inherits":"GuildChannel#equals","inherited":true,"params":[{"name":"channel","description":"Channel to compare with","type":[[["GuildChannel"]]]}],"returns":[[["boolean"]]],"meta":{"line":548,"file":"GuildChannel.js","path":"src/structures"}},{"name":"delete","description":"Deletes this channel.","inherits":"GuildChannel#delete","inherited":true,"examples":["// Delete the channel\nchannel.delete('making room for new channels')\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"reason","description":"Reason for deleting this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":616,"file":"GuildChannel.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.","inherits":"Channel#toString","inherited":true,"examples":["// Logs: Hello from <#123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":72,"file":"Channel.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this channel.","inherits":"Channel#fetch","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":97,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","inherits":"Channel#isText","inherited":true,"returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":15,"file":"TextChannel.js","path":"src/structures"}},{"name":"User","description":"Represents a user on Discord.","extends":[[["Base"]]],"implements":[[["TextBasedChannel"]]],"construct":{"name":"User","params":[{"name":"client","description":"The instantiating client","type":[[["Client"]]]},{"name":"data","description":"The data for the user","type":[[["Object"]]]}]},"props":[{"name":"id","description":"The ID of the user","type":[[["Snowflake"]]],"meta":{"line":28,"file":"User.js","path":"src/structures"}},{"name":"username","description":"The username of the user","nullable":true,"type":[[["string"]]],"meta":{"line":43,"file":"User.js","path":"src/structures"}},{"name":"bot","description":"Whether or not the user is a bot","type":[[["boolean"]]],"meta":{"line":53,"file":"User.js","path":"src/structures"}},{"name":"discriminator","description":"A discriminator based on username for the user","nullable":true,"type":[[["string"]]],"meta":{"line":61,"file":"User.js","path":"src/structures"}},{"name":"avatar","description":"The ID of the user's avatar","nullable":true,"type":[[["string"]]],"meta":{"line":71,"file":"User.js","path":"src/structures"}},{"name":"system","description":"Whether the user is an Official Discord System user (part of the urgent message system)","nullable":true,"type":[[["boolean"]]],"meta":{"line":81,"file":"User.js","path":"src/structures"}},{"name":"locale","description":"The locale of the user's client (ISO 639-1)","nullable":true,"type":[[["string"]]],"meta":{"line":89,"file":"User.js","path":"src/structures"}},{"name":"flags","description":"The flags for this user","nullable":true,"type":[[["UserFlags"]]],"meta":{"line":97,"file":"User.js","path":"src/structures"}},{"name":"lastMessageID","description":"The ID of the last message sent by the user, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":104,"file":"User.js","path":"src/structures"}},{"name":"lastMessageChannelID","description":"The ID of the channel for the last message sent by the user, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":110,"file":"User.js","path":"src/structures"}},{"name":"partial","description":"Whether this User is a partial","readonly":true,"type":[[["boolean"]]],"meta":{"line":118,"file":"User.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the user was created at","readonly":true,"type":[[["number"]]],"meta":{"line":127,"file":"User.js","path":"src/structures"}},{"name":"createdAt","description":"The time the user was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":136,"file":"User.js","path":"src/structures"}},{"name":"lastMessage","description":"The Message object of the last message sent by the user, if one was sent","readonly":true,"nullable":true,"type":[[["Message"]]],"meta":{"line":145,"file":"User.js","path":"src/structures"}},{"name":"presence","description":"The presence of this user","readonly":true,"type":[[["Presence"]]],"meta":{"line":155,"file":"User.js","path":"src/structures"}},{"name":"defaultAvatarURL","description":"A link to the user's default avatar","readonly":true,"type":[[["string"]]],"meta":{"line":179,"file":"User.js","path":"src/structures"}},{"name":"tag","description":"The Discord \"tag\" (e.g. `hydrabolt#0001`) for this user","readonly":true,"nullable":true,"type":[[["string"]]],"meta":{"line":198,"file":"User.js","path":"src/structures"}},{"name":"dmChannel","description":"The DM between the client's user and this user","readonly":true,"nullable":true,"type":[[["DMChannel"]]],"meta":{"line":237,"file":"User.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"avatarURL","description":"A link to the user's avatar.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":169,"file":"User.js","path":"src/structures"}},{"name":"displayAvatarURL","description":"A link to the user's avatar if they have one.\nOtherwise a link to their default avatar will be returned.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":[[["string"]]],"meta":{"line":189,"file":"User.js","path":"src/structures"}},{"name":"typingIn","description":"Checks whether the user is typing in a channel.","params":[{"name":"channel","description":"The channel to check in","type":[[["ChannelResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":207,"file":"User.js","path":"src/structures"}},{"name":"typingSinceIn","description":"Gets the time that the user started typing.","params":[{"name":"channel","description":"The channel to get the time in","type":[[["ChannelResolvable"]]]}],"returns":{"types":[[["Date"]]],"nullable":true},"meta":{"line":217,"file":"User.js","path":"src/structures"}},{"name":"typingDurationIn","description":"Gets the amount of time the user has been typing in a channel for (in milliseconds), or -1 if they're not typing.","params":[{"name":"channel","description":"The channel to get the time in","type":[[["ChannelResolvable"]]]}],"returns":[[["number"]]],"meta":{"line":227,"file":"User.js","path":"src/structures"}},{"name":"createDM","description":"Creates a DM channel between the client and the user.","params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["DMChannel",">"]]],"meta":{"line":246,"file":"User.js","path":"src/structures"}},{"name":"deleteDM","description":"Deletes a DM channel (if one exists) between the client and the user. Resolves with the channel if successful.","async":true,"returns":[[["Promise","<"],["DMChannel",">"]]],"meta":{"line":264,"file":"User.js","path":"src/structures"}},{"name":"equals","description":"Checks if the user is equal to another. It compares ID, username, discriminator, avatar, and bot flags.\nIt is recommended to compare equality by using `user.id === user2.id` unless you want to compare all properties.","params":[{"name":"user","description":"User to compare with","type":[[["User"]]]}],"returns":[[["boolean"]]],"meta":{"line":277,"file":"User.js","path":"src/structures"}},{"name":"fetchFlags","description":"Fetches this user's flags.","params":[{"name":"force","description":"Whether to skip the cache check and request the AP","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":[[["Promise","<"],["UserFlags",">"]]],"meta":{"line":293,"file":"User.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this user.","params":[{"name":"force","description":"Whether to skip the cache check and request the AP","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["User",">"]]],"meta":{"line":305,"file":"User.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the user's mention instead of the User object.","examples":["// Logs: Hello from <@123456789012345678>!\nconsole.log(`Hello from ${user}!`);"],"returns":[[["string"]]],"meta":{"line":316,"file":"User.js","path":"src/structures"}},{"name":"send","description":"Sends a message to this channel.","implements":["TextBasedChannel#send"],"examples":["// Send a basic message\nchannel.send('hello!')\n .then(message => console.log(`Sent message: ${message.content}`))\n .catch(console.error);","// Send a remote file\nchannel.send({\n files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n})\n .then(console.log)\n .catch(console.error);","// Send a local file\nchannel.send({\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);","// Send an embed with a local image inside\nchannel.send('This is an embed', {\n embed: {\n thumbnail: {\n url: 'attachment://file.jpg'\n }\n },\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"content","description":"The content to send","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["MessageOptions"]],[["MessageAdditions"]]]}],"async":true,"returns":[[["Promise","<("],["Message","|"],["Array","<"],["Message",">)>"]]],"meta":{"line":153,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}}],"meta":{"line":16,"file":"User.js","path":"src/structures"}},{"name":"VoiceChannel","description":"Represents a guild voice channel on Discord.","extends":[[["GuildChannel"]]],"props":[{"name":"bitrate","description":"The bitrate of this voice channel","type":[[["number"]]],"meta":{"line":20,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"userLimit","description":"The maximum amount of users allowed in this channel - 0 means unlimited.","type":[[["number"]]],"meta":{"line":26,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"members","description":"The members in this voice channel","readonly":true,"type":[[["Collection","<"],["Snowflake",", "],["GuildMember",">"]]],"meta":{"line":34,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"full","description":"Checks if the voice channel is full","readonly":true,"type":[[["boolean"]]],"meta":{"line":49,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"deletable","description":"Whether the channel is deletable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":58,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"editable","description":"Whether the channel is editable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":67,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"joinable","description":"Whether the channel is joinable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":76,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"speakable","description":"Checks if the client has permission to send audio to the voice channel","readonly":true,"type":[[["boolean"]]],"meta":{"line":89,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"guild","description":"The guild the channel is in","type":[[["Guild"]]],"meta":{"line":34,"file":"GuildChannel.js","path":"src/structures"}},{"name":"name","description":"The name of the guild channel","type":[[["string"]]],"meta":{"line":44,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rawPosition","description":"The raw position of the channel from discord","type":[[["number"]]],"meta":{"line":50,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parentID","description":"The ID of the category parent of this channel","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":56,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionOverwrites","description":"A map of permission overwrites in this channel for roles and users","type":[[["Collection","<"],["Snowflake",", "],["PermissionOverwrites",">"]]],"meta":{"line":62,"file":"GuildChannel.js","path":"src/structures"}},{"name":"parent","description":"The category parent of this channel","readonly":true,"nullable":true,"type":[[["CategoryChannel"]]],"meta":{"line":75,"file":"GuildChannel.js","path":"src/structures"}},{"name":"permissionsLocked","description":"If the permissionOverwrites match the parent channel, null if no parent","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":84,"file":"GuildChannel.js","path":"src/structures"}},{"name":"position","description":"The position of the channel","readonly":true,"type":[[["number"]]],"meta":{"line":102,"file":"GuildChannel.js","path":"src/structures"}},{"name":"manageable","description":"Whether the channel is manageable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":582,"file":"GuildChannel.js","path":"src/structures"}},{"name":"viewable","description":"Whether the channel is viewable by the client user","readonly":true,"type":[[["boolean"]]],"meta":{"line":599,"file":"GuildChannel.js","path":"src/structures"}},{"name":"type","description":"The type of the channel, either:\n* `dm` - a DM channel\n* `text` - a guild text channel\n* `voice` - a guild voice channel\n* `category` - a guild category channel\n* `news` - a guild news channel\n* `store` - a guild store channel\n* `unknown` - a generic channel of unknown type, could be Channel or GuildChannel","type":[[["string"]]],"meta":{"line":28,"file":"Channel.js","path":"src/structures"}},{"name":"deleted","description":"Whether the channel has been deleted","type":[[["boolean"]]],"meta":{"line":34,"file":"Channel.js","path":"src/structures"}},{"name":"id","description":"The unique ID of the channel","type":[[["Snowflake"]]],"meta":{"line":44,"file":"Channel.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the channel was created at","readonly":true,"type":[[["number"]]],"meta":{"line":52,"file":"Channel.js","path":"src/structures"}},{"name":"createdAt","description":"The time the channel was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":61,"file":"Channel.js","path":"src/structures"}},{"name":"client","description":"The client that instantiated this","readonly":true,"type":[[["Client"]]],"meta":{"line":11,"file":"Base.js","path":"src/structures"}}],"methods":[{"name":"setBitrate","description":"Sets the bitrate of the channel.","examples":["// Set the bitrate of a voice channel\nvoiceChannel.setBitrate(48000)\n .then(vc => console.log(`Set bitrate to ${vc.bitrate}bps for ${vc.name}`))\n .catch(console.error);"],"params":[{"name":"bitrate","description":"The new bitrate","type":[[["number"]]]},{"name":"reason","description":"Reason for changing the channel's bitrate","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["VoiceChannel",">"]]],"meta":{"line":104,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"setUserLimit","description":"Sets the user limit of the channel.","examples":["// Set the user limit of a voice channel\nvoiceChannel.setUserLimit(42)\n .then(vc => console.log(`Set user limit to ${vc.userLimit} for ${vc.name}`))\n .catch(console.error);"],"params":[{"name":"userLimit","description":"The new user limit","type":[[["number"]]]},{"name":"reason","description":"Reason for changing the user limit","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["VoiceChannel",">"]]],"meta":{"line":119,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"join","description":"Attempts to join this voice channel.","examples":["// Join a voice channel\nvoiceChannel.join()\n .then(connection => console.log('Connected!'))\n .catch(console.error);"],"returns":[[["Promise","<"],["VoiceConnection",">"]]],"meta":{"line":132,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"leave","description":"Leaves this voice channel.","examples":["// Leave a voice channel\nvoiceChannel.leave();"],"meta":{"line":143,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"permissionsFor","description":"Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.","inherits":"GuildChannel#permissionsFor","inherited":true,"params":[{"name":"memberOrRole","description":"The member or role to obtain the overall permissions for","type":[[["GuildMemberResolvable"]],[["RoleResolvable"]]]}],"returns":{"types":[[["Readonly","<"],["Permissions",">"]]],"nullable":true},"meta":{"line":112,"file":"GuildChannel.js","path":"src/structures"}},{"name":"memberPermissions","description":"Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#memberPermissions","inherited":true,"params":[{"name":"member","description":"The member to obtain the overall permissions for","type":[[["GuildMember"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":152,"file":"GuildChannel.js","path":"src/structures"}},{"name":"rolePermissions","description":"Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.","access":"private","inherits":"GuildChannel#rolePermissions","inherited":true,"params":[{"name":"role","description":"The role to obtain the overall permissions for","type":[[["Role"]]]}],"returns":[[["Readonly","<"],["Permissions",">"]]],"meta":{"line":178,"file":"GuildChannel.js","path":"src/structures"}},{"name":"overwritePermissions","description":"Replaces the permission overwrites in this channel.","inherits":"GuildChannel#overwritePermissions","inherited":true,"examples":["channel.overwritePermissions([\n {\n id: message.author.id,\n deny: ['VIEW_CHANNEL'],\n },\n], 'Needed to change permissions');"],"params":[{"name":"overwrites","description":"Permission overwrites the channel gets updated with","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"reason","description":"Reason for updating the channel overwrites","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":206,"file":"GuildChannel.js","path":"src/structures"}},{"name":"updateOverwrite","description":"Updates Overwrites for a user or role in this channel. (creates if non-existent)","inherits":"GuildChannel#updateOverwrite","inherited":true,"examples":["// Update or Create permission overwrites for a message author\nmessage.channel.updateOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":229,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createOverwrite","description":"Overwrites the permissions for a user or role in this channel. (replaces if existent)","inherits":"GuildChannel#createOverwrite","inherited":true,"examples":["// Create or Replace permissions overwrites for a message author\nmessage.channel.createOverwrite(message.author, {\n SEND_MESSAGES: false\n})\n .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))\n .catch(console.error);"],"params":[{"name":"userOrRole","description":"The user or role to update","type":[[["RoleResolvable"]],[["UserResolvable"]]]},{"name":"options","description":"The options for the update","type":[[["PermissionOverwriteOptions"]]]},{"name":"reason","description":"Reason for creating/editing this overwrite","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":252,"file":"GuildChannel.js","path":"src/structures"}},{"name":"lockPermissions","description":"Locks in the permission overwrites from the parent channel.","inherits":"GuildChannel#lockPermissions","inherited":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":272,"file":"GuildChannel.js","path":"src/structures"}},{"name":"edit","description":"Edits the channel.","inherits":"GuildChannel#edit","inherited":true,"examples":["// Edit a channel\nchannel.edit({ name: 'new-channel' })\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"data","description":"The new data for the channel","type":[[["ChannelData"]]]},{"name":"reason","description":"Reason for editing this channel","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":321,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setName","description":"Sets a new name for the guild channel.","inherits":"GuildChannel#setName","inherited":true,"examples":["// Set a new channel name\nchannel.setName('not_general')\n .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))\n .catch(console.error);"],"params":[{"name":"name","description":"The new name for the guild channel","type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's name","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":386,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setParent","description":"Sets the category parent of this channel.","inherits":"GuildChannel#setParent","inherited":true,"examples":["// Add a parent to a channel\nmessage.channel.setParent('355908108431917066', { lockPermissions: false })\n .then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))\n .catch(console.error);"],"params":[{"name":"channel","description":"Parent channel","type":[[["CategoryChannel"]],[["Snowflake"]]]},{"name":"options","description":"Options to pass","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.lockPermissions","description":"Lock the permissions to what the parent's permissions are","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for modifying the parent of this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":403,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setTopic","description":"Sets a new topic for the guild channel.","inherits":"GuildChannel#setTopic","inherited":true,"examples":["// Set a new channel topic\nchannel.setTopic('needs more rate limiting')\n .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))\n .catch(console.error);"],"params":[{"name":"topic","description":"The new topic for the guild channel","nullable":true,"type":[[["string"]]]},{"name":"reason","description":"Reason for changing the guild channel's topic","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":425,"file":"GuildChannel.js","path":"src/structures"}},{"name":"setPosition","description":"Sets a new position for the guild channel.","inherits":"GuildChannel#setPosition","inherited":true,"examples":["// Set a new channel position\nchannel.setPosition(2)\n .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))\n .catch(console.error);"],"params":[{"name":"position","description":"The new position for the guild channel","type":[[["number"]]]},{"name":"options","description":"Options for setting position","optional":true,"type":[[["Object"]]]},{"name":"options.relative","description":"Change the position relative to its current value","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for changing the position","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":442,"file":"GuildChannel.js","path":"src/structures"}},{"name":"createInvite","description":"Creates an invite to this guild channel.","inherits":"GuildChannel#createInvite","inherited":true,"examples":["// Create an invite to a channel\nchannel.createInvite()\n .then(invite => console.log(`Created an invite with a code of ${invite.code}`))\n .catch(console.error);"],"params":[{"name":"options","description":"Options for the invite","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.temporary","description":"Whether members that joined via the invite should be automatically\nkicked after 24 hours if they have not yet received a role","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.maxAge","description":"How long the invite should last (in seconds, 0 for forever)","optional":true,"default":86400,"type":[[["number"]]]},{"name":"options.maxUses","description":"Maximum number of uses","optional":true,"default":0,"type":[[["number"]]]},{"name":"options.unique","description":"Create a unique invite, or use an existing one with similar settings","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"options.reason","description":"Reason for creating this","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["Invite",">"]]],"meta":{"line":475,"file":"GuildChannel.js","path":"src/structures"}},{"name":"fetchInvites","description":"Fetches a collection of invites to this guild channel.\nResolves with a collection mapping invites by their codes.","inherits":"GuildChannel#fetchInvites","inherited":true,"async":true,"returns":[[["Promise","<"],["Collection","<"],["string",", "],["Invite",">>"]]],"meta":{"line":495,"file":"GuildChannel.js","path":"src/structures"}},{"name":"clone","description":"Clones this channel.","inherits":"GuildChannel#clone","inherited":true,"params":[{"name":"options","description":"The options","optional":true,"type":[[["Object"]]]},{"name":"options.name","description":"Name of the new channel","optional":true,"default":"this.name","type":[[["string"]]]},{"name":"options.permissionOverwrites","description":"Permission overwrites of the new channel","optional":true,"default":"this.permissionOverwrites","type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"options.type","description":"Type of the new channel","optional":true,"default":"this.type","type":[[["string"]]]},{"name":"options.topic","description":"Topic of the new channel (only text)","optional":true,"default":"this.topic","type":[[["string"]]]},{"name":"options.nsfw","description":"Whether the new channel is nsfw (only text)","optional":true,"default":"this.nsfw","type":[[["boolean"]]]},{"name":"options.bitrate","description":"Bitrate of the new channel in bits (only voice)","optional":true,"default":"this.bitrate","type":[[["number"]]]},{"name":"options.userLimit","description":"Maximum amount of users allowed in the new channel (only voice)","optional":true,"default":"this.userLimit","type":[[["number"]]]},{"name":"options.rateLimitPerUser","description":"Ratelimit per user for the new channel (only text)","optional":true,"default":"this.rateLimitPerUser","type":[[["number"]]]},{"name":"options.parent","description":"Parent of the new channel","optional":true,"default":"this.parent","type":[[["ChannelResolvable"]]]},{"name":"options.reason","description":"Reason for cloning this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":522,"file":"GuildChannel.js","path":"src/structures"}},{"name":"equals","description":"Checks if this channel has the same type, topic, position, name, overwrites and ID as another channel.\nIn most cases, a simple `channel.id === channel2.id` will do, and is much faster too.","inherits":"GuildChannel#equals","inherited":true,"params":[{"name":"channel","description":"Channel to compare with","type":[[["GuildChannel"]]]}],"returns":[[["boolean"]]],"meta":{"line":548,"file":"GuildChannel.js","path":"src/structures"}},{"name":"delete","description":"Deletes this channel.","inherits":"GuildChannel#delete","inherited":true,"examples":["// Delete the channel\nchannel.delete('making room for new channels')\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"reason","description":"Reason for deleting this channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildChannel",">"]]],"meta":{"line":616,"file":"GuildChannel.js","path":"src/structures"}},{"name":"toString","description":"When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.","inherits":"Channel#toString","inherited":true,"examples":["// Logs: Hello from <#123456789012345678>!\nconsole.log(`Hello from ${channel}!`);"],"returns":[[["string"]]],"meta":{"line":72,"file":"Channel.js","path":"src/structures"}},{"name":"fetch","description":"Fetches this channel.","inherits":"Channel#fetch","inherited":true,"params":[{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["Promise","<"],["Channel",">"]]],"meta":{"line":97,"file":"Channel.js","path":"src/structures"}},{"name":"isText","description":"Indicates whether this channel is text-based.","inherits":"Channel#isText","inherited":true,"returns":[[["boolean"]]],"meta":{"line":105,"file":"Channel.js","path":"src/structures"}}],"meta":{"line":13,"file":"VoiceChannel.js","path":"src/structures"}},{"name":"VoiceRegion","description":"Represents a Discord voice region for guilds.","props":[{"name":"id","description":"The ID of the region","type":[[["string"]]],"meta":{"line":14,"file":"VoiceRegion.js","path":"src/structures"}},{"name":"name","description":"Name of the region","type":[[["string"]]],"meta":{"line":20,"file":"VoiceRegion.js","path":"src/structures"}},{"name":"vip","description":"Whether the region is VIP-only","type":[[["boolean"]]],"meta":{"line":26,"file":"VoiceRegion.js","path":"src/structures"}},{"name":"deprecated","description":"Whether the region is deprecated","type":[[["boolean"]]],"meta":{"line":32,"file":"VoiceRegion.js","path":"src/structures"}},{"name":"optimal","description":"Whether the region is optimal","type":[[["boolean"]]],"meta":{"line":38,"file":"VoiceRegion.js","path":"src/structures"}},{"name":"custom","description":"Whether the region is custom","type":[[["boolean"]]],"meta":{"line":44,"file":"VoiceRegion.js","path":"src/structures"}}],"meta":{"line":8,"file":"VoiceRegion.js","path":"src/structures"}},{"name":"VoiceState","description":"Represents the voice state for a Guild Member.","construct":{"name":"VoiceState","params":[{"name":"guild","description":"The guild the voice state is part of","type":[[["Guild"]]]},{"name":"data","description":"The data for the voice state","type":[[["Object"]]]}]},"props":[{"name":"guild","description":"The guild of this voice state","type":[[["Guild"]]],"meta":{"line":21,"file":"VoiceState.js","path":"src/structures"}},{"name":"id","description":"The ID of the member of this voice state","type":[[["Snowflake"]]],"meta":{"line":26,"file":"VoiceState.js","path":"src/structures"}},{"name":"serverDeaf","description":"Whether this member is deafened server-wide","nullable":true,"type":[[["boolean"]]],"meta":{"line":35,"file":"VoiceState.js","path":"src/structures"}},{"name":"serverMute","description":"Whether this member is muted server-wide","nullable":true,"type":[[["boolean"]]],"meta":{"line":40,"file":"VoiceState.js","path":"src/structures"}},{"name":"selfDeaf","description":"Whether this member is self-deafened","nullable":true,"type":[[["boolean"]]],"meta":{"line":45,"file":"VoiceState.js","path":"src/structures"}},{"name":"selfMute","description":"Whether this member is self-muted","nullable":true,"type":[[["boolean"]]],"meta":{"line":50,"file":"VoiceState.js","path":"src/structures"}},{"name":"selfVideo","description":"Whether this member's camera is enabled","nullable":true,"type":[[["boolean"]]],"meta":{"line":55,"file":"VoiceState.js","path":"src/structures"}},{"name":"sessionID","description":"The session ID of this member's connection","nullable":true,"type":[[["string"]]],"meta":{"line":60,"file":"VoiceState.js","path":"src/structures"}},{"name":"streaming","description":"Whether this member is streaming using \"Go Live\"","type":[[["boolean"]]],"meta":{"line":65,"file":"VoiceState.js","path":"src/structures"}},{"name":"channelID","description":"The ID of the voice channel that this member is in","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":70,"file":"VoiceState.js","path":"src/structures"}},{"name":"member","description":"The member that this voice state belongs to","readonly":true,"nullable":true,"type":[[["GuildMember"]]],"meta":{"line":79,"file":"VoiceState.js","path":"src/structures"}},{"name":"channel","description":"The channel that the member is connected to","readonly":true,"nullable":true,"type":[[["VoiceChannel"]]],"meta":{"line":88,"file":"VoiceState.js","path":"src/structures"}},{"name":"connection","description":"If this is a voice state of the client user, then this will refer to the active VoiceConnection for this guild","readonly":true,"nullable":true,"type":[[["VoiceConnection"]]],"meta":{"line":97,"file":"VoiceState.js","path":"src/structures"}},{"name":"deaf","description":"Whether this member is either self-deafened or server-deafened","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":107,"file":"VoiceState.js","path":"src/structures"}},{"name":"mute","description":"Whether this member is either self-muted or server-muted","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":116,"file":"VoiceState.js","path":"src/structures"}},{"name":"speaking","description":"Whether this member is currently speaking. A boolean if the information is available (aka\nthe bot is connected to any voice channel in the guild), otherwise this is null","readonly":true,"nullable":true,"type":[[["boolean"]]],"meta":{"line":126,"file":"VoiceState.js","path":"src/structures"}}],"methods":[{"name":"setMute","description":"Mutes/unmutes the member of this voice state.","params":[{"name":"mute","description":"Whether or not the member should be muted","type":[[["boolean"]]]},{"name":"reason","description":"Reason for muting or unmuting","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":136,"file":"VoiceState.js","path":"src/structures"}},{"name":"setDeaf","description":"Deafens/undeafens the member of this voice state.","params":[{"name":"deaf","description":"Whether or not the member should be deafened","type":[[["boolean"]]]},{"name":"reason","description":"Reason for deafening or undeafening","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":146,"file":"VoiceState.js","path":"src/structures"}},{"name":"kick","description":"Kicks the member from the voice channel.","params":[{"name":"reason","description":"Reason for kicking member from the channel","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":155,"file":"VoiceState.js","path":"src/structures"}},{"name":"setChannel","description":"Moves the member to a different channel, or disconnects them from the one they're in.","params":[{"name":"channel","description":"Channel to move the member to, or `null` if you want to disconnect them\nfrom voice.","optional":true,"type":[[["ChannelResolvable"]],[["null"]]]},{"name":"reason","description":"Reason for moving member to another channel or disconnecting","optional":true,"type":[[["string"]]]}],"returns":[[["Promise","<"],["GuildMember",">"]]],"meta":{"line":166,"file":"VoiceState.js","path":"src/structures"}},{"name":"setSelfMute","description":"Self-mutes/unmutes the bot for this voice state.","params":[{"name":"mute","description":"Whether or not the bot should be self-muted","type":[[["boolean"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["boolean",">"]]],"description":"true if the voice state was successfully updated, otherwise false"},"meta":{"line":177,"file":"VoiceState.js","path":"src/structures"}},{"name":"setSelfDeaf","description":"Self-deafens/undeafens the bot for this voice state.","params":[{"name":"deaf","description":"Whether or not the bot should be self-deafened","type":[[["boolean"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["boolean",">"]]],"description":"true if the voice state was successfully updated, otherwise false"},"meta":{"line":191,"file":"VoiceState.js","path":"src/structures"}}],"meta":{"line":10,"file":"VoiceState.js","path":"src/structures"}},{"name":"Webhook","description":"Represents a webhook.","props":[{"name":"client","description":"The client that instantiated the webhook","readonly":true,"type":[[["Client"]]],"meta":{"line":14,"file":"Webhook.js","path":"src/structures"}},{"name":"name","description":"The name of the webhook","type":[[["string"]]],"meta":{"line":29,"file":"Webhook.js","path":"src/structures"}},{"name":"token","description":"The token for the webhook","nullable":true,"type":[[["string"]]],"meta":{"line":31,"file":"Webhook.js","path":"src/structures"}},{"name":"avatar","description":"The avatar for the webhook","nullable":true,"type":[[["string"]]],"meta":{"line":42,"file":"Webhook.js","path":"src/structures"}},{"name":"id","description":"The ID of the webhook","type":[[["Snowflake"]]],"meta":{"line":48,"file":"Webhook.js","path":"src/structures"}},{"name":"type","description":"The type of the webhook","type":[[["WebhookTypes"]]],"meta":{"line":54,"file":"Webhook.js","path":"src/structures"}},{"name":"guildID","description":"The guild the webhook belongs to","type":[[["Snowflake"]]],"meta":{"line":60,"file":"Webhook.js","path":"src/structures"}},{"name":"channelID","description":"The channel the webhook belongs to","type":[[["Snowflake"]]],"meta":{"line":66,"file":"Webhook.js","path":"src/structures"}},{"name":"owner","description":"The owner of the webhook","type":[[["User"]],[["Object"]]],"meta":{"line":73,"file":"Webhook.js","path":"src/structures"}},{"name":"createdTimestamp","description":"The timestamp the webhook was created at","readonly":true,"type":[[["number"]]],"meta":{"line":234,"file":"Webhook.js","path":"src/structures"}},{"name":"createdAt","description":"The time the webhook was created at","readonly":true,"type":[[["Date"]]],"meta":{"line":243,"file":"Webhook.js","path":"src/structures"}},{"name":"url","description":"The url of this webhook","readonly":true,"type":[[["string"]]],"meta":{"line":252,"file":"Webhook.js","path":"src/structures"}}],"methods":[{"name":"send","description":"Sends a message with this webhook.","examples":["// Send a basic message\nwebhook.send('hello!')\n .then(message => console.log(`Sent message: ${message.content}`))\n .catch(console.error);","// Send a remote file\nwebhook.send({\n files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n})\n .then(console.log)\n .catch(console.error);","// Send a local file\nwebhook.send({\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);","// Send an embed with a local image inside\nwebhook.send('This is an embed', {\n embeds: [{\n thumbnail: {\n url: 'attachment://file.jpg'\n }\n }],\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"content","description":"The content to send","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["WebhookMessageOptions"]],[["MessageAdditions"]]]}],"async":true,"returns":[[["Promise","<("],["Message","|"],["Object",")>"]]],"meta":{"line":140,"file":"Webhook.js","path":"src/structures"}},{"name":"sendSlackMessage","description":"Sends a raw slack message with this webhook.","examples":["// Send a slack message\nwebhook.sendSlackMessage({\n 'username': 'Wumpus',\n 'attachments': [{\n 'pretext': 'this looks pretty cool',\n 'color': '#F0F',\n 'footer_icon': 'http://snek.s3.amazonaws.com/topSnek.png',\n 'footer': 'Powered by sneks',\n 'ts': Date.now() / 1000\n }]\n}).catch(console.error);"],"params":[{"name":"body","description":"The raw body to send","type":[[["Object"]]]}],"returns":[[["Promise","<"],["boolean",">"]]],"meta":{"line":185,"file":"Webhook.js","path":"src/structures"}},{"name":"edit","description":"Edits the webhook.","params":[{"name":"options","description":"Options","type":[[["Object"]]]},{"name":"options.name","description":"New name for this webhook","optional":true,"default":"this.name","type":[[["string"]]]},{"name":"options.avatar","description":"New avatar for this webhook","optional":true,"type":[[["BufferResolvable"]]]},{"name":"options.channel","description":"New channel for this webhook","optional":true,"type":[[["ChannelResolvable"]]]},{"name":"reason","description":"Reason for editing this webhook","optional":true,"type":[[["string"]]]}],"async":true,"returns":[[["Promise","<"],["Webhook",">"]]],"meta":{"line":205,"file":"Webhook.js","path":"src/structures"}},{"name":"delete","description":"Deletes the webhook.","params":[{"name":"reason","description":"Reason for deleting this webhook","optional":true,"type":[[["string"]]]}],"returns":[[["Promise"]]],"meta":{"line":226,"file":"Webhook.js","path":"src/structures"}},{"name":"avatarURL","description":"A link to the webhook's avatar.","params":[{"name":"options","description":"Options for the Image URL","optional":true,"default":"{}","type":[[["ImageURLOptions"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":261,"file":"Webhook.js","path":"src/structures"}}],"meta":{"line":12,"file":"Webhook.js","path":"src/structures"}},{"name":"ActivityFlags","description":"Data structure that makes it easy to interact with an {@link Activity#flags} bitfield.","extends":[[["BitField"]]],"construct":{"name":"ActivityFlags","params":[{"name":"bits","description":"Bit(s) to read from","optional":true,"default":0,"type":[[["BitFieldResolvable"]]]}]},"props":[{"name":"bitfield","description":"Bitfield of the packed bits","type":[[["number"]]],"meta":{"line":17,"file":"BitField.js","path":"src/util"}},{"name":"FLAGS","description":"Numeric activity flags. All available properties:\n* `INSTANCE`\n* `JOIN`\n* `SPECTATE`\n* `JOIN_REQUEST`\n* `SYNC`\n* `PLAY`","see":["{@link https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags}"],"scope":"static","type":[[["Object"]]],"meta":{"line":29,"file":"ActivityFlags.js","path":"src/util"}}],"methods":[{"name":"any","description":"Checks whether the bitfield has a bit, or any of multiple bits.","inherits":"BitField#any","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":25,"file":"BitField.js","path":"src/util"}},{"name":"equals","description":"Checks if this bitfield equals another","inherits":"BitField#equals","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"BitField.js","path":"src/util"}},{"name":"has","description":"Checks whether the bitfield has a bit, or multiple bits.","inherits":"BitField#has","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":43,"file":"BitField.js","path":"src/util"}},{"name":"missing","description":"Gets all given bits that are missing from the bitfield.","inherits":"BitField#missing","inherited":true,"params":[{"name":"bits","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]},{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":55,"file":"BitField.js","path":"src/util"}},{"name":"freeze","description":"Freezes these bits, making them immutable.","inherits":"BitField#freeze","inherited":true,"returns":{"types":[[["Readonly","<"],["BitField",">"]]],"description":"These bits"},"meta":{"line":64,"file":"BitField.js","path":"src/util"}},{"name":"add","description":"Adds bits to these ones.","inherits":"BitField#add","inherited":true,"params":[{"name":"bits","description":"Bits to add","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":73,"file":"BitField.js","path":"src/util"}},{"name":"remove","description":"Removes bits from these.","inherits":"BitField#remove","inherited":true,"params":[{"name":"bits","description":"Bits to remove","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":88,"file":"BitField.js","path":"src/util"}},{"name":"serialize","description":"Gets an object mapping field names to a {@link boolean} indicating whether the\nbit is available.","inherits":"BitField#serialize","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Object"]]],"meta":{"line":104,"file":"BitField.js","path":"src/util"}},{"name":"toArray","description":"Gets an {@link Array} of bitfield names based on the bits available.","inherits":"BitField#toArray","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":115,"file":"BitField.js","path":"src/util"}}],"meta":{"line":9,"file":"ActivityFlags.js","path":"src/util"}},{"name":"BitField","description":"Data structure that makes it easy to interact with a bitfield.","construct":{"name":"BitField","params":[{"name":"bits","description":"Bit(s) to read from","optional":true,"default":0,"type":[[["BitFieldResolvable"]]]}]},"props":[{"name":"bitfield","description":"Bitfield of the packed bits","type":[[["number"]]],"meta":{"line":17,"file":"BitField.js","path":"src/util"}},{"name":"FLAGS","description":"Numeric bitfield flags.\nDefined in extension classes","scope":"static","abstract":true,"type":[[["Object"]]],"meta":{"line":162,"file":"BitField.js","path":"src/util"}}],"methods":[{"name":"any","description":"Checks whether the bitfield has a bit, or any of multiple bits.","params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":25,"file":"BitField.js","path":"src/util"}},{"name":"equals","description":"Checks if this bitfield equals another","params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"BitField.js","path":"src/util"}},{"name":"has","description":"Checks whether the bitfield has a bit, or multiple bits.","params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":43,"file":"BitField.js","path":"src/util"}},{"name":"missing","description":"Gets all given bits that are missing from the bitfield.","params":[{"name":"bits","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]},{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":55,"file":"BitField.js","path":"src/util"}},{"name":"freeze","description":"Freezes these bits, making them immutable.","returns":{"types":[[["Readonly","<"],["BitField",">"]]],"description":"These bits"},"meta":{"line":64,"file":"BitField.js","path":"src/util"}},{"name":"add","description":"Adds bits to these ones.","params":[{"name":"bits","description":"Bits to add","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":73,"file":"BitField.js","path":"src/util"}},{"name":"remove","description":"Removes bits from these.","params":[{"name":"bits","description":"Bits to remove","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":88,"file":"BitField.js","path":"src/util"}},{"name":"serialize","description":"Gets an object mapping field names to a {@link boolean} indicating whether the\nbit is available.","params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Object"]]],"meta":{"line":104,"file":"BitField.js","path":"src/util"}},{"name":"toArray","description":"Gets an {@link Array} of bitfield names based on the bits available.","params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":115,"file":"BitField.js","path":"src/util"}},{"name":"resolve","description":"Resolves bitfields to their numeric form.","scope":"static","params":[{"name":"bit","description":"bit(s) to resolve","optional":true,"default":0,"type":[[["BitFieldResolvable"]]]}],"returns":[[["number"]]],"meta":{"line":145,"file":"BitField.js","path":"src/util"}}],"meta":{"line":8,"file":"BitField.js","path":"src/util"}},{"name":"DataResolver","description":"The DataResolver identifies different objects and tries to resolve a specific piece of information from them.","access":"private","methods":[{"name":"resolveCode","description":"Resolves the string to a code based on the passed regex.","scope":"static","params":[{"name":"data","description":"The string to resolve","type":[[["string"]]]},{"name":"regex","description":"The RegExp used to extract the code","type":[[["RegExp"]]]}],"returns":[[["string"]]],"meta":{"line":40,"file":"DataResolver.js","path":"src/util"}},{"name":"resolveInviteCode","description":"Resolves InviteResolvable to an invite code.","scope":"static","params":[{"name":"data","description":"The invite resolvable to resolve","type":[[["InviteResolvable"]]]}],"returns":[[["string"]]],"meta":{"line":50,"file":"DataResolver.js","path":"src/util"}},{"name":"resolveGuildTemplateCode","description":"Resolves GuildTemplateResolvable to a template code.","scope":"static","params":[{"name":"data","description":"The template resolvable to resolve","type":[[["GuildTemplateResolvable"]]]}],"returns":[[["string"]]],"meta":{"line":59,"file":"DataResolver.js","path":"src/util"}},{"name":"resolveImage","description":"Resolves a Base64Resolvable, a string, or a BufferResolvable to a Base 64 image.","scope":"static","params":[{"name":"image","description":"The image to be resolved","type":[[["BufferResolvable"]],[["Base64Resolvable"]]]}],"async":true,"returns":[[["Promise",""]]],"meta":{"line":68,"file":"DataResolver.js","path":"src/util"}},{"name":"resolveBase64","description":"Resolves a Base64Resolvable to a Base 64 image.","scope":"static","params":[{"name":"data","description":"The base 64 resolvable you want to resolve","type":[[["Base64Resolvable"]]]}],"returns":{"types":[[["string"]]],"nullable":true},"meta":{"line":89,"file":"DataResolver.js","path":"src/util"}},{"name":"resolveFile","description":"Resolves a BufferResolvable to a Buffer or a Stream.","scope":"static","params":[{"name":"resource","description":"The buffer or stream resolvable to resolve","type":[[["BufferResolvable"]],[["Stream"]]]}],"async":true,"returns":[[["Promise","<("],["Buffer","|"],["Stream",")>"]]],"meta":{"line":112,"file":"DataResolver.js","path":"src/util"}},{"name":"resolveFileAsBuffer","description":"Resolves a BufferResolvable to a Buffer.","scope":"static","params":[{"name":"resource","description":"The buffer or stream resolvable to resolve","type":[[["BufferResolvable"]],[["Stream"]]]}],"async":true,"returns":[[["Promise","<"],["Buffer",">"]]],"meta":{"line":143,"file":"DataResolver.js","path":"src/util"}}],"meta":{"line":15,"file":"DataResolver.js","path":"src/util"}},{"name":"Intents","description":"Data structure that makes it easy to calculate intents.","extends":[[["BitField"]]],"construct":{"name":"Intents","params":[{"name":"bits","description":"Bit(s) to read from","optional":true,"default":0,"type":[[["IntentsResolvable"]]]}]},"props":[{"name":"bitfield","description":"Bitfield of the packed bits","type":[[["number"]]],"meta":{"line":17,"file":"BitField.js","path":"src/util"}},{"name":"FLAGS","description":"Numeric websocket intents. All available properties:\n* `GUILDS`\n* `GUILD_MEMBERS`\n* `GUILD_BANS`\n* `GUILD_EMOJIS`\n* `GUILD_INTEGRATIONS`\n* `GUILD_WEBHOOKS`\n* `GUILD_INVITES`\n* `GUILD_VOICE_STATES`\n* `GUILD_PRESENCES`\n* `GUILD_MESSAGES`\n* `GUILD_MESSAGE_REACTIONS`\n* `GUILD_MESSAGE_TYPING`\n* `DIRECT_MESSAGES`\n* `DIRECT_MESSAGE_REACTIONS`\n* `DIRECT_MESSAGE_TYPING`","see":["{@link https://discord.com/developers/docs/topics/gateway#list-of-intents}"],"scope":"static","type":[[["Object"]]],"meta":{"line":46,"file":"Intents.js","path":"src/util"}},{"name":"PRIVILEGED","description":"Bitfield representing all privileged intents","see":["{@link https://discord.com/developers/docs/topics/gateway#privileged-intents}"],"scope":"static","type":[[["number"]]],"meta":{"line":69,"file":"Intents.js","path":"src/util"}},{"name":"ALL","description":"Bitfield representing all intents combined","scope":"static","type":[[["number"]]],"meta":{"line":75,"file":"Intents.js","path":"src/util"}},{"name":"NON_PRIVILEGED","description":"Bitfield representing all non-privileged intents","scope":"static","type":[[["number"]]],"meta":{"line":81,"file":"Intents.js","path":"src/util"}}],"methods":[{"name":"any","description":"Checks whether the bitfield has a bit, or any of multiple bits.","inherits":"BitField#any","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":25,"file":"BitField.js","path":"src/util"}},{"name":"equals","description":"Checks if this bitfield equals another","inherits":"BitField#equals","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"BitField.js","path":"src/util"}},{"name":"has","description":"Checks whether the bitfield has a bit, or multiple bits.","inherits":"BitField#has","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":43,"file":"BitField.js","path":"src/util"}},{"name":"missing","description":"Gets all given bits that are missing from the bitfield.","inherits":"BitField#missing","inherited":true,"params":[{"name":"bits","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]},{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":55,"file":"BitField.js","path":"src/util"}},{"name":"freeze","description":"Freezes these bits, making them immutable.","inherits":"BitField#freeze","inherited":true,"returns":{"types":[[["Readonly","<"],["BitField",">"]]],"description":"These bits"},"meta":{"line":64,"file":"BitField.js","path":"src/util"}},{"name":"add","description":"Adds bits to these ones.","inherits":"BitField#add","inherited":true,"params":[{"name":"bits","description":"Bits to add","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":73,"file":"BitField.js","path":"src/util"}},{"name":"remove","description":"Removes bits from these.","inherits":"BitField#remove","inherited":true,"params":[{"name":"bits","description":"Bits to remove","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":88,"file":"BitField.js","path":"src/util"}},{"name":"serialize","description":"Gets an object mapping field names to a {@link boolean} indicating whether the\nbit is available.","inherits":"BitField#serialize","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Object"]]],"meta":{"line":104,"file":"BitField.js","path":"src/util"}},{"name":"toArray","description":"Gets an {@link Array} of bitfield names based on the bits available.","inherits":"BitField#toArray","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":115,"file":"BitField.js","path":"src/util"}}],"meta":{"line":8,"file":"Intents.js","path":"src/util"}},{"name":"LimitedCollection","description":"A Collection which holds a max amount of entries. The first key is deleted if the Collection has\nreached max size.","extends":[[["Collection"]]],"access":"private","construct":{"name":"LimitedCollection","params":[{"name":"maxSize","description":"The maximum size of the Collection","optional":true,"default":0,"type":[[["number"]]]},{"name":"iterable","description":"Optional entries passed to the Map constructor.","optional":true,"default":null,"type":[[["Iterable"]]]}]},"props":[{"name":"maxSize","description":"The max size of the Collection.","type":[[["number"]]],"meta":{"line":20,"file":"LimitedCollection.js","path":"src/util"}}],"meta":{"line":13,"file":"LimitedCollection.js","path":"src/util"}},{"name":"MessageFlags","description":"Data structure that makes it easy to interact with an {@link Message#flags} bitfield.","extends":[[["BitField"]]],"construct":{"name":"MessageFlags","params":[{"name":"bits","description":"Bit(s) to read from","optional":true,"default":0,"type":[[["BitFieldResolvable"]]]}]},"props":[{"name":"bitfield","description":"Bitfield of the packed bits","type":[[["number"]]],"meta":{"line":17,"file":"BitField.js","path":"src/util"}},{"name":"FLAGS","description":"Numeric message flags. All available properties:\n* `CROSSPOSTED`\n* `IS_CROSSPOST`\n* `SUPPRESS_EMBEDS`\n* `SOURCE_MESSAGE_DELETED`\n* `URGENT`","see":["{@link https://discord.com/developers/docs/resources/channel#message-object-message-flags}"],"scope":"static","type":[[["Object"]]],"meta":{"line":28,"file":"MessageFlags.js","path":"src/util"}}],"methods":[{"name":"any","description":"Checks whether the bitfield has a bit, or any of multiple bits.","inherits":"BitField#any","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":25,"file":"BitField.js","path":"src/util"}},{"name":"equals","description":"Checks if this bitfield equals another","inherits":"BitField#equals","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"BitField.js","path":"src/util"}},{"name":"has","description":"Checks whether the bitfield has a bit, or multiple bits.","inherits":"BitField#has","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":43,"file":"BitField.js","path":"src/util"}},{"name":"missing","description":"Gets all given bits that are missing from the bitfield.","inherits":"BitField#missing","inherited":true,"params":[{"name":"bits","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]},{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":55,"file":"BitField.js","path":"src/util"}},{"name":"freeze","description":"Freezes these bits, making them immutable.","inherits":"BitField#freeze","inherited":true,"returns":{"types":[[["Readonly","<"],["BitField",">"]]],"description":"These bits"},"meta":{"line":64,"file":"BitField.js","path":"src/util"}},{"name":"add","description":"Adds bits to these ones.","inherits":"BitField#add","inherited":true,"params":[{"name":"bits","description":"Bits to add","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":73,"file":"BitField.js","path":"src/util"}},{"name":"remove","description":"Removes bits from these.","inherits":"BitField#remove","inherited":true,"params":[{"name":"bits","description":"Bits to remove","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":88,"file":"BitField.js","path":"src/util"}},{"name":"serialize","description":"Gets an object mapping field names to a {@link boolean} indicating whether the\nbit is available.","inherits":"BitField#serialize","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Object"]]],"meta":{"line":104,"file":"BitField.js","path":"src/util"}},{"name":"toArray","description":"Gets an {@link Array} of bitfield names based on the bits available.","inherits":"BitField#toArray","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":115,"file":"BitField.js","path":"src/util"}}],"meta":{"line":9,"file":"MessageFlags.js","path":"src/util"}},{"name":"Permissions","description":"Data structure that makes it easy to interact with a permission bitfield. All {@link GuildMember}s have a set of\npermissions in their guild, and each channel in the guild may also have {@link PermissionOverwrites} for the member\nthat override their default permissions.","extends":[[["BitField"]]],"construct":{"name":"Permissions","params":[{"name":"bits","description":"Bit(s) to read from","optional":true,"default":0,"type":[[["PermissionResolvable"]]]}]},"props":[{"name":"bitfield","description":"Bitfield of the packed bits","type":[[["number"]]],"meta":{"line":17,"file":"BitField.js","path":"src/util"}},{"name":"FLAGS","description":"Numeric permission flags. All available properties:\n* `ADMINISTRATOR` (implicitly has *all* permissions, and bypasses all channel overwrites)\n* `CREATE_INSTANT_INVITE` (create invitations to the guild)\n* `KICK_MEMBERS`\n* `BAN_MEMBERS`\n* `MANAGE_CHANNELS` (edit and reorder channels)\n* `MANAGE_GUILD` (edit the guild information, region, etc.)\n* `ADD_REACTIONS` (add new reactions to messages)\n* `VIEW_AUDIT_LOG`\n* `PRIORITY_SPEAKER`\n* `STREAM`\n* `VIEW_CHANNEL`\n* `SEND_MESSAGES`\n* `SEND_TTS_MESSAGES`\n* `MANAGE_MESSAGES` (delete messages and reactions)\n* `EMBED_LINKS` (links posted will have a preview embedded)\n* `ATTACH_FILES`\n* `READ_MESSAGE_HISTORY` (view messages that were posted prior to opening Discord)\n* `MENTION_EVERYONE`\n* `USE_EXTERNAL_EMOJIS` (use emojis from different guilds)\n* `VIEW_GUILD_INSIGHTS`\n* `CONNECT` (connect to a voice channel)\n* `SPEAK` (speak in a voice channel)\n* `MUTE_MEMBERS` (mute members across all voice channels)\n* `DEAFEN_MEMBERS` (deafen members across all voice channels)\n* `MOVE_MEMBERS` (move members between voice channels)\n* `USE_VAD` (use voice activity detection)\n* `CHANGE_NICKNAME`\n* `MANAGE_NICKNAMES` (change other members' nicknames)\n* `MANAGE_ROLES`\n* `MANAGE_WEBHOOKS`\n* `MANAGE_EMOJIS`","see":["{@link https://discord.com/developers/docs/topics/permissions}"],"scope":"static","type":[[["Object"]]],"meta":{"line":85,"file":"Permissions.js","path":"src/util"}},{"name":"ALL","description":"Bitfield representing every permission combined","scope":"static","type":[[["number"]]],"meta":{"line":123,"file":"Permissions.js","path":"src/util"}},{"name":"DEFAULT","description":"Bitfield representing the default permissions for users","scope":"static","type":[[["number"]]],"meta":{"line":129,"file":"Permissions.js","path":"src/util"}}],"methods":[{"name":"any","description":"Checks whether the bitfield has a permission, or any of multiple permissions.","params":[{"name":"permission","description":"Permission(s) to check for","type":[[["PermissionResolvable"]]]},{"name":"checkAdmin","description":"Whether to allow the administrator permission to override","optional":true,"default":true,"type":[[["boolean"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"Permissions.js","path":"src/util"}},{"name":"has","description":"Checks whether the bitfield has a permission, or multiple permissions.","params":[{"name":"permission","description":"Permission(s) to check for","type":[[["PermissionResolvable"]]]},{"name":"checkAdmin","description":"Whether to allow the administrator permission to override","optional":true,"default":true,"type":[[["boolean"]]]}],"returns":[[["boolean"]]],"meta":{"line":44,"file":"Permissions.js","path":"src/util"}},{"name":"equals","description":"Checks if this bitfield equals another","inherits":"BitField#equals","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"BitField.js","path":"src/util"}},{"name":"missing","description":"Gets all given bits that are missing from the bitfield.","inherits":"BitField#missing","inherited":true,"params":[{"name":"bits","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]},{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":55,"file":"BitField.js","path":"src/util"}},{"name":"freeze","description":"Freezes these bits, making them immutable.","inherits":"BitField#freeze","inherited":true,"returns":{"types":[[["Readonly","<"],["BitField",">"]]],"description":"These bits"},"meta":{"line":64,"file":"BitField.js","path":"src/util"}},{"name":"add","description":"Adds bits to these ones.","inherits":"BitField#add","inherited":true,"params":[{"name":"bits","description":"Bits to add","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":73,"file":"BitField.js","path":"src/util"}},{"name":"remove","description":"Removes bits from these.","inherits":"BitField#remove","inherited":true,"params":[{"name":"bits","description":"Bits to remove","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":88,"file":"BitField.js","path":"src/util"}},{"name":"serialize","description":"Gets an object mapping field names to a {@link boolean} indicating whether the\nbit is available.","inherits":"BitField#serialize","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Object"]]],"meta":{"line":104,"file":"BitField.js","path":"src/util"}},{"name":"toArray","description":"Gets an {@link Array} of bitfield names based on the bits available.","inherits":"BitField#toArray","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":115,"file":"BitField.js","path":"src/util"}}],"meta":{"line":11,"file":"Permissions.js","path":"src/util"}},{"name":"SnowflakeUtil","description":"A container for useful snowflake-related methods.","props":[{"name":"EPOCH","description":"Discord's epoch value (2015-01-01T00:00:00.000Z).","scope":"static","readonly":true,"type":[[["number"]]],"meta":{"line":88,"file":"Snowflake.js","path":"src/util"}}],"methods":[{"name":"generate","description":"Generates a Discord snowflake.\nThis hardcodes the worker ID as 1 and the process ID as 0.","scope":"static","params":[{"name":"timestamp","description":"Timestamp or date of the snowflake to generate","optional":true,"default":"Date.now()","type":[[["number"]],[["Date"]]]}],"returns":{"types":[[["Snowflake"]]],"description":"The generated snowflake"},"meta":{"line":35,"file":"Snowflake.js","path":"src/util"}},{"name":"deconstruct","description":"Deconstructs a Discord snowflake.","scope":"static","params":[{"name":"snowflake","description":"Snowflake to deconstruct","type":[[["Snowflake"]]]}],"returns":{"types":[[["DeconstructedSnowflake"]]],"description":"Deconstructed snowflake"},"meta":{"line":65,"file":"Snowflake.js","path":"src/util"}}],"meta":{"line":12,"file":"Snowflake.js","path":"src/util"}},{"name":"Speaking","description":"Data structure that makes it easy to interact with a {@link VoiceConnection#speaking}\nand {@link guildMemberSpeaking} event bitfields.","extends":[[["BitField"]]],"construct":{"name":"Speaking","params":[{"name":"bits","description":"Bit(s) to read from","optional":true,"default":0,"type":[[["BitFieldResolvable"]]]}]},"props":[{"name":"bitfield","description":"Bitfield of the packed bits","type":[[["number"]]],"meta":{"line":17,"file":"BitField.js","path":"src/util"}},{"name":"FLAGS","description":"Numeric speaking flags. All available properties:\n* `SPEAKING`\n* `SOUNDSHARE`\n* `PRIORITY_SPEAKING`","see":["{@link https://discord.com/developers/docs/topics/voice-connections#speaking}"],"scope":"static","type":[[["Object"]]],"meta":{"line":27,"file":"Speaking.js","path":"src/util"}}],"methods":[{"name":"any","description":"Checks whether the bitfield has a bit, or any of multiple bits.","inherits":"BitField#any","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":25,"file":"BitField.js","path":"src/util"}},{"name":"equals","description":"Checks if this bitfield equals another","inherits":"BitField#equals","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"BitField.js","path":"src/util"}},{"name":"has","description":"Checks whether the bitfield has a bit, or multiple bits.","inherits":"BitField#has","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":43,"file":"BitField.js","path":"src/util"}},{"name":"missing","description":"Gets all given bits that are missing from the bitfield.","inherits":"BitField#missing","inherited":true,"params":[{"name":"bits","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]},{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":55,"file":"BitField.js","path":"src/util"}},{"name":"freeze","description":"Freezes these bits, making them immutable.","inherits":"BitField#freeze","inherited":true,"returns":{"types":[[["Readonly","<"],["BitField",">"]]],"description":"These bits"},"meta":{"line":64,"file":"BitField.js","path":"src/util"}},{"name":"add","description":"Adds bits to these ones.","inherits":"BitField#add","inherited":true,"params":[{"name":"bits","description":"Bits to add","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":73,"file":"BitField.js","path":"src/util"}},{"name":"remove","description":"Removes bits from these.","inherits":"BitField#remove","inherited":true,"params":[{"name":"bits","description":"Bits to remove","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":88,"file":"BitField.js","path":"src/util"}},{"name":"serialize","description":"Gets an object mapping field names to a {@link boolean} indicating whether the\nbit is available.","inherits":"BitField#serialize","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Object"]]],"meta":{"line":104,"file":"BitField.js","path":"src/util"}},{"name":"toArray","description":"Gets an {@link Array} of bitfield names based on the bits available.","inherits":"BitField#toArray","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":115,"file":"BitField.js","path":"src/util"}}],"meta":{"line":10,"file":"Speaking.js","path":"src/util"}},{"name":"Structures","description":"Allows for the extension of built-in Discord.js structures that are instantiated by {@link BaseManager Managers}.","methods":[{"name":"get","description":"Retrieves a structure class.","scope":"static","params":[{"name":"structure","description":"Name of the structure to retrieve","type":[[["string"]]]}],"returns":[[["function"]]],"meta":{"line":37,"file":"Structures.js","path":"src/util"}},{"name":"extend","description":"Extends a structure.\n Make sure to extend all structures before instantiating your client.\nExtending after doing so may not work as expected. ","scope":"static","examples":["const { Structures } = require('discord.js');\n\nStructures.extend('Guild', Guild => {\n class CoolGuild extends Guild {\n constructor(client, data) {\n super(client, data);\n this.cool = true;\n }\n }\n\n return CoolGuild;\n});"],"params":[{"name":"structure","description":"Name of the structure class to extend","type":[[["ExtendableStructure"]]]},{"name":"extender","description":"Function that takes the base class to extend as its only parameter and returns the\nextended class/prototype","type":[[["function"]]]}],"returns":{"types":[[["function"]]],"description":"Extended class/prototype returned from the extender"},"meta":{"line":64,"file":"Structures.js","path":"src/util"}}],"meta":{"line":27,"file":"Structures.js","path":"src/util"}},{"name":"SystemChannelFlags","description":"Data structure that makes it easy to interact with a {@link Guild#systemChannelFlags} bitfield.\nNote that all event message types are enabled by default,\nand by setting their corresponding flags you are disabling them","extends":[[["BitField"]]],"construct":{"name":"SystemChannelFlags","params":[{"name":"bits","description":"Bit(s) to read from","optional":true,"default":0,"type":[[["SystemChannelFlagsResolvable"]]]}]},"props":[{"name":"bitfield","description":"Bitfield of the packed bits","type":[[["number"]]],"meta":{"line":17,"file":"BitField.js","path":"src/util"}},{"name":"FLAGS","description":"Numeric system channel flags. All available properties:\n* `WELCOME_MESSAGE_DISABLED`\n* `BOOST_MESSAGE_DISABLED`","scope":"static","type":[[["Object"]]],"meta":{"line":35,"file":"SystemChannelFlags.js","path":"src/util"}}],"methods":[{"name":"any","description":"Checks whether the bitfield has a bit, or any of multiple bits.","inherits":"BitField#any","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":25,"file":"BitField.js","path":"src/util"}},{"name":"equals","description":"Checks if this bitfield equals another","inherits":"BitField#equals","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"BitField.js","path":"src/util"}},{"name":"has","description":"Checks whether the bitfield has a bit, or multiple bits.","inherits":"BitField#has","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":43,"file":"BitField.js","path":"src/util"}},{"name":"missing","description":"Gets all given bits that are missing from the bitfield.","inherits":"BitField#missing","inherited":true,"params":[{"name":"bits","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]},{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":55,"file":"BitField.js","path":"src/util"}},{"name":"freeze","description":"Freezes these bits, making them immutable.","inherits":"BitField#freeze","inherited":true,"returns":{"types":[[["Readonly","<"],["BitField",">"]]],"description":"These bits"},"meta":{"line":64,"file":"BitField.js","path":"src/util"}},{"name":"add","description":"Adds bits to these ones.","inherits":"BitField#add","inherited":true,"params":[{"name":"bits","description":"Bits to add","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":73,"file":"BitField.js","path":"src/util"}},{"name":"remove","description":"Removes bits from these.","inherits":"BitField#remove","inherited":true,"params":[{"name":"bits","description":"Bits to remove","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":88,"file":"BitField.js","path":"src/util"}},{"name":"serialize","description":"Gets an object mapping field names to a {@link boolean} indicating whether the\nbit is available.","inherits":"BitField#serialize","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Object"]]],"meta":{"line":104,"file":"BitField.js","path":"src/util"}},{"name":"toArray","description":"Gets an {@link Array} of bitfield names based on the bits available.","inherits":"BitField#toArray","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":115,"file":"BitField.js","path":"src/util"}}],"meta":{"line":11,"file":"SystemChannelFlags.js","path":"src/util"}},{"name":"UserFlags","description":"Data structure that makes it easy to interact with a {@link User#flags} bitfield.","extends":[[["BitField"]]],"construct":{"name":"UserFlags","params":[{"name":"bits","description":"Bit(s) to read from","optional":true,"default":0,"type":[[["BitFieldResolvable"]]]}]},"props":[{"name":"bitfield","description":"Bitfield of the packed bits","type":[[["number"]]],"meta":{"line":17,"file":"BitField.js","path":"src/util"}},{"name":"FLAGS","description":"Numeric user flags. All available properties:\n* `DISCORD_EMPLOYEE`\n* `PARTNERED_SERVER_OWNER`\n* `DISCORD_PARTNER` **(deprecated)**\n* `HYPESQUAD_EVENTS`\n* `BUGHUNTER_LEVEL_1`\n* `HOUSE_BRAVERY`\n* `HOUSE_BRILLIANCE`\n* `HOUSE_BALANCE`\n* `EARLY_SUPPORTER`\n* `TEAM_USER`\n* `SYSTEM`\n* `BUGHUNTER_LEVEL_2`\n* `VERIFIED_BOT`\n* `EARLY_VERIFIED_BOT_DEVELOPER`\n* `VERIFIED_DEVELOPER` **(deprecated)**","see":["{@link https://discord.com/developers/docs/resources/user#user-object-user-flags}"],"scope":"static","type":[[["Object"]]],"meta":{"line":37,"file":"UserFlags.js","path":"src/util"}}],"methods":[{"name":"any","description":"Checks whether the bitfield has a bit, or any of multiple bits.","inherits":"BitField#any","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":25,"file":"BitField.js","path":"src/util"}},{"name":"equals","description":"Checks if this bitfield equals another","inherits":"BitField#equals","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":34,"file":"BitField.js","path":"src/util"}},{"name":"has","description":"Checks whether the bitfield has a bit, or multiple bits.","inherits":"BitField#has","inherited":true,"params":[{"name":"bit","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]}],"returns":[[["boolean"]]],"meta":{"line":43,"file":"BitField.js","path":"src/util"}},{"name":"missing","description":"Gets all given bits that are missing from the bitfield.","inherits":"BitField#missing","inherited":true,"params":[{"name":"bits","description":"Bit(s) to check for","type":[[["BitFieldResolvable"]]]},{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":55,"file":"BitField.js","path":"src/util"}},{"name":"freeze","description":"Freezes these bits, making them immutable.","inherits":"BitField#freeze","inherited":true,"returns":{"types":[[["Readonly","<"],["BitField",">"]]],"description":"These bits"},"meta":{"line":64,"file":"BitField.js","path":"src/util"}},{"name":"add","description":"Adds bits to these ones.","inherits":"BitField#add","inherited":true,"params":[{"name":"bits","description":"Bits to add","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":73,"file":"BitField.js","path":"src/util"}},{"name":"remove","description":"Removes bits from these.","inherits":"BitField#remove","inherited":true,"params":[{"name":"bits","description":"Bits to remove","optional":true,"variable":true,"type":[[["BitFieldResolvable"]]]}],"returns":{"types":[[["BitField"]]],"description":"These bits or new BitField if the instance is frozen."},"meta":{"line":88,"file":"BitField.js","path":"src/util"}},{"name":"serialize","description":"Gets an object mapping field names to a {@link boolean} indicating whether the\nbit is available.","inherits":"BitField#serialize","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Object"]]],"meta":{"line":104,"file":"BitField.js","path":"src/util"}},{"name":"toArray","description":"Gets an {@link Array} of bitfield names based on the bits available.","inherits":"BitField#toArray","inherited":true,"params":[{"name":"hasParams","description":"Additional parameters for the has method, if any","variable":true,"type":[["*"]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":115,"file":"BitField.js","path":"src/util"}}],"meta":{"line":8,"file":"UserFlags.js","path":"src/util"}},{"name":"Util","description":"Contains various general-purpose utility methods. These functions are also available on the base `Discord` object.","methods":[{"name":"flatten","description":"Flatten an object. Any properties that are collections will get converted to an array of keys.","scope":"static","params":[{"name":"obj","description":"The object to flatten.","type":[[["Object"]]]},{"name":"props","description":"Specific properties to include/exclude.","optional":true,"variable":true,"type":[[["Object","<"],["string",", ("],["boolean","|"],["string",")>"]]]}],"returns":[[["Object"]]],"meta":{"line":24,"file":"Util.js","path":"src/util"}},{"name":"splitMessage","description":"Splits a string into multiple chunks at a designated character that do not exceed a specific length.","scope":"static","params":[{"name":"text","description":"Content to split","type":[[["StringResolvable"]]]},{"name":"options","description":"Options controlling the behavior of the split","optional":true,"type":[[["SplitOptions"]]]}],"returns":[[["Array","<"],["string",">"]]],"meta":{"line":64,"file":"Util.js","path":"src/util"}},{"name":"escapeMarkdown","description":"Escapes any Discord-flavour markdown in a string.","scope":"static","params":[{"name":"text","description":"Content to escape","type":[[["string"]]]},{"name":"options","description":"What types of markdown to escape","optional":true,"default":"{}","type":[[["Object"]]]},{"name":"options.codeBlock","description":"Whether to escape code blocks or not","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.inlineCode","description":"Whether to escape inline code or not","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.bold","description":"Whether to escape bolds or not","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.italic","description":"Whether to escape italics or not","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.underline","description":"Whether to escape underlines or not","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.strikethrough","description":"Whether to escape strikethroughs or not","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.spoiler","description":"Whether to escape spoilers or not","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.codeBlockContent","description":"Whether to escape text inside code blocks or not","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"options.inlineCodeContent","description":"Whether to escape text inside inline code or not","optional":true,"default":true,"type":[[["boolean"]]]}],"returns":[[["string"]]],"meta":{"line":96,"file":"Util.js","path":"src/util"}},{"name":"escapeCodeBlock","description":"Escapes code block markdown in a string.","scope":"static","params":[{"name":"text","description":"Content to escape","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":158,"file":"Util.js","path":"src/util"}},{"name":"escapeInlineCode","description":"Escapes inline code markdown in a string.","scope":"static","params":[{"name":"text","description":"Content to escape","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":167,"file":"Util.js","path":"src/util"}},{"name":"escapeItalic","description":"Escapes italic markdown in a string.","scope":"static","params":[{"name":"text","description":"Content to escape","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":176,"file":"Util.js","path":"src/util"}},{"name":"escapeBold","description":"Escapes bold markdown in a string.","scope":"static","params":[{"name":"text","description":"Content to escape","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":194,"file":"Util.js","path":"src/util"}},{"name":"escapeUnderline","description":"Escapes underline markdown in a string.","scope":"static","params":[{"name":"text","description":"Content to escape","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":207,"file":"Util.js","path":"src/util"}},{"name":"escapeStrikethrough","description":"Escapes strikethrough markdown in a string.","scope":"static","params":[{"name":"text","description":"Content to escape","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":220,"file":"Util.js","path":"src/util"}},{"name":"escapeSpoiler","description":"Escapes spoiler markdown in a string.","scope":"static","params":[{"name":"text","description":"Content to escape","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":229,"file":"Util.js","path":"src/util"}},{"name":"fetchRecommendedShards","description":"Gets the recommended shard count from Discord.","scope":"static","params":[{"name":"token","description":"Discord auth token","type":[[["string"]]]},{"name":"guildsPerShard","description":"Number of guilds per shard","optional":true,"default":1000,"type":[[["number"]]]}],"returns":{"types":[[["Promise","<"],["number",">"]]],"description":"The recommended number of shards"},"meta":{"line":239,"file":"Util.js","path":"src/util"}},{"name":"parseEmoji","description":"Parses emoji info out of a string. The string must be one of:\n* A UTF-8 emoji (no ID)\n* A URL-encoded UTF-8 emoji (no ID)\n* A Discord custom emoji (`<:name:id>` or ``)","scope":"static","access":"private","params":[{"name":"text","description":"Emoji string to parse","type":[[["string"]]]}],"returns":{"types":[[["Object"]]],"description":"Object with `animated`, `name`, and `id` properties"},"meta":{"line":262,"file":"Util.js","path":"src/util"}},{"name":"cloneObject","description":"Shallow-copies an object with its class/prototype intact.","scope":"static","access":"private","params":[{"name":"obj","description":"Object to clone","type":[[["Object"]]]}],"returns":[[["Object"]]],"meta":{"line":276,"file":"Util.js","path":"src/util"}},{"name":"mergeDefault","description":"Sets default properties on an object that aren't already specified.","scope":"static","access":"private","params":[{"name":"def","description":"Default properties","type":[[["Object"]]]},{"name":"given","description":"Object to assign defaults to","type":[[["Object"]]]}],"returns":[[["Object"]]],"meta":{"line":287,"file":"Util.js","path":"src/util"}},{"name":"convertToBuffer","description":"Converts an ArrayBuffer or string to a Buffer.","scope":"static","access":"private","params":[{"name":"ab","description":"ArrayBuffer to convert","type":[[["ArrayBuffer"]],[["string"]]]}],"returns":[[["Buffer"]]],"meta":{"line":306,"file":"Util.js","path":"src/util"}},{"name":"str2ab","description":"Converts a string to an ArrayBuffer.","scope":"static","access":"private","params":[{"name":"str","description":"String to convert","type":[[["string"]]]}],"returns":[[["ArrayBuffer"]]],"meta":{"line":317,"file":"Util.js","path":"src/util"}},{"name":"makeError","description":"Makes an Error from a plain info object.","scope":"static","access":"private","params":[{"name":"obj","description":"Error info","type":[[["Object"]]]},{"name":"obj.name","description":"Error type","type":[[["string"]]]},{"name":"obj.message","description":"Message for the error","type":[[["string"]]]},{"name":"obj.stack","description":"Stack for the error","type":[[["string"]]]}],"returns":[[["Error"]]],"meta":{"line":333,"file":"Util.js","path":"src/util"}},{"name":"makePlainError","description":"Makes a plain error info object from an Error.","scope":"static","access":"private","params":[{"name":"err","description":"Error to get info from","type":[[["Error"]]]}],"returns":[[["Object"]]],"meta":{"line":346,"file":"Util.js","path":"src/util"}},{"name":"moveElementInArray","description":"Moves an element in an array *in place*.","scope":"static","access":"private","params":[{"name":"array","description":"Array to modify","type":[[["Array","<"],["*",">"]]]},{"name":"element","description":"Element to move","type":[["*"]]},{"name":"newIndex","description":"Index or offset to move the element to","type":[[["number"]]]},{"name":"offset","description":"Move the element by an offset amount rather than to a set index","optional":true,"default":false,"type":[[["boolean"]]]}],"returns":[[["number"]]],"meta":{"line":363,"file":"Util.js","path":"src/util"}},{"name":"resolveString","description":"Resolves a StringResolvable to a string.","scope":"static","params":[{"name":"data","description":"The string resolvable to resolve","type":[[["StringResolvable"]]]}],"returns":[[["string"]]],"meta":{"line":386,"file":"Util.js","path":"src/util"}},{"name":"resolveColor","description":"Resolves a ColorResolvable into a color number.","scope":"static","params":[{"name":"color","description":"Color to resolve","type":[[["ColorResolvable"]]]}],"returns":{"types":[[["number"]]],"description":"A color"},"meta":{"line":436,"file":"Util.js","path":"src/util"}},{"name":"discordSort","description":"Sorts by Discord's position and ID.","scope":"static","params":[{"name":"collection","description":"Collection of objects to sort","type":[[["Collection"]]]}],"returns":[[["Collection"]]],"meta":{"line":456,"file":"Util.js","path":"src/util"}},{"name":"setPosition","description":"Sets the position of a Channel or Role.","scope":"static","access":"private","params":[{"name":"item","description":"Object to set the position of","type":[[["Channel"]],[["Role"]]]},{"name":"position","description":"New position for the object","type":[[["number"]]]},{"name":"relative","description":"Whether `position` is relative to its current position","type":[[["boolean"]]]},{"name":"sorted","description":"A collection of the objects sorted properly","type":[[["Collection","<"],["string",", ("],["Channel","|"],["Role",")>"]]]},{"name":"route","description":"Route to call PATCH on","type":[[["APIRouter"]]]},{"name":"reason","description":"Reason for the change","optional":true,"type":[[["string"]]]}],"returns":{"types":[[["Promise","<"],["Array","<"],["Object",">>"]]],"description":"Updated item list, with `id` and `position` properties"},"meta":{"line":476,"file":"Util.js","path":"src/util"}},{"name":"basename","description":"Alternative to Node's `path.basename`, removing query string after the extension if it exists.","scope":"static","access":"private","params":[{"name":"path","description":"Path to get the basename of","type":[[["string"]]]},{"name":"ext","description":"File extension to remove","optional":true,"type":[[["string"]]]}],"returns":{"types":[[["string"]]],"description":"Basename of the path"},"meta":{"line":490,"file":"Util.js","path":"src/util"}},{"name":"idToBinary","description":"Transforms a snowflake from a decimal string to a bit string.","scope":"static","access":"private","params":[{"name":"num","description":"Snowflake to be transformed","type":[[["Snowflake"]]]}],"returns":[[["string"]]],"meta":{"line":501,"file":"Util.js","path":"src/util"}},{"name":"binaryToID","description":"Transforms a snowflake from a bit string to a decimal string.","scope":"static","access":"private","params":[{"name":"num","description":"Bit string to be transformed","type":[[["string"]]]}],"returns":[[["Snowflake"]]],"meta":{"line":522,"file":"Util.js","path":"src/util"}},{"name":"removeMentions","description":"Breaks user, role and everyone/here mentions by adding a zero width space after every @ character","scope":"static","params":[{"name":"str","description":"The string to sanitize","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":551,"file":"Util.js","path":"src/util"}},{"name":"cleanContent","description":"The content to have all mentions replaced by the equivalent text.","scope":"static","params":[{"name":"str","description":"The string to be converted","type":[[["string"]]]},{"name":"message","description":"The message object to reference","type":[[["Message"]]]}],"returns":[[["string"]]],"meta":{"line":561,"file":"Util.js","path":"src/util"}},{"name":"cleanCodeBlockContent","description":"The content to put in a codeblock with all codeblock fences replaced by the equivalent backticks.","scope":"static","params":[{"name":"text","description":"The string to be converted","type":[[["string"]]]}],"returns":[[["string"]]],"meta":{"line":608,"file":"Util.js","path":"src/util"}},{"name":"delayFor","description":"Creates a Promise that resolves after a specified duration.","scope":"static","access":"private","params":[{"name":"ms","description":"How long to wait before resolving (in milliseconds)","type":[[["number"]]]}],"returns":[[["Promise","<"],["void",">"]]],"meta":{"line":618,"file":"Util.js","path":"src/util"}}],"meta":{"line":13,"file":"Util.js","path":"src/util"}}],"interfaces":[{"name":"TextBasedChannel","description":"Interface for classes that have text-channel-like features.","props":[{"name":"messages","description":"A manager of the messages sent to this channel","type":[[["MessageManager"]]],"meta":{"line":20,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"lastMessageID","description":"The ID of the last message in the channel, if one was sent","nullable":true,"type":[[["Snowflake"]]],"meta":{"line":26,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"lastPinTimestamp","description":"The timestamp when the last pinned message was pinned, if there was one","nullable":true,"type":[[["number"]]],"meta":{"line":32,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"lastMessage","description":"The Message object of the last message in the channel, if one was sent","readonly":true,"nullable":true,"type":[[["Message"]]],"meta":{"line":40,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"lastPinAt","description":"The date when the last pinned message was pinned, if there was one","readonly":true,"nullable":true,"type":[[["Date"]]],"meta":{"line":49,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"typing","description":"Whether or not the typing indicator is being shown in the channel","readonly":true,"type":[[["boolean"]]],"meta":{"line":250,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"typingCount","description":"Number of times `startTyping` has been called","readonly":true,"type":[[["number"]]],"meta":{"line":259,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}}],"methods":[{"name":"send","description":"Sends a message to this channel.","examples":["// Send a basic message\nchannel.send('hello!')\n .then(message => console.log(`Sent message: ${message.content}`))\n .catch(console.error);","// Send a remote file\nchannel.send({\n files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']\n})\n .then(console.log)\n .catch(console.error);","// Send a local file\nchannel.send({\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);","// Send an embed with a local image inside\nchannel.send('This is an embed', {\n embed: {\n thumbnail: {\n url: 'attachment://file.jpg'\n }\n },\n files: [{\n attachment: 'entire/path/to/file.jpg',\n name: 'file.jpg'\n }]\n})\n .then(console.log)\n .catch(console.error);"],"params":[{"name":"content","description":"The content to send","optional":true,"default":"''","type":[[["StringResolvable"]],[["APIMessage"]]]},{"name":"options","description":"The options to provide","optional":true,"default":"{}","type":[[["MessageOptions"]],[["MessageAdditions"]]]}],"async":true,"returns":[[["Promise","<("],["Message","|"],["Array","<"],["Message",">)>"]]],"meta":{"line":153,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"startTyping","description":"Starts a typing indicator in the channel.","examples":["// Start typing in a channel, or increase the typing count by one\nchannel.startTyping();","// Start typing in a channel with a typing count of five, or set it to five\nchannel.startTyping(5);"],"params":[{"name":"count","description":"The number of times startTyping should be considered to have been called","optional":true,"default":1,"type":[[["number"]]]}],"returns":{"types":[[["Promise"]]],"description":"Resolves once the bot stops typing gracefully, or rejects when an error occurs"},"meta":{"line":189,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"stopTyping","description":"Stops the typing indicator in the channel.\nThe indicator will only stop if this is called as many times as startTyping().\nIt can take a few seconds for the client user to stop typing.","examples":["// Reduce the typing count by one and stop typing if it reached 0\nchannel.stopTyping();","// Force typing to fully stop regardless of typing count\nchannel.stopTyping(true);"],"params":[{"name":"force","description":"Whether or not to reset the call count and force the indicator to stop","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":233,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"createMessageCollector","description":"Creates a Message Collector.","examples":["// Create a message collector\nconst filter = m => m.content.includes('discord');\nconst collector = channel.createMessageCollector(filter, { time: 15000 });\ncollector.on('collect', m => console.log(`Collected ${m.content}`));\ncollector.on('end', collected => console.log(`Collected ${collected.size} items`));"],"params":[{"name":"filter","description":"The filter to create the collector with","type":[[["CollectorFilter"]]]},{"name":"options","description":"The options to pass to the collector","optional":true,"default":"{}","type":[[["MessageCollectorOptions"]]]}],"returns":[[["MessageCollector"]]],"meta":{"line":276,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"awaitMessages","description":"Similar to createMessageCollector but in promise form.\nResolves with a collection of messages that pass the specified filter.","examples":["// Await !vote messages\nconst filter = m => m.content.startsWith('!vote');\n// Errors: ['time'] treats ending because of the time limit as an error\nchannel.awaitMessages(filter, { max: 4, time: 60000, errors: ['time'] })\n .then(collected => console.log(collected.size))\n .catch(collected => console.log(`After a minute, only ${collected.size} out of 4 voted.`));"],"params":[{"name":"filter","description":"The filter function to use","type":[[["CollectorFilter"]]]},{"name":"options","description":"Optional options to pass to the internal collector","optional":true,"default":"{}","type":[[["AwaitMessagesOptions"]]]}],"returns":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"meta":{"line":300,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"bulkDelete","description":"Bulk deletes given messages that are newer than two weeks.","examples":["// Bulk delete messages\nchannel.bulkDelete(5)\n .then(messages => console.log(`Bulk deleted ${messages.size} messages`))\n .catch(console.error);"],"params":[{"name":"messages","description":"Messages or number of messages to delete","type":[[["Collection","<"],["Snowflake",", "],["Message",">"]],[["Array","<"],["MessageResolvable",">"]],[["number"]]]},{"name":"filterOld","description":"Filter messages to remove those which are older than two weeks automatically","optional":true,"default":false,"type":[[["boolean"]]]}],"async":true,"returns":{"types":[[["Promise","<"],["Collection","<"],["Snowflake",", "],["Message",">>"]]],"description":"Deleted messages"},"meta":{"line":325,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}}],"meta":{"line":14,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}}],"typedefs":[{"name":"InviteGenerationOptions","description":"Options for {@link Client#generateInvite}.","type":[[["Object"]]],"props":[{"name":"permissions","description":"Permissions to request","optional":true,"type":[[["PermissionResolvable"]]]},{"name":"guild","description":"Guild to preselect","optional":true,"type":[[["GuildResolvable"]]]},{"name":"disableGuildSelect","description":"Whether to disable the guild selection","optional":true,"type":[[["boolean"]]]}],"meta":{"line":486,"file":"Client.js","path":"src/client"}},{"name":"ReceiveStreamOptions","description":"Options passed to `VoiceReceiver#createStream`.","type":[[["Object"]]],"props":[{"name":"mode","description":"The mode for audio output. This defaults to opus, meaning discord.js won't decode\nthe packets for you. You can set this to 'pcm' so that the stream's output will be 16-bit little-endian stereo\naudio","optional":true,"default":"'opus'","type":[[["string"]]]},{"name":"end","description":"When the stream should be destroyed. If `silence`, this will be when the user\nstops talking. Otherwise, if `manual`, this should be handled by you.","optional":true,"default":"'silence'","type":[[["string"]]]}],"meta":{"line":28,"file":"Receiver.js","path":"src/client/voice/receiver"}},{"name":"StreamOptions","description":"Options that can be passed to stream-playing methods:","type":[[["Object"]]],"props":[{"name":"type","description":"The type of stream.","optional":true,"default":"'unknown'","type":[[["StreamType"]]]},{"name":"seek","description":"The time to seek to, will be ignored when playing `ogg/opus` or `webm/opus` streams","optional":true,"default":0,"type":[[["number"]]]},{"name":"volume","description":"The volume to play at. Set this to false to disable volume transforms for\nthis stream to improve performance.","optional":true,"default":1,"type":[[["number"]],[["boolean"]]]},{"name":"plp","description":"Expected packet loss percentage","optional":true,"type":[[["number"]]]},{"name":"fec","description":"Enabled forward error correction","optional":true,"type":[[["boolean"]]]},{"name":"bitrate","description":"The bitrate (quality) of the audio in kbps.\nIf set to 'auto', the voice channel's bitrate will be used","optional":true,"default":96,"type":[[["number"]],[["string"]]]},{"name":"highWaterMark","description":"The maximum number of opus packets to make and store before they are\nactually needed. See https://nodejs.org/en/docs/guides/backpressuring-in-streams/. Setting this value to\n1 means that changes in volume will be more instant.","optional":true,"default":12,"type":[[["number"]]]}],"meta":{"line":7,"file":"PlayInterface.js","path":"src/client/voice/util"}},{"name":"StreamType","description":"An option passed as part of `StreamOptions` specifying the type of the stream.\n* `unknown`: The default type, streams/input will be passed through to ffmpeg before encoding.\nWill play most streams.\n* `converted`: Play a stream of 16bit signed stereo PCM data, skipping ffmpeg.\n* `opus`: Play a stream of opus packets, skipping ffmpeg. You lose the ability to alter volume.\n* `ogg/opus`: Play an ogg file with the opus encoding, skipping ffmpeg. You lose the ability to alter volume.\n* `webm/opus`: Play a webm file with opus audio, skipping ffmpeg. You lose the ability to alter volume.","type":[[["string"]]],"meta":{"line":23,"file":"PlayInterface.js","path":"src/client/voice/util"}},{"name":"ChannelResolvable","description":"Data that can be resolved to give a Channel object. This can be:\n* A Channel object\n* A Snowflake","type":[[["Channel"]],[["Snowflake"]]],"meta":{"line":48,"file":"ChannelManager.js","path":"src/managers"}},{"name":"GuildChannelResolvable","description":"Data that can be resolved to give a Guild Channel object. This can be:\n* A GuildChannel object\n* A Snowflake","type":[[["GuildChannel"]],[["Snowflake"]]],"meta":{"line":36,"file":"GuildChannelManager.js","path":"src/managers"}},{"name":"EmojiResolvable","description":"Data that can be resolved into an GuildEmoji object. This can be:\n* A custom emoji ID\n* A GuildEmoji object\n* A ReactionEmoji object","type":[[["Snowflake"]],[["GuildEmoji"]],[["ReactionEmoji"]]],"meta":{"line":78,"file":"GuildEmojiManager.js","path":"src/managers"}},{"name":"EmojiIdentifierResolvable","description":"Data that can be resolved to give an emoji identifier. This can be:\n* The unicode representation of an emoji\n* The ``, `<:name:id>`, `:name:id` or `a:name:id` emoji identifier string of an emoji\n* An EmojiResolvable","type":[[["string"]],[["EmojiResolvable"]]],"meta":{"line":106,"file":"GuildEmojiManager.js","path":"src/managers"}},{"name":"GuildResolvable","description":"Data that resolves to give a Guild object. This can be:\n* A Guild object\n* A GuildChannel object\n* A GuildEmoji object\n* A Role object\n* A Snowflake\n* An Invite object","type":[[["Guild"]],[["GuildChannel"]],[["GuildMember"]],[["GuildEmoji"]],[["Role"]],[["Snowflake"]],[["Invite"]]],"meta":{"line":36,"file":"GuildManager.js","path":"src/managers"}},{"name":"PartialRoleData","description":"Partial data for a Role.","type":[[["Object"]]],"props":[{"name":"id","description":"The ID for this role, used to set channel overrides,\nthis is a placeholder and will be replaced by the API after consumption","optional":true,"type":[[["number"]]]},{"name":"name","description":"The name of the role","optional":true,"type":[[["string"]]]},{"name":"color","description":"The color of the role, either a hex string or a base 10 number","optional":true,"type":[[["ColorResolvable"]]]},{"name":"hoist","description":"Whether or not the role should be hoisted","optional":true,"type":[[["boolean"]]]},{"name":"position","description":"The position of the role","optional":true,"type":[[["number"]]]},{"name":"permissions","description":"The permissions of the role","optional":true,"type":[[["PermissionResolvable"]],[["number"]]]},{"name":"mentionable","description":"Whether or not the role should be mentionable","optional":true,"type":[[["boolean"]]]}],"meta":{"line":47,"file":"GuildManager.js","path":"src/managers"}},{"name":"PartialOverwriteData","description":"Partial overwrite data.","type":[[["Object"]]],"props":[{"name":"id","description":"The Role or User ID for this overwrite","type":[[["number"]],[["Snowflake"]]]},{"name":"type","description":"The type of this overwrite","optional":true,"type":[[["string"]]]},{"name":"allow","description":"The permissions to allow","optional":true,"type":[[["PermissionResolvable"]]]},{"name":"deny","description":"The permissions to deny","optional":true,"type":[[["PermissionResolvable"]]]}],"meta":{"line":60,"file":"GuildManager.js","path":"src/managers"}},{"name":"PartialChannelData","description":"Partial data for a Channel.","type":[[["Object"]]],"props":[{"name":"id","description":"The ID for this channel, used to set its parent,\nthis is a placeholder and will be replaced by the API after consumption","optional":true,"type":[[["number"]]]},{"name":"parentID","description":"The parent ID for this channel","optional":true,"type":[[["number"]]]},{"name":"type","description":"The type of the channel","optional":true,"type":[[["string"]]]},{"name":"name","description":"The name of the channel","type":[[["string"]]]},{"name":"topic","description":"The topic of the text channel","optional":true,"type":[[["string"]]]},{"name":"nsfw","description":"Whether the channel is NSFW","optional":true,"type":[[["boolean"]]]},{"name":"bitrate","description":"The bitrate of the voice channel","optional":true,"type":[[["number"]]]},{"name":"userLimit","description":"The user limit of the channel","optional":true,"type":[[["number"]]]},{"name":"permissionOverwrites","description":"Overwrites of the channel","optional":true,"type":[[["PartialOverwriteData"]]]},{"name":"rateLimitPerUser","description":"The rate limit per user of the channel in seconds","optional":true,"type":[[["number"]]]}],"meta":{"line":69,"file":"GuildManager.js","path":"src/managers"}},{"name":"GuildMemberResolvable","description":"Data that resolves to give a GuildMember object. This can be:\n* A GuildMember object\n* A User resolvable","type":[[["GuildMember"]],[["UserResolvable"]]],"meta":{"line":34,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"FetchMemberOptions","description":"Options used to fetch a single member from a guild.","type":[[["Object"]]],"props":[{"name":"user","description":"The user to fetch","type":[[["UserResolvable"]]]},{"name":"cache","description":"Whether or not to cache the fetched member","optional":true,"default":true,"type":[[["boolean"]]]},{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":66,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"FetchMembersOptions","description":"Options used to fetch multiple members from a guild.","type":[[["Object"]]],"props":[{"name":"user","description":"The user(s) to fetch","type":[[["UserResolvable"]],[["Array","<"],["UserResolvable",">"]]]},{"name":"query","description":"Limit fetch to members with similar usernames","nullable":true,"type":[[["string"]]]},{"name":"limit","description":"Maximum number of members to request","optional":true,"default":0,"type":[[["number"]]]},{"name":"withPresences","description":"Whether or not to include the presences","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"time","description":"Timeout for receipt of members","optional":true,"default":"120e3","type":[[["number"]]]},{"name":"nonce","description":"Nonce for this request (32 characters max - default to base 16 now timestamp)","nullable":true,"type":[[["string"]]]},{"name":"force","description":"Whether to skip the cache check and request the API","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":74,"file":"GuildMemberManager.js","path":"src/managers"}},{"name":"ChannelLogsQueryOptions","description":"The parameters to pass in when requesting previous messages from a channel. `around`, `before` and\n`after` are mutually exclusive. All the parameters are optional.","type":[[["Object"]]],"props":[{"name":"limit","description":"Number of messages to acquire","optional":true,"default":50,"type":[[["number"]]]},{"name":"before","description":"ID of a message to get the messages that were posted before it","optional":true,"type":[[["Snowflake"]]]},{"name":"after","description":"ID of a message to get the messages that were posted after it","optional":true,"type":[[["Snowflake"]]]},{"name":"around","description":"ID of a message to get the messages that were posted around it","optional":true,"type":[[["Snowflake"]]]}],"meta":{"line":33,"file":"MessageManager.js","path":"src/managers"}},{"name":"MessageResolvable","description":"Data that can be resolved to a Message object. This can be:\n* A Message\n* A Snowflake","type":[[["Message"]],[["Snowflake"]]],"meta":{"line":91,"file":"MessageManager.js","path":"src/managers"}},{"name":"PresenceResolvable","description":"Data that can be resolved to a Presence object. This can be:\n* A Presence\n* A UserResolvable\n* A Snowflake","type":[[["Presence"]],[["UserResolvable"]],[["Snowflake"]]],"meta":{"line":26,"file":"PresenceManager.js","path":"src/managers"}},{"name":"MessageReactionResolvable","description":"Data that can be resolved to a MessageReaction object. This can be:\n* A MessageReaction\n* A Snowflake","type":[[["MessageReaction"]],[["Snowflake"]]],"meta":{"line":31,"file":"ReactionManager.js","path":"src/managers"}},{"name":"RoleResolvable","description":"Data that can be resolved to a Role object. This can be:\n* A Role\n* A Snowflake","type":[[["Role"]],[["Snowflake"]]],"meta":{"line":61,"file":"RoleManager.js","path":"src/managers"}},{"name":"UserResolvable","description":"Data that resolves to give a User object. This can be:\n* A User object\n* A Snowflake\n* A Message object (resolves to the message author)\n* A GuildMember object","type":[[["User"]],[["Snowflake"]],[["Message"]],[["GuildMember"]]],"meta":{"line":23,"file":"UserManager.js","path":"src/managers"}},{"name":"ShardingManagerMode","description":"The mode to spawn shards with for a {@link ShardingManager}: either \"process\" to use child processes, or\n\"worker\" to use [Worker threads](https://nodejs.org/api/worker_threads.html).","type":[[["Object"]]],"meta":{"line":21,"file":"ShardingManager.js","path":"src/sharding"}},{"name":"MessageTarget","description":"A target for a message.","type":[[["TextChannel"]],[["DMChannel"]],[["User"]],[["GuildMember"]],[["Webhook"]],[["WebhookClient"]]],"meta":{"line":388,"file":"APIMessage.js","path":"src/structures"}},{"name":"MessageAdditions","description":"Additional items that can be sent with a message.","type":[[["MessageEmbed"]],[["MessageAttachment"]],[["Array","<("],["MessageEmbed","|"],["MessageAttachment",")>"]]],"meta":{"line":393,"file":"APIMessage.js","path":"src/structures"}},{"name":"PresenceData","description":"Data resembling a raw Discord presence.","type":[[["Object"]]],"props":[{"name":"status","description":"Status of the user","optional":true,"type":[[["PresenceStatusData"]]]},{"name":"afk","description":"Whether the user is AFK","optional":true,"type":[[["boolean"]]]},{"name":"activity","description":"Activity the user is playing","optional":true,"type":[[["Object"]]]},{"name":"activity.name","description":"Name of the activity","optional":true,"type":[[["string"]]]},{"name":"activity.type","description":"Type of the activity","optional":true,"type":[[["ActivityType"]],[["number"]]]},{"name":"activity.url","description":"Twitch / YouTube stream URL","optional":true,"type":[[["string"]]]},{"name":"shardID","description":"Shard Id(s) to have the activity set on","optional":true,"type":[[["number"]],[["Array","<"],["number",">"]]]}],"meta":{"line":91,"file":"ClientUser.js","path":"src/structures"}},{"name":"PresenceStatusData","description":"A user's status. Must be one of:\n* `online`\n* `idle`\n* `invisible`\n* `dnd` (do not disturb)","type":[[["string"]]],"meta":{"line":117,"file":"ClientUser.js","path":"src/structures"}},{"name":"ActivityOptions","description":"Options for setting an activity.","type":[[["Object"]]],"props":[{"name":"url","description":"Twitch / YouTube stream URL","optional":true,"type":[[["string"]]]},{"name":"type","description":"Type of the activity","optional":true,"type":[[["ActivityType"]],[["number"]]]},{"name":"shardID","description":"Shard Id(s) to have the activity set on","optional":true,"type":[[["number"]],[["Array","<"],["number",">"]]]}],"meta":{"line":141,"file":"ClientUser.js","path":"src/structures"}},{"name":"Features","description":"An array of enabled guild features, here are the possible values:\n* ANIMATED_ICON\n* BANNER\n* COMMERCE\n* COMMUNITY\n* DISCOVERABLE\n* FEATURABLE\n* INVITE_SPLASH\n* NEWS\n* PARTNERED\n* RELAY_ENABLED\n* VANITY_URL\n* VERIFIED\n* VIP_REGIONS\n* WELCOME_SCREEN_ENABLED","type":[[["string"]]],"meta":{"line":165,"file":"Guild.js","path":"src/structures"}},{"name":"PremiumTier","description":"The type of premium tier:\n* 0: NONE\n* 1: TIER_1\n* 2: TIER_2\n* 3: TIER_3","type":[[["number"]]],"meta":{"line":221,"file":"Guild.js","path":"src/structures"}},{"name":"BanInfo","description":"An object containing information about a guild member's ban.","type":[[["Object"]]],"props":[{"name":"user","description":"User that was banned","type":[[["User"]]]},{"name":"reason","description":"Reason the user was banned","nullable":true,"type":[[["string"]]]}],"meta":{"line":666,"file":"Guild.js","path":"src/structures"}},{"name":"IntegrationData","description":"The data for creating an integration.","type":[[["Object"]]],"props":[{"name":"id","description":"The integration id","type":[[["string"]]]},{"name":"type","description":"The integration type","type":[[["string"]]]}],"meta":{"line":752,"file":"Guild.js","path":"src/structures"}},{"name":"Vanity","description":"An object containing information about a guild's vanity invite.","type":[[["Object"]]],"props":[{"name":"code","description":"Vanity invite code","nullable":true,"type":[[["string"]]]},{"name":"uses","description":"How many times this invite has been used","nullable":true,"type":[[["number"]]]}],"meta":{"line":842,"file":"Guild.js","path":"src/structures"}},{"name":"GuildWidget","description":"Data for the Guild Widget object","type":[[["Object"]]],"props":[{"name":"enabled","description":"Whether the widget is enabled","type":[[["boolean"]]]},{"name":"channel","description":"The widget channel","nullable":true,"type":[[["GuildChannel"]]]}],"meta":{"line":906,"file":"Guild.js","path":"src/structures"}},{"name":"GuildWidgetData","description":"The Guild Widget object","type":[[["Object"]]],"props":[{"name":"enabled","description":"Whether the widget is enabled","type":[[["boolean"]]]},{"name":"channel","description":"The widget channel","nullable":true,"type":[[["GuildChannelResolvable"]]]}],"meta":{"line":913,"file":"Guild.js","path":"src/structures"}},{"name":"GuildEditData","description":"The data for editing a guild.","type":[[["Object"]]],"props":[{"name":"name","description":"The name of the guild","optional":true,"type":[[["string"]]]},{"name":"region","description":"The region of the guild","optional":true,"type":[[["string"]]]},{"name":"verificationLevel","description":"The verification level of the guild","optional":true,"type":[[["VerificationLevel"]],[["number"]]]},{"name":"explicitContentFilter","description":"The level of the explicit content filter","optional":true,"type":[[["ExplicitContentFilterLevel"]],[["number"]]]},{"name":"afkChannel","description":"The AFK channel of the guild","optional":true,"type":[[["ChannelResolvable"]]]},{"name":"systemChannel","description":"The system channel of the guild","optional":true,"type":[[["ChannelResolvable"]]]},{"name":"afkTimeout","description":"The AFK timeout of the guild","optional":true,"type":[[["number"]]]},{"name":"icon","description":"The icon of the guild","optional":true,"type":[[["Base64Resolvable"]]]},{"name":"owner","description":"The owner of the guild","optional":true,"type":[[["GuildMemberResolvable"]]]},{"name":"splash","description":"The invite splash image of the guild","optional":true,"type":[[["Base64Resolvable"]]]},{"name":"discoverySplash","description":"The discovery splash image of the guild","optional":true,"type":[[["Base64Resolvable"]]]},{"name":"banner","description":"The banner of the guild","optional":true,"type":[[["Base64Resolvable"]]]},{"name":"defaultMessageNotifications","description":"The default message notifications","optional":true,"type":[[["DefaultMessageNotifications"]],[["number"]]]},{"name":"systemChannelFlags","description":"The system channel flags of the guild","optional":true,"type":[[["SystemChannelFlagsResolvable"]]]},{"name":"rulesChannel","description":"The rules channel of the guild","optional":true,"type":[[["ChannelResolvable"]]]},{"name":"publicUpdatesChannel","description":"The community updates channel of the guild","optional":true,"type":[[["ChannelResolvable"]]]},{"name":"preferredLocale","description":"The preferred locale of the guild","optional":true,"type":[[["string"]]]}],"meta":{"line":1018,"file":"Guild.js","path":"src/structures"}},{"name":"ChannelPosition","description":"The data needed for updating a channel's position.","type":[[["Object"]]],"props":[{"name":"channel","description":"Channel to update","type":[[["ChannelResolvable"]]]},{"name":"position","description":"New position for the channel","type":[[["number"]]]}],"meta":{"line":1345,"file":"Guild.js","path":"src/structures"}},{"name":"GuildRolePosition","description":"The data needed for updating a guild role's position","type":[[["Object"]]],"props":[{"name":"role","description":"The ID of the role","type":[[["RoleResolveable"]]]},{"name":"position","description":"The position to update","type":[[["number"]]]}],"meta":{"line":1379,"file":"Guild.js","path":"src/structures"}},{"name":"AuditLogTargetType","description":"The target type of an entry, e.g. `GUILD`. Here are the available types:\n* GUILD\n* CHANNEL\n* USER\n* ROLE\n* INVITE\n* WEBHOOK\n* EMOJI\n* MESSAGE\n* INTEGRATION","type":[[["string"]]],"meta":{"line":10,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"AuditLogAction","description":"The action of an entry. Here are the available actions:\n* ALL: null\n* GUILD_UPDATE: 1\n* CHANNEL_CREATE: 10\n* CHANNEL_UPDATE: 11\n* CHANNEL_DELETE: 12\n* CHANNEL_OVERWRITE_CREATE: 13\n* CHANNEL_OVERWRITE_UPDATE: 14\n* CHANNEL_OVERWRITE_DELETE: 15\n* MEMBER_KICK: 20\n* MEMBER_PRUNE: 21\n* MEMBER_BAN_ADD: 22\n* MEMBER_BAN_REMOVE: 23\n* MEMBER_UPDATE: 24\n* MEMBER_ROLE_UPDATE: 25\n* MEMBER_MOVE: 26\n* MEMBER_DISCONNECT: 27\n* BOT_ADD: 28,\n* ROLE_CREATE: 30\n* ROLE_UPDATE: 31\n* ROLE_DELETE: 32\n* INVITE_CREATE: 40\n* INVITE_UPDATE: 41\n* INVITE_DELETE: 42\n* WEBHOOK_CREATE: 50\n* WEBHOOK_UPDATE: 51\n* WEBHOOK_DELETE: 52\n* EMOJI_CREATE: 60\n* EMOJI_UPDATE: 61\n* EMOJI_DELETE: 62\n* MESSAGE_DELETE: 72\n* MESSAGE_BULK_DELETE: 73\n* MESSAGE_PIN: 74\n* MESSAGE_UNPIN: 75\n* INTEGRATION_CREATE: 80\n* INTEGRATION_UPDATE: 81\n* INTEGRATION_DELETE: 82","type":[[["number"]],[["string"]]],"meta":{"line":43,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"AuditLogEntryTarget","description":"The target of an entry. It can be one of:\n* A guild\n* A user\n* A role\n* An emoji\n* An invite\n* A webhook\n* An integration\n* An object with an id key if target was deleted\n* An object where the keys represent either the new value or the old value","type":[[["Object"]],[["Guild"]],[["User"]],[["Role"]],[["GuildEmoji"]],[["Invite"]],[["Webhook"]],[["Integration"]]],"meta":{"line":178,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"AuditLogActionType","description":"The action type of an entry, e.g. `CREATE`. Here are the available types:\n* CREATE\n* DELETE\n* UPDATE\n* ALL","type":[[["string"]]],"meta":{"line":210,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"AuditLogChange","description":"An entry in the audit log representing a specific change.","type":[[["object"]]],"props":[{"name":"key","description":"The property that was changed, e.g. `nick` for nickname changes","type":[[["string"]]]},{"name":"old","description":"The old value of the change, e.g. for nicknames, the old nickname","optional":true,"type":[["*"]]},{"name":"new","description":"The new value of the change, e.g. for nicknames, the new nickname","optional":true,"type":[["*"]]}],"meta":{"line":327,"file":"GuildAuditLogs.js","path":"src/structures"}},{"name":"ChannelData","description":"The data for a guild channel.","type":[[["Object"]]],"props":[{"name":"name","description":"The name of the channel","optional":true,"type":[[["string"]]]},{"name":"position","description":"The position of the channel","optional":true,"type":[[["number"]]]},{"name":"topic","description":"The topic of the text channel","optional":true,"type":[[["string"]]]},{"name":"nsfw","description":"Whether the channel is NSFW","optional":true,"type":[[["boolean"]]]},{"name":"bitrate","description":"The bitrate of the voice channel","optional":true,"type":[[["number"]]]},{"name":"userLimit","description":"The user limit of the voice channel","optional":true,"type":[[["number"]]]},{"name":"parentID","description":"The parent ID of the channel","optional":true,"nullable":true,"type":[[["Snowflake"]]]},{"name":"lockPermissions","description":"Lock the permissions of the channel to what the parent's permissions are","optional":true,"type":[[["boolean"]]]},{"name":"permissionOverwrites","description":"Permission overwrites for the channel","optional":true,"type":[[["Array","<"],["OverwriteResolvable",">"]],[["Collection","<"],["Snowflake",", "],["OverwriteResolvable",">"]]]},{"name":"rateLimitPerUser","description":"The ratelimit per user for the channel in seconds","optional":true,"type":[[["number"]]]}],"meta":{"line":293,"file":"GuildChannel.js","path":"src/structures"}},{"name":"GuildEmojiEditData","description":"Data for editing an emoji.","type":[[["Object"]]],"props":[{"name":"name","description":"The name of the emoji","optional":true,"type":[[["string"]]]},{"name":"roles","description":"Roles to restrict emoji to","optional":true,"type":[[["Collection","<"],["Snowflake",", "],["Role",">"]],[["Array","<"],["RoleResolvable",">"]]]}],"meta":{"line":82,"file":"GuildEmoji.js","path":"src/structures"}},{"name":"GuildMemberEditData","description":"The data for editing a guild member.","type":[[["Object"]]],"props":[{"name":"nick","description":"The nickname to set for the member","optional":true,"type":[[["string"]]]},{"name":"roles","description":"The roles or role IDs to apply","optional":true,"type":[[["Collection","<"],["Snowflake",", "],["Role",">"]],[["Array","<"],["RoleResolvable",">"]]]},{"name":"mute","description":"Whether or not the member should be muted","optional":true,"type":[[["boolean"]]]},{"name":"deaf","description":"Whether or not the member should be deafened","optional":true,"type":[[["boolean"]]]},{"name":"channel","description":"Channel to move member to (if they are connected to voice), or `null`\nif you want to kick them from voice","optional":true,"type":[[["ChannelResolvable"]],[["null"]]]}],"meta":{"line":274,"file":"GuildMember.js","path":"src/structures"}},{"name":"IntegrationAccount","description":"The information account for an integration","type":[[["Object"]]],"props":[{"name":"id","description":"The id of the account","type":[[["string"]]]},{"name":"name","description":"The name of the account","type":[[["string"]]]}],"meta":{"line":6,"file":"Integration.js","path":"src/structures"}},{"name":"IntegrationEditData","description":"The data for editing an integration.","type":[[["Object"]]],"props":[{"name":"expireBehavior","description":"The new behaviour of expiring subscribers","optional":true,"type":[[["number"]]]},{"name":"expireGracePeriod","description":"The new grace period before expiring subscribers","optional":true,"type":[[["number"]]]}],"meta":{"line":131,"file":"Integration.js","path":"src/structures"}},{"name":"ApplicationAsset","description":"Asset data.","type":[[["Object"]]],"props":[{"name":"id","description":"The asset ID","type":[[["Snowflake"]]]},{"name":"name","description":"The asset name","type":[[["string"]]]},{"name":"type","description":"The asset type","type":[[["string"]]]}],"meta":{"line":83,"file":"Application.js","path":"src/structures/interfaces"}},{"name":"CollectorFilter","description":"Filter to be applied to the collector.","type":[[["function"]]],"params":[{"name":"args","description":"Any arguments received by the listener","variable":true,"type":[["*"]]},{"name":"collection","description":"The items collected by this collector","type":[[["Collection"]]]}],"returns":[[["boolean"]],[["Promise","<"],["boolean",">"]]],"meta":{"line":7,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"CollectorOptions","description":"Options to be applied to the collector.","type":[[["Object"]]],"props":[{"name":"time","description":"How long to run the collector for in milliseconds","optional":true,"type":[[["number"]]]},{"name":"idle","description":"How long to stop the collector after inactivity in milliseconds","optional":true,"type":[[["number"]]]},{"name":"dispose","description":"Whether to dispose data when it's deleted","optional":true,"default":false,"type":[[["boolean"]]]}],"meta":{"line":15,"file":"Collector.js","path":"src/structures/interfaces"}},{"name":"MessageOptions","description":"Options provided when sending or editing a message.","type":[[["Object"]]],"props":[{"name":"tts","description":"Whether or not the message should be spoken aloud","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"nonce","description":"The nonce for the message","optional":true,"default":"''","type":[[["string"]]]},{"name":"content","description":"The content for the message","optional":true,"default":"''","type":[[["string"]]]},{"name":"embed","description":"An embed for the message\n(see [here](https://discord.com/developers/docs/resources/channel#embed-object) for more details)","optional":true,"type":[[["MessageEmbed"]],[["Object"]]]},{"name":"allowedMentions","description":"Which mentions should be parsed from the message content","optional":true,"type":[[["MessageMentionOptions"]]]},{"name":"disableMentions","description":"Whether or not all mentions or\neveryone/here mentions should be sanitized to prevent unexpected mentions","optional":true,"default":"this.client.options.disableMentions","type":[[["DisableMentionType"]]]},{"name":"files","description":"Files to send with the message","optional":true,"type":[[["Array","<"],["FileOptions",">"]],[["Array","<"],["BufferResolvable",">"]]]},{"name":"code","description":"Language for optional codeblock formatting to apply","optional":true,"type":[[["string"]],[["boolean"]]]},{"name":"split","description":"Whether or not the message should be split into multiple messages if\nit exceeds the character limit. If an object is provided, these are the options for splitting the message","optional":true,"default":false,"type":[[["boolean"]],[["SplitOptions"]]]},{"name":"reply","description":"User to reply to (prefixes the message with a mention, except in DMs)","optional":true,"type":[[["UserResolvable"]]]}],"meta":{"line":53,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"MessageMentionOptions","description":"Options provided to control parsing of mentions by Discord","type":[[["Object"]]],"props":[{"name":"parse","description":"Types of mentions to be parsed","optional":true,"type":[[["Array","<"],["MessageMentionTypes",">"]]]},{"name":"users","description":"Snowflakes of Users to be parsed as mentions","optional":true,"type":[[["Array","<"],["Snowflake",">"]]]},{"name":"roles","description":"Snowflakes of Roles to be parsed as mentions","optional":true,"type":[[["Array","<"],["Snowflake",">"]]]}],"meta":{"line":71,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"MessageMentionTypes","description":"Types of mentions to enable in MessageMentionOptions.\n- `roles`\n- `users`\n- `everyone`","type":[[["string"]]],"meta":{"line":79,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"DisableMentionType","description":"The type of mentions to disable.\n- `none`\n- `all`\n- `everyone`","type":[[["string"]]],"meta":{"line":87,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"FileOptions","type":[[["Object"]]],"props":[{"name":"attachment","description":"File to attach","type":[[["BufferResolvable"]]]},{"name":"name","description":"Filename of the attachment","optional":true,"default":"'file.jpg'","type":[[["string"]]]}],"meta":{"line":95,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"SplitOptions","description":"Options for splitting a message.","type":[[["Object"]]],"props":[{"name":"maxLength","description":"Maximum character length per message piece","optional":true,"default":2000,"type":[[["number"]]]},{"name":"char","description":"Character to split the message with","optional":true,"default":"'\\n'","type":[[["string"]]]},{"name":"prepend","description":"Text to prepend to every piece except the first","optional":true,"default":"''","type":[[["string"]]]},{"name":"append","description":"Text to append to every piece except the last","optional":true,"default":"''","type":[[["string"]]]}],"meta":{"line":101,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"AwaitMessagesOptions","description":"An object containing the same properties as CollectorOptions, but a few more:","type":[[["MessageCollectorOptions"]]],"props":[{"name":"errors","description":"Stop/end reasons that cause the promise to reject","optional":true,"type":[[["Array","<"],["string",">"]]]}],"meta":{"line":280,"file":"TextBasedChannel.js","path":"src/structures/interfaces"}},{"name":"TargetUser","description":"The type of the target user:\n* 1: STREAM","type":[[["number"]]],"meta":{"line":79,"file":"Invite.js","path":"src/structures"}},{"name":"MessageReference","description":"Reference data sent in a crossposted message.","type":[[["Object"]]],"props":[{"name":"channelID","description":"ID of the channel the message was crossposted from","type":[[["string"]]]},{"name":"guildID","description":"ID of the guild the message was crossposted from","nullable":true,"type":[[["string"]]]},{"name":"messageID","description":"ID of the message that was crossposted","nullable":true,"type":[[["string"]]]}],"meta":{"line":207,"file":"Message.js","path":"src/structures"}},{"name":"AwaitReactionsOptions","description":"An object containing the same properties as CollectorOptions, but a few more:","type":[[["ReactionCollectorOptions"]]],"props":[{"name":"errors","description":"Stop/end reasons that cause the promise to reject","optional":true,"type":[[["Array","<"],["string",">"]]]}],"meta":{"line":353,"file":"Message.js","path":"src/structures"}},{"name":"MessageEditOptions","description":"Options that can be passed into editMessage.","type":[[["Object"]]],"props":[{"name":"content","description":"Content to be edited","optional":true,"type":[[["string"]]]},{"name":"embed","description":"An embed to be added/edited","optional":true,"type":[[["MessageEmbed"]],[["Object"]]]},{"name":"code","description":"Language for optional codeblock formatting to apply","optional":true,"type":[[["string"]],[["boolean"]]]},{"name":"allowedMentions","description":"Which mentions should be parsed from the message content","optional":true,"type":[[["MessageMentionOptions"]]]}],"meta":{"line":445,"file":"Message.js","path":"src/structures"}},{"name":"MessageCollectorOptions","type":[[["CollectorOptions"]]],"props":[{"name":"max","description":"The maximum amount of messages to collect","type":[[["number"]]]},{"name":"maxProcessed","description":"The maximum amount of messages to process","type":[[["number"]]]}],"meta":{"line":6,"file":"MessageCollector.js","path":"src/structures"}},{"name":"EmbedField","description":"Represents a field of a MessageEmbed","type":[[["Object"]]],"props":[{"name":"name","description":"The name of this field","type":[[["string"]]]},{"name":"value","description":"The value of this field","type":[[["string"]]]},{"name":"inline","description":"If this field will be displayed inline","type":[[["boolean"]]]}],"meta":{"line":64,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"MessageEmbedThumbnail","description":"Represents the thumbnail of a MessageEmbed","type":[[["Object"]]],"props":[{"name":"url","description":"URL for this thumbnail","type":[[["string"]]]},{"name":"proxyURL","description":"ProxyURL for this thumbnail","type":[[["string"]]]},{"name":"height","description":"Height of this thumbnail","type":[[["number"]]]},{"name":"width","description":"Width of this thumbnail","type":[[["number"]]]}],"meta":{"line":81,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"MessageEmbedImage","description":"Represents the image of a MessageEmbed","type":[[["Object"]]],"props":[{"name":"url","description":"URL for this image","type":[[["string"]]]},{"name":"proxyURL","description":"ProxyURL for this image","type":[[["string"]]]},{"name":"height","description":"Height of this image","type":[[["number"]]]},{"name":"width","description":"Width of this image","type":[[["number"]]]}],"meta":{"line":103,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"MessageEmbedVideo","description":"Represents the video of a MessageEmbed","type":[[["Object"]]],"props":[{"name":"url","description":"URL of this video","type":[[["string"]]]},{"name":"proxyURL","description":"ProxyURL for this video","type":[[["string"]]]},{"name":"height","description":"Height of this video","type":[[["number"]]]},{"name":"width","description":"Width of this video","type":[[["number"]]]}],"meta":{"line":125,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"MessageEmbedAuthor","description":"Represents the author field of a MessageEmbed","type":[[["Object"]]],"props":[{"name":"name","description":"The name of this author","type":[[["string"]]]},{"name":"url","description":"URL of this author","type":[[["string"]]]},{"name":"iconURL","description":"URL of the icon for this author","type":[[["string"]]]},{"name":"proxyIconURL","description":"Proxied URL of the icon for this author","type":[[["string"]]]}],"meta":{"line":148,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"MessageEmbedProvider","description":"Represents the provider of a MessageEmbed","type":[[["Object"]]],"props":[{"name":"name","description":"The name of this provider","type":[[["string"]]]},{"name":"url","description":"URL of this provider","type":[[["string"]]]}],"meta":{"line":170,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"MessageEmbedFooter","description":"Represents the footer field of a MessageEmbed","type":[[["Object"]]],"props":[{"name":"text","description":"The text of this footer","type":[[["string"]]]},{"name":"iconURL","description":"URL of the icon for this footer","type":[[["string"]]]},{"name":"proxyIconURL","description":"Proxied URL of the icon for this footer","type":[[["string"]]]}],"meta":{"line":188,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"EmbedFieldData","type":[[["Object"]]],"props":[{"name":"name","description":"The name of this field","type":[[["StringResolvable"]]]},{"name":"value","description":"The value of this field","type":[[["StringResolvable"]]]},{"name":"inline","description":"If this field will be displayed inline","optional":true,"type":[[["boolean"]]]}],"meta":{"line":436,"file":"MessageEmbed.js","path":"src/structures"}},{"name":"CrosspostedChannel","description":"Crossposted channel data.","type":[[["Object"]]],"props":[{"name":"channelID","description":"ID of the mentioned channel","type":[[["string"]]]},{"name":"guildID","description":"ID of the guild that has the channel","type":[[["string"]]]},{"name":"type","description":"Type of the channel","type":[[["string"]]]},{"name":"name","description":"The name of the channel","type":[[["string"]]]}],"meta":{"line":95,"file":"MessageMentions.js","path":"src/structures"}},{"name":"OverwriteType","description":"The type of a permission overwrite. It can be one of:\n* member\n* role","type":[[["string"]]],"meta":{"line":31,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"PermissionOverwriteOptions","description":"An object mapping permission flags to `true` (enabled), `null` (unset) or `false` (disabled).\n```js\n{\n 'SEND_MESSAGES': true,\n 'EMBED_LINKS': null,\n 'ATTACH_FILES': false,\n}\n```","type":[[["Object"]]],"meta":{"line":95,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"ResolvedOverwriteOptions","type":[[["object"]]],"props":[{"name":"allow","description":"The allowed permissions","type":[[["Permissions"]]]},{"name":"deny","description":"The denied permissions","type":[[["Permissions"]]]}],"meta":{"line":107,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"RawOverwriteData","description":"The raw data for a permission overwrite","type":[[["Object"]]],"props":[{"name":"id","description":"The id of the overwrite","type":[[["Snowflake"]]]},{"name":"allow","description":"The permissions to allow","type":[[["number"]]]},{"name":"deny","description":"The permissions to deny","type":[[["number"]]]},{"name":"type","description":"The type of this OverwriteData","type":[[["OverwriteType"]]]}],"meta":{"line":141,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"OverwriteResolvable","description":"Data that can be resolved into {@link RawOverwriteData}","type":[[["PermissionOverwrites"]],[["OverwriteData"]]],"meta":{"line":150,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"OverwriteData","description":"Data that can be used for a permission overwrite","type":[[["Object"]]],"props":[{"name":"id","description":"Member or role this overwrite is for","type":[[["GuildMemberResolvable"]],[["RoleResolvable"]]]},{"name":"allow","description":"The permissions to allow","optional":true,"type":[[["PermissionResolvable"]]]},{"name":"deny","description":"The permissions to deny","optional":true,"type":[[["PermissionResolvable"]]]},{"name":"type","description":"The type of this OverwriteData","optional":true,"type":[[["OverwriteType"]]]}],"meta":{"line":155,"file":"PermissionOverwrites.js","path":"src/structures"}},{"name":"MessageActivity","description":"Activity sent in a message.","type":[[["Object"]]],"props":[{"name":"partyID","description":"Id of the party represented in activity","optional":true,"type":[[["string"]]]},{"name":"type","description":"Type of activity sent","optional":true,"type":[[["number"]]]}],"meta":{"line":8,"file":"Presence.js","path":"src/structures"}},{"name":"PresenceStatus","description":"The status of this presence:\n* **`online`** - user is online\n* **`idle`** - user is AFK\n* **`offline`** - user is offline or invisible\n* **`dnd`** - user is in Do Not Disturb","type":[[["string"]]],"meta":{"line":15,"file":"Presence.js","path":"src/structures"}},{"name":"ClientPresenceStatus","description":"The status of this presence:\n* **`online`** - user is online\n* **`idle`** - user is AFK\n* **`dnd`** - user is in Do Not Disturb","type":[[["string"]]],"meta":{"line":24,"file":"Presence.js","path":"src/structures"}},{"name":"ReactionCollectorOptions","type":[[["CollectorOptions"]]],"props":[{"name":"max","description":"The maximum total amount of reactions to collect","type":[[["number"]]]},{"name":"maxEmojis","description":"The maximum number of emojis to collect","type":[[["number"]]]},{"name":"maxUsers","description":"The maximum number of users to react","type":[[["number"]]]}],"meta":{"line":7,"file":"ReactionCollector.js","path":"src/structures"}},{"name":"RoleData","description":"The data for a role.","type":[[["Object"]]],"props":[{"name":"name","description":"The name of the role","optional":true,"type":[[["string"]]]},{"name":"color","description":"The color of the role, either a hex string or a base 10 number","optional":true,"type":[[["ColorResolvable"]]]},{"name":"hoist","description":"Whether or not the role should be hoisted","optional":true,"type":[[["boolean"]]]},{"name":"position","description":"The position of the role","optional":true,"type":[[["number"]]]},{"name":"permissions","description":"The permissions of the role","optional":true,"type":[[["PermissionResolvable"]]]},{"name":"mentionable","description":"Whether or not the role should be mentionable","optional":true,"type":[[["boolean"]]]}],"meta":{"line":157,"file":"Role.js","path":"src/structures"}},{"name":"WebhookMessageOptions","description":"Options that can be passed into send.","type":[[["Object"]]],"props":[{"name":"username","description":"Username override for the message","optional":true,"default":"this.name","type":[[["string"]]]},{"name":"avatarURL","description":"Avatar URL override for the message","optional":true,"type":[[["string"]]]},{"name":"tts","description":"Whether or not the message should be spoken aloud","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"nonce","description":"The nonce for the message","optional":true,"default":"''","type":[[["string"]]]},{"name":"embeds","description":"An array of embeds for the message","optional":true,"type":[[["Array","<"],["Object",">"]]]},{"name":"allowedMentions","description":"Which mentions should be parsed from the message content\n(see [here](https://discord.com/developers/docs/resources/channel#embed-object) for more details)","optional":true,"type":[[["MessageMentionOptions"]]]},{"name":"disableMentions","description":"Whether or not all mentions or\neveryone/here mentions should be sanitized to prevent unexpected mentions","optional":true,"default":"this.client.options.disableMentions","type":[[["DisableMentionType"]]]},{"name":"files","description":"Files to send with the message","optional":true,"type":[[["Array","<"],["FileOptions",">"]],[["Array","<"],["string",">"]]]},{"name":"code","description":"Language for optional codeblock formatting to apply","optional":true,"type":[[["string"]],[["boolean"]]]},{"name":"split","description":"Whether or not the message should be split into multiple messages if\nit exceeds the character limit. If an object is provided, these are the options for splitting the message.","optional":true,"default":false,"type":[[["boolean"]],[["SplitOptions"]]]}],"meta":{"line":79,"file":"Webhook.js","path":"src/structures"}},{"name":"BitFieldResolvable","description":"Data that can be resolved to give a bitfield. This can be:\n* A string (see {@link BitField.FLAGS})\n* A bit number\n* An instance of BitField\n* An Array of BitFieldResolvable","type":[[["string"]],[["number"]],[["BitField"]],[["Array","<"],["BitFieldResolvable",">"]]],"meta":{"line":131,"file":"BitField.js","path":"src/util"}},{"name":"ClientOptions","description":"Options for a client.","type":[[["Object"]]],"props":[{"name":"shards","description":"ID of the shard to run, or an array of shard IDs. If not specified,\nthe client will spawn {@link ClientOptions#shardCount} shards. If set to `auto`, it will fetch the\nrecommended amount of shards from Discord and spawn that amount","optional":true,"type":[[["number"]],[["Array","<"],["number",">"]],[["string"]]]},{"name":"shardCount","description":"The total amount of shards used by all processes of this bot\n(e.g. recommended shard count, shard count of the ShardingManager)","optional":true,"default":1,"type":[[["number"]]]},{"name":"messageCacheMaxSize","description":"Maximum number of messages to cache per channel\n(-1 or Infinity for unlimited - don't do this without message sweeping, otherwise memory usage will climb\nindefinitely)","optional":true,"default":200,"type":[[["number"]]]},{"name":"messageCacheLifetime","description":"How long a message should stay in the cache until it is considered\nsweepable (in seconds, 0 for forever)","optional":true,"default":0,"type":[[["number"]]]},{"name":"messageSweepInterval","description":"How frequently to remove messages from the cache that are older than\nthe message cache lifetime (in seconds, 0 for never)","optional":true,"default":0,"type":[[["number"]]]},{"name":"messageEditHistoryMaxSize","description":"Maximum number of previous versions to hold for an edited message\n(-1 or Infinity for unlimited - don't do this without sweeping, otherwise memory usage may climb indefinitely.)","optional":true,"default":-1,"type":[[["number"]]]},{"name":"fetchAllMembers","description":"Whether to cache all guild members and users upon startup, as well as\nupon joining a guild (should be avoided whenever possible)","optional":true,"default":false,"type":[[["boolean"]]]},{"name":"disableMentions","description":"Default value for {@link MessageOptions#disableMentions}","optional":true,"default":"'none'","type":[[["DisableMentionType"]]]},{"name":"allowedMentions","description":"Default value for {@link MessageOptions#allowedMentions}","optional":true,"type":[[["MessageMentionOptions"]]]},{"name":"partials","description":"Structures allowed to be partial. This means events can be emitted even when\nthey're missing all the data for a particular structure. See the \"Partials\" topic listed in the sidebar for some\nimportant usage information, as partials require you to put checks in place when handling data.","optional":true,"type":[[["Array","<"],["PartialType",">"]]]},{"name":"restWsBridgeTimeout","description":"Maximum time permitted between REST responses and their\ncorresponding websocket events","optional":true,"default":5000,"type":[[["number"]]]},{"name":"restTimeOffset","description":"Extra time in milliseconds to wait before continuing to make REST\nrequests (higher values will reduce rate-limiting errors on bad connections)","optional":true,"default":500,"type":[[["number"]]]},{"name":"restRequestTimeout","description":"Time to wait before cancelling a REST request, in milliseconds","optional":true,"default":15000,"type":[[["number"]]]},{"name":"restSweepInterval","description":"How frequently to delete inactive request buckets, in seconds\n(or 0 for never)","optional":true,"default":60,"type":[[["number"]]]},{"name":"retryLimit","description":"How many times to retry on 5XX errors (Infinity for indefinite amount of retries)","optional":true,"default":1,"type":[[["number"]]]},{"name":"presence","description":"Presence data to use upon login","optional":true,"type":[[["PresenceData"]]]},{"name":"ws","description":"Options for the WebSocket","optional":true,"type":[[["WebsocketOptions"]]]},{"name":"http","description":"HTTP options","optional":true,"type":[[["HTTPOptions"]]]}],"meta":{"line":7,"file":"Constants.js","path":"src/util"}},{"name":"WebsocketOptions","description":"WebSocket options (these are left as snake_case to match the API)","type":[[["Object"]]],"props":[{"name":"large_threshold","description":"Number of members in a guild after which offline users will no longer be\nsent in the initial guild member list, must be between 50 and 250","optional":true,"default":50,"type":[[["number"]]]},{"name":"intents","description":"Intents to enable for this connection","optional":true,"type":[[["IntentsResolvable"]]]}],"meta":{"line":59,"file":"Constants.js","path":"src/util"}},{"name":"HTTPOptions","description":"HTTP options","type":[[["Object"]]],"props":[{"name":"version","description":"API version to use","optional":true,"default":7,"type":[[["number"]]]},{"name":"api","description":"Base url of the API","optional":true,"default":"'https://discord.com/api'","type":[[["string"]]]},{"name":"cdn","description":"Base url of the CDN","optional":true,"default":"'https://cdn.discordapp.com'","type":[[["string"]]]},{"name":"invite","description":"Base url of invites","optional":true,"default":"'https://discord.gg'","type":[[["string"]]]},{"name":"template","description":"Base url of templates","optional":true,"default":"'https://discord.new'","type":[[["string"]]]}],"meta":{"line":77,"file":"Constants.js","path":"src/util"}},{"name":"ImageURLOptions","description":"Options for Image URLs.","type":[[["Object"]]],"props":[{"name":"format","description":"One of `webp`, `png`, `jpg`, `jpeg`, `gif`. If no format is provided,\ndefaults to `webp`.","optional":true,"type":[[["string"]]]},{"name":"dynamic","description":"If true, the format will dynamically change to `gif` for\nanimated avatars; the default is false.","optional":true,"type":[[["boolean"]]]},{"name":"size","description":"One of `16`, `32`, `64`, `128`, `256`, `512`, `1024`, `2048`, `4096`","optional":true,"type":[[["number"]]]}],"meta":{"line":117,"file":"Constants.js","path":"src/util"}},{"name":"Status","description":"The current status of the client. Here are the available statuses:\n* READY: 0\n* CONNECTING: 1\n* RECONNECTING: 2\n* IDLE: 3\n* NEARLY: 4\n* DISCONNECTED: 5\n* WAITING_FOR_GUILDS: 6\n* IDENTIFYING: 7\n* RESUMING: 8","type":[[["number"]]],"meta":{"line":161,"file":"Constants.js","path":"src/util"}},{"name":"VoiceStatus","description":"The current status of a voice connection. Here are the available statuses:\n* CONNECTED: 0\n* CONNECTING: 1\n* AUTHENTICATING: 2\n* RECONNECTING: 3\n* DISCONNECTED: 4","type":[[["number"]]],"meta":{"line":186,"file":"Constants.js","path":"src/util"}},{"name":"PartialType","description":"The type of Structure allowed to be a partial:\n* USER\n* CHANNEL (only affects DMChannels)\n* GUILD_MEMBER\n* MESSAGE\n* REACTION\nPartials require you to put checks in place when handling data, read the Partials topic listed in the\nsidebar for more information.","type":[[["string"]]],"meta":{"line":297,"file":"Constants.js","path":"src/util"}},{"name":"WSEventType","description":"The type of a websocket message event, e.g. `MESSAGE_CREATE`. Here are the available events:\n* READY\n* RESUMED\n* GUILD_CREATE\n* GUILD_DELETE\n* GUILD_UPDATE\n* INVITE_CREATE\n* INVITE_DELETE\n* GUILD_MEMBER_ADD\n* GUILD_MEMBER_REMOVE\n* GUILD_MEMBER_UPDATE\n* GUILD_MEMBERS_CHUNK\n* GUILD_INTEGRATIONS_UPDATE\n* GUILD_ROLE_CREATE\n* GUILD_ROLE_DELETE\n* GUILD_ROLE_UPDATE\n* GUILD_BAN_ADD\n* GUILD_BAN_REMOVE\n* GUILD_EMOJIS_UPDATE\n* CHANNEL_CREATE\n* CHANNEL_DELETE\n* CHANNEL_UPDATE\n* CHANNEL_PINS_UPDATE\n* MESSAGE_CREATE\n* MESSAGE_DELETE\n* MESSAGE_UPDATE\n* MESSAGE_DELETE_BULK\n* MESSAGE_REACTION_ADD\n* MESSAGE_REACTION_REMOVE\n* MESSAGE_REACTION_REMOVE_ALL\n* MESSAGE_REACTION_REMOVE_EMOJI\n* USER_UPDATE\n* PRESENCE_UPDATE\n* TYPING_START\n* VOICE_STATE_UPDATE\n* VOICE_SERVER_UPDATE\n* WEBHOOKS_UPDATE","type":[[["string"]]],"meta":{"line":310,"file":"Constants.js","path":"src/util"}},{"name":"MessageType","description":"The type of a message, e.g. `DEFAULT`. Here are the available types:\n* DEFAULT\n* RECIPIENT_ADD\n* RECIPIENT_REMOVE\n* CALL\n* CHANNEL_NAME_CHANGE\n* CHANNEL_ICON_CHANGE\n* PINS_ADD\n* GUILD_MEMBER_JOIN\n* USER_PREMIUM_GUILD_SUBSCRIPTION\n* USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1\n* USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2\n* USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3\n* CHANNEL_FOLLOW_ADD\n* GUILD_DISCOVERY_DISQUALIFIED\n* GUILD_DISCOVERY_REQUALIFIED","type":[[["string"]]],"meta":{"line":389,"file":"Constants.js","path":"src/util"}},{"name":"ActivityType","description":"Bots cannot set a `CUSTOM_STATUS`, it is only for custom statuses received from users\nThe type of an activity of a users presence, e.g. `PLAYING`. Here are the available types:\n* PLAYING\n* STREAMING\n* LISTENING\n* WATCHING\n* CUSTOM_STATUS\n* COMPETING","type":[[["string"]]],"meta":{"line":427,"file":"Constants.js","path":"src/util"}},{"name":"ExplicitContentFilterLevel","description":"The value set for the explicit content filter levels for a guild:\n* DISABLED\n* MEMBERS_WITHOUT_ROLES\n* ALL_MEMBERS","type":[[["string"]]],"meta":{"line":487,"file":"Constants.js","path":"src/util"}},{"name":"VerificationLevel","description":"The value set for the verification levels for a guild:\n* NONE\n* LOW\n* MEDIUM\n* HIGH\n* VERY_HIGH","type":[[["string"]]],"meta":{"line":496,"file":"Constants.js","path":"src/util"}},{"name":"APIError","description":"An error encountered while performing an API request. Here are the potential errors:\n* UNKNOWN_ACCOUNT\n* UNKNOWN_APPLICATION\n* UNKNOWN_CHANNEL\n* UNKNOWN_GUILD\n* UNKNOWN_INTEGRATION\n* UNKNOWN_INVITE\n* UNKNOWN_MEMBER\n* UNKNOWN_MESSAGE\n* UNKNOWN_OVERWRITE\n* UNKNOWN_PROVIDER\n* UNKNOWN_ROLE\n* UNKNOWN_TOKEN\n* UNKNOWN_USER\n* UNKNOWN_EMOJI\n* UNKNOWN_WEBHOOK\n* UNKNOWN_BAN\n* UNKNOWN_GUILD_TEMPLATE\n* BOT_PROHIBITED_ENDPOINT\n* BOT_ONLY_ENDPOINT\n* CHANNEL_HIT_WRITE_RATELIMIT\n* MAXIMUM_GUILDS\n* MAXIMUM_FRIENDS\n* MAXIMUM_PINS\n* MAXIMUM_ROLES\n* MAXIMUM_WEBHOOKS\n* MAXIMUM_REACTIONS\n* MAXIMUM_CHANNELS\n* MAXIMUM_ATTACHMENTS\n* MAXIMUM_INVITES\n* GUILD_ALREADY_HAS_TEMPLATE\n* UNAUTHORIZED\n* ACCOUNT_VERIFICATION_REQUIRED\n* REQUEST_ENTITY_TOO_LARGE\n* FEATURE_TEMPORARILY_DISABLED\n* USER_BANNED\n* ALREADY_CROSSPOSTED\n* MISSING_ACCESS\n* INVALID_ACCOUNT_TYPE\n* CANNOT_EXECUTE_ON_DM\n* EMBED_DISABLED\n* CANNOT_EDIT_MESSAGE_BY_OTHER\n* CANNOT_SEND_EMPTY_MESSAGE\n* CANNOT_MESSAGE_USER\n* CANNOT_SEND_MESSAGES_IN_VOICE_CHANNEL\n* CHANNEL_VERIFICATION_LEVEL_TOO_HIGH\n* OAUTH2_APPLICATION_BOT_ABSENT\n* MAXIMUM_OAUTH2_APPLICATIONS\n* INVALID_OAUTH_STATE\n* MISSING_PERMISSIONS\n* INVALID_AUTHENTICATION_TOKEN\n* NOTE_TOO_LONG\n* INVALID_BULK_DELETE_QUANTITY\n* CANNOT_PIN_MESSAGE_IN_OTHER_CHANNEL\n* INVALID_OR_TAKEN_INVITE_CODE\n* CANNOT_EXECUTE_ON_SYSTEM_MESSAGE\n* INVALID_OAUTH_TOKEN\n* BULK_DELETE_MESSAGE_TOO_OLD\n* INVALID_FORM_BODY\n* INVITE_ACCEPTED_TO_GUILD_NOT_CONTAINING_BOT\n* INVALID_API_VERSION\n* CANNOT_DELETE_COMMUNITY_REQUIRED_CHANNEL\n* REACTION_BLOCKED\n* RESOURCE_OVERLOADED","type":[[["string"]]],"meta":{"line":507,"file":"Constants.js","path":"src/util"}},{"name":"DefaultMessageNotifications","description":"The value set for a guild's default message notifications, e.g. `ALL`. Here are the available types:\n* ALL\n* MENTIONS","type":[[["string"]]],"meta":{"line":640,"file":"Constants.js","path":"src/util"}},{"name":"MembershipStates","description":"The value set for a team members's membership state:\n* INVITED\n* ACCEPTED","type":[[["string"]]],"meta":{"line":648,"file":"Constants.js","path":"src/util"}},{"name":"WebhookTypes","description":"The value set for a webhook's type:\n* Incoming\n* Channel Follower","type":[[["string"]]],"meta":{"line":661,"file":"Constants.js","path":"src/util"}},{"name":"InviteResolvable","description":"Data that can be resolved to give an invite code. This can be:\n* An invite code\n* An invite URL","type":[[["string"]]],"meta":{"line":20,"file":"DataResolver.js","path":"src/util"}},{"name":"GuildTemplateResolvable","description":"Data that can be resolved to give an template code. This can be:\n* A template code\n* A template URL","type":[[["string"]]],"meta":{"line":27,"file":"DataResolver.js","path":"src/util"}},{"name":"Base64Resolvable","description":"Data that resolves to give a Base64 string, typically for image uploading. This can be:\n* A Buffer\n* A base64 string","type":[[["Buffer"]],[["string"]]],"meta":{"line":77,"file":"DataResolver.js","path":"src/util"}},{"name":"BufferResolvable","description":"Data that can be resolved to give a Buffer. This can be:\n* A Buffer\n* The path to a local file\n* A URL","type":[[["string"]],[["Buffer"]]],"meta":{"line":94,"file":"DataResolver.js","path":"src/util"}},{"name":"IntentsResolvable","description":"Data that can be resolved to give a permission number. This can be:\n* A string (see {@link Intents.FLAGS})\n* An intents flag\n* An instance of Intents\n* An array of IntentsResolvable","type":[[["string"]],[["number"]],[["Intents"]],[["Array","<"],["IntentsResolvable",">"]]],"meta":{"line":17,"file":"Intents.js","path":"src/util"}},{"name":"PermissionResolvable","description":"Data that can be resolved to give a permission number. This can be:\n* A string (see {@link Permissions.FLAGS})\n* A permission number\n* An instance of Permissions\n* An Array of PermissionResolvable","type":[[["string"]],[["number"]],[["Permissions"]],[["Array","<"],["PermissionResolvable",">"]]],"meta":{"line":19,"file":"Permissions.js","path":"src/util"}},{"name":"Snowflake","description":"A Twitter snowflake, except the epoch is 2015-01-01T00:00:00.000Z\n```\nIf we have a snowflake '266241948824764416' we can represent it as binary:\n\n64 22 17 12 0\n 000000111011000111100001101001000101000000 00001 00000 000000000000\n number of ms since Discord epoch worker pid increment\n```","type":[[["string"]]],"meta":{"line":17,"file":"Snowflake.js","path":"src/util"}},{"name":"DeconstructedSnowflake","description":"A deconstructed snowflake.","type":[[["Object"]]],"props":[{"name":"timestamp","description":"Timestamp the snowflake was created","type":[[["number"]]]},{"name":"date","description":"Date the snowflake was created","type":[[["Date"]]]},{"name":"workerID","description":"Worker ID in the snowflake","type":[[["number"]]]},{"name":"processID","description":"Process ID in the snowflake","type":[[["number"]]]},{"name":"increment","description":"Increment in the snowflake","type":[[["number"]]]},{"name":"binary","description":"Binary representation of the snowflake","type":[[["string"]]]}],"meta":{"line":49,"file":"Snowflake.js","path":"src/util"}},{"name":"ExtendableStructure","description":"An extendable structure:\n* **`GuildEmoji`**\n* **`DMChannel`**\n* **`TextChannel`**\n* **`VoiceChannel`**\n* **`CategoryChannel`**\n* **`NewsChannel`**\n* **`StoreChannel`**\n* **`GuildMember`**\n* **`Guild`**\n* **`Message`**\n* **`MessageReaction`**\n* **`Presence`**\n* **`ClientPresence`**\n* **`VoiceState`**\n* **`Role`**\n* **`User`**","type":[[["string"]]],"meta":{"line":3,"file":"Structures.js","path":"src/util"}},{"name":"SystemChannelFlagsResolvable","description":"Data that can be resolved to give a sytem channel flag bitfield. This can be:\n* A string (see {@link SystemChannelFlags.FLAGS})\n* A sytem channel flag\n* An instance of SystemChannelFlags\n* An Array of SystemChannelFlagsResolvable","type":[[["string"]],[["number"]],[["SystemChannelFlags"]],[["Array","<"],["SystemChannelFlagsResolvable",">"]]],"meta":{"line":20,"file":"SystemChannelFlags.js","path":"src/util"}},{"name":"StringResolvable","description":"Data that can be resolved to give a string. This can be:\n* A string\n* An array (joined with a new line delimiter to give a string)\n* Any value","type":[[["string"]],[["Array"]],["*"]],"meta":{"line":373,"file":"Util.js","path":"src/util"}},{"name":"ColorResolvable","description":"Can be a number, hex string, an RGB array like:\n```js\n[255, 0, 255] // purple\n```\nor one of the following strings:\n- `DEFAULT`\n- `WHITE`\n- `AQUA`\n- `GREEN`\n- `BLUE`\n- `YELLOW`\n- `PURPLE`\n- `LUMINOUS_VIVID_PINK`\n- `GOLD`\n- `ORANGE`\n- `RED`\n- `GREY`\n- `DARKER_GREY`\n- `NAVY`\n- `DARK_AQUA`\n- `DARK_GREEN`\n- `DARK_BLUE`\n- `DARK_PURPLE`\n- `DARK_VIVID_PINK`\n- `DARK_GOLD`\n- `DARK_ORANGE`\n- `DARK_RED`\n- `DARK_GREY`\n- `LIGHT_GREY`\n- `DARK_NAVY`\n- `BLURPLE`\n- `GREYPLE`\n- `DARK_BUT_NOT_BLACK`\n- `NOT_QUITE_BLACK`\n- `RANDOM`","type":[[["string"]],[["number"]],[["Array","<"],["number",">"]]],"meta":{"line":392,"file":"Util.js","path":"src/util"}}],"externals":[{"name":"WritableStream","see":["{@link https://nodejs.org/api/stream.html#stream_class_stream_writable}"],"meta":{"line":15,"file":"StreamDispatcher.js","path":"src/client/voice/dispatcher"}},{"name":"Inflate","see":["{@link https://www.npmjs.com/package/zlib-sync}"],"meta":{"line":108,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"CloseEvent","see":["{@link https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent}"],"meta":{"line":322,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"ErrorEvent","see":["{@link https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent}"],"meta":{"line":327,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"MessageEvent","see":["{@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent}"],"meta":{"line":332,"file":"WebSocketShard.js","path":"src/client/websocket"}},{"name":"Collection","see":["{@link https://discord.js.org/#/docs/collection/master/class/Collection}"],"meta":{"line":14,"file":"Collection.js","path":"src/util"}},{"name":"Stream","see":["{@link https://nodejs.org/api/stream.html}"],"meta":{"line":102,"file":"DataResolver.js","path":"src/util"}}]}