diff --git a/README.md b/README.md index 0d183aa8..eda49a3c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ # Pycord Guide -[![Netlify Status](https://api.netlify.com/api/v1/badges/c6976714-2c3d-4ff5-a30f-cf784045062a/deploy-status)](https://app.netlify.com/sites/pycord/deploys) The official Guide for Pycord, explaining Pycord's features and how to use them. @@ -18,7 +17,7 @@ The Guide is built using [Docusaurus 2](https://docusaurus.io/), a modern static [`/src`](./src) contains styling (`.scss`) and the index (`.tsx`/`jsx`). -[`/docs`](./docs) contains the pages for the guide. The Guide Pages are writtern in the `mdx` file format, a combination of Markdown syntax and JSX/React. +[`/docs`](./docs) contains the pages for the guide. The Guide Pages are written in the `mdx` file format, a combination of Markdown syntax and JSX/React. ## Local Development diff --git a/docs/extensions/commands/help-command.mdx b/docs/extensions/commands/help-command.mdx index 1f35763e..84c44b96 100644 --- a/docs/extensions/commands/help-command.mdx +++ b/docs/extensions/commands/help-command.mdx @@ -54,8 +54,8 @@ of making one with Pycord. Making a help command with subclassing and OOP will s There are two types of built-in help commands: -- [`DefaultHelpCommand`](https://docs.pycord.dev/en/master/api.html#discord.ext.commands.DefaultHelpCommand) -- [`MinimalHelpCommand`](https://docs.pycord.dev/en/master/api.html#discord.ext.commands.MinimalHelpCommand) +- [`DefaultHelpCommand`](https://docs.pycord.dev/en/stable/api.html#discord.ext.commands.DefaultHelpCommand) +- [`MinimalHelpCommand`](https://docs.pycord.dev/en/stable/api.html#discord.ext.commands.MinimalHelpCommand) `DefaultHelpCommand` is the command enabled by default. It isn't the best looking, but `MinimalHelpCommand` can help make it look a bit better. @@ -359,7 +359,7 @@ class MyHelp(commands.HelpCommand): await self.get_destination().send(embed=embed) ``` -Add all of these methods together and you have a fully functioning help command! +Add all of these methods together, and you have a fully functioning help command!
Click to see the final code for this section diff --git a/docs/extensions/pages/paginator-basics.mdx b/docs/extensions/pages/paginator-basics.mdx index cf8b364e..97f0e611 100644 --- a/docs/extensions/pages/paginator-basics.mdx +++ b/docs/extensions/pages/paginator-basics.mdx @@ -4,7 +4,7 @@ title: Paginator Basics # Paginator Basics -## [Page](https://docs.pycord.dev/en/master/ext/pages/index.html#page) +## [Page](https://docs.pycord.dev/en/stable/ext/pages/index.html#page) This class contains two attributes: `content` and `embeds`, which correspond to the attributes of the same name on the `discord.Message` class. To create a new Page, use the following syntax: @@ -13,11 +13,11 @@ import discord page = Page(content="My Page Content", embeds=[discord.Embed(title="My First Embed Title")]) ``` -## [PageGroup](https://docs.pycord.dev/en/master/ext/pages/index.html#pagegroup) +## [PageGroup](https://docs.pycord.dev/en/stable/ext/pages/index.html#pagegroup) This class represents a group of pages. It uses most of the same parameters as `Paginator`, which allows each `PageGroup` to effectively have its own settings and behaviours. -## [Paginator](https://docs.pycord.dev/en/master/ext/pages/index.html#paginator) +## [Paginator](https://docs.pycord.dev/en/stable/ext/pages/index.html#paginator) This is the main class for `ext.pages`, and is used to control most of the functionality of the extension. In its most basic form, with no arguments provided (default values listed below), a paginator can be created like so: @@ -54,8 +54,8 @@ The only required parameter for `Paginator` is the `pages` parameter, which is u You can also pass in a list of `PageGroup` objects, a list of strings, a list of embeds, or a list of lists of embeds. Once the `Paginator` instance is created, you can call either -[`Paginator.send()`](https://docs.pycord.dev/en/master/ext/pages/index.html#discord.ext.pages.Paginator.send) -or [`Paginator.respond()`](https://docs.pycord.dev/en/master/ext/pages/index.html#discord.ext.pages.Paginator.respond) +[`Paginator.send()`](https://docs.pycord.dev/en/stable/ext/pages/index.html#discord.ext.pages.Paginator.send) +or [`Paginator.respond()`](https://docs.pycord.dev/en/stable/ext/pages/index.html#discord.ext.pages.Paginator.respond) to send a message or response with the paginator's contents. #### Depending on what's being passed to the `pages` parameter, the behaviour of the paginator may differ: @@ -89,11 +89,11 @@ child list. This type of page cannot have any message content. - When using the default buttons, shows a middle 5th button with the current/total page numbers. **For other parameters that can be set on initialization, please check the -[API Reference](https://docs.pycord.dev/en/master/ext/pages/index.html#paginator)** +[API Reference](https://docs.pycord.dev/en/stable/ext/pages/index.html#paginator)** -## [PaginatorButton](https://docs.pycord.dev/en/master/ext/pages/index.html#paginatorbutton) +## [PaginatorButton](https://docs.pycord.dev/en/stable/ext/pages/index.html#paginatorbutton) This class represents a button used to navigate between the pages of a paginator. It's also used to create the page indicator. @@ -143,7 +143,7 @@ paginator.remove_button("last") ``` -## [PaginatorMenu](https://docs.pycord.dev/en/master/ext/pages/index.html#paginatormenu) +## [PaginatorMenu](https://docs.pycord.dev/en/stable/ext/pages/index.html#paginatormenu) This class represents the `discord.Select` menu used to navigate between `PageGroup` instances. In most situations, you will not need to interact with this class directly. diff --git a/docs/extensions/tasks/tasks.mdx b/docs/extensions/tasks/tasks.mdx index 5543a7f2..c98aa485 100644 --- a/docs/extensions/tasks/tasks.mdx +++ b/docs/extensions/tasks/tasks.mdx @@ -35,7 +35,7 @@ doing very useful stuff. doing very useful stuff. ``` -For a more useful example here's a task in a cog context ripped straight from the [docs](https://docs.pycord.dev/en/master/ext/tasks/index.html#recepies): +For a more useful example here's a task in a cog context ripped straight from the [docs](https://docs.pycord.dev/en/stable/ext/tasks/index.html#recepies): ```py from discord.ext import tasks, commands @@ -64,13 +64,13 @@ As you'd expect this will increment a number and print it out every 5 seconds li # ... ``` -## [Tasks](https://docs.pycord.dev/en/master/ext/tasks/index.html) +## [Tasks](https://docs.pycord.dev/en/stable/ext/tasks/index.html) Now let's get into the nitty-gritty of tasks. As you've seen tasks can work in both outer scope and class contexts and the handle is roughly the same, you define a task using the `tasks.loop` decorator and use the `start` method to start it, the difference is you add the `self` argument when in a class context so since most people have all their bot's code in Cogs all the following code blocks will be in a Cog context to make it easy to copy it then apply whatever modifications you might need! -### [Creating a task](https://docs.pycord.dev/en/master/ext/tasks/index.html#discord.ext.tasks.loop) +### [Creating a task](https://docs.pycord.dev/en/stable/ext/tasks/index.html#discord.ext.tasks.loop) A look at `discord.ext.tasks.loop`'s definition in the documentation reveals that: 1. As you've seen before it expects the time between each execution, that however doesn't have to be in seconds as @@ -82,8 +82,8 @@ at the specified time(s). to make it run forever which is also the default. 4. The loop function ***must*** be a coroutine. -These are all really useful and they aren't the only parameters so if you wanna know more about them check out the -[docs](https://docs.pycord.dev/en/master/ext/tasks/index.html#discord.ext.tasks.loop)! +These are all really useful, and they aren't the only parameters so if you want to know more about them check out the +[docs](https://docs.pycord.dev/en/stable/ext/tasks/index.html#discord.ext.tasks.loop)! ### Attributes @@ -103,7 +103,7 @@ Now let's create a cog that handles a leaderboard we have in our bot using Tasks also provide a refresher of how slash commands groups work in cogs. For the sake of this example let's pretend that we have a leaderboard module that does all the leaderboard handling for -us and that computing the leaderboard is very expensive computationally wise so we want to store one version of it that +us and that computing the leaderboard is very expensive computationally wise, so we want to store one version of it that gets regularly updated instead of generating it every time someone calls the `/leaderboard view` command. ```py from discord.ext import tasks, commands @@ -183,21 +183,21 @@ Now to explain what's going on: First things first we create a cog and in its `__init__` function we start the `update_leaderboard` task and generate the first instance of our leaderboard's embed. -After that, we define the `update_leaderboard` task using the `loop` decorator and we make it run every ten minutes by +After that, we define the `update_leaderboard` task using the `loop` decorator, and we make it run every ten minutes by passing 10 to the `minutes` parameter. -Then that we define the `before_update_leaderboard` task using the `before_loop` decorator and we make it wait until the +Then that we define the `before_update_leaderboard` task using the `before_loop` decorator, and we make it wait until the bot is ready before starting the task. -Next up we define the `after_update_leaderboard` task using the `after_loop` decorator and we make it clean up the +Next up we define the `after_update_leaderboard` task using the `after_loop` decorator, and we make it clean up the leaderboard when the loop finally stops running. -Then we define the `update_leaderboard_error` task using the `error` decorator and we make it print any errors that may +Then we define the `update_leaderboard_error` task using the `error` decorator, and we make it print any errors that may occur while we update our leaderboard to the console. Then we get into the fun stuff, we create a slash command group using the `SlashCommandGroup` class and name it `leaderboard`, we then create the `view` sub-command which sends the embed generated when the leaderboard is updated and -`update_info` which shows a lot of data about the task using some of the attributes and functions available to us. +`update_info` which shows a lot of data about the task using some attributes and functions available to us. We also create a slash command group called `leaderboard_config` which is only available to the owner of the bot. @@ -205,8 +205,8 @@ Then we create the `set_time_between_updates` sub-command which takes in the tim between updates of the leaderboard using the `change_interval` method, the `stop` sub-command which stops the task using the `stop` method and `restart` which restarts the task using the `restart` method. -Finally, we add the `LeaderboardCog` cog to the bot and we're done! +Finally, we add the `LeaderboardCog` cog to the bot, and we're done! I'd highly recommend you check the tasks extension -[documentation](https://docs.pycord.dev/en/master/ext/tasks/index.html) for more info on how to use them and what other +[documentation](https://docs.pycord.dev/en/stable/ext/tasks/index.html) for more info on how to use them and what other functions they have. diff --git a/docs/getting-started/creating-your-first-bot.mdx b/docs/getting-started/creating-your-first-bot.mdx index f53fc1fc..ebe6a9e2 100644 --- a/docs/getting-started/creating-your-first-bot.mdx +++ b/docs/getting-started/creating-your-first-bot.mdx @@ -173,7 +173,7 @@ Next, we load the env file with `load_dotenv()`. bot = discord.Bot() ``` -In this line, we create a new instance of [`discord.Bot`](https://docs.pycord.dev/en/master/api.html#discord.Bot). +In this line, we create a new instance of [`discord.Bot`](https://docs.pycord.dev/en/stable/api.html#discord.Bot). In this object, we can pass various parameters for configuration purposes, such as `owner_ids` and [`intents`](https://docs.pycord.dev/en/stable/api.html?highlight=get_message#discord.Intents). @@ -185,8 +185,8 @@ async def on_ready(): print(f"{bot.user} is ready and online!") ``` -We use the [`event`](https://docs.pycord.dev/en/master/api.html#discord.Bot.event) decorator to override -the [`on_ready`](https://docs.pycord.dev/en/master/api.html#discord.on_ready) function to define an +We use the [`event`](https://docs.pycord.dev/en/stable/api.html#discord.Bot.event) decorator to override +the [`on_ready`](https://docs.pycord.dev/en/stable/api.html#discord.on_ready) function to define an event that is automatically called when the bot is ready to use. ```py @@ -195,7 +195,7 @@ async def say_hello(ctx): await ctx.respond("Hey!") ``` -Here, we use the [`slash_command`](https://docs.pycord.dev/en/master/api.html#discord.Bot.slash_command) +Here, we use the [`slash_command`](https://docs.pycord.dev/en/stable/api.html#discord.Bot.slash_command) decorator to define a slash command. We specify the `name` and `description` arguments. If not specified, the name of the slash command would be the function name and the command description would be empty. diff --git a/docs/getting-started/more-features.mdx b/docs/getting-started/more-features.mdx index b504328b..0bd1b9d7 100644 --- a/docs/getting-started/more-features.mdx +++ b/docs/getting-started/more-features.mdx @@ -21,13 +21,13 @@ So, you just created your first Pycord bot! Now, let's add some more features to ### Event Handlers -Events in Discord are a way to listen for certain actions. For example, if you want to know when a user joins your server so you could send a welcome message, you can use the `on_member_join` event. +Events in Discord are a way to listen for certain actions. For example, if you want to know when a user joins your server, so you could send a welcome message, you can use the `on_member_join` event. First, you need to ask Discord to send you events. This is done via "Intents". Read up the [Intents](../Popular-Topics/intents) page for more information. Once you understand what intents are, you can enable the events you need, or just use the default ones with `discord.Intents.all()`. -Now that that's done, let's add an event handler for when a user joins the server. We will use the [`on_member_join` event](https://docs.pycord.dev/en/master/api.html#discord.on_member_join). We will send a private message to the user welcoming them to the server. +Now that that's done, let's add an event handler for when a user joins the server. We will use the [`on_member_join` event](https://docs.pycord.dev/en/stable/api.html#discord.on_member_join). We will send a private message to the user welcoming them to the server. ```python @bot.event @@ -37,15 +37,15 @@ async def on_member_join(member): ) ``` -We use the [`discord.Bot.event` decorator](https://docs.pycord.dev/en/master/api.html#discord.Bot.event) to add the event handler. +We use the [`discord.Bot.event` decorator](https://docs.pycord.dev/en/stable/api.html#discord.Bot.event) to add the event handler. -The `on_member_join` event is called when a user joins the server. The `member` parameter is the user that joined. Different events have different names and parameters. You can find all of them [here](https://docs.pycord.dev/en/master/api.html#discord.Intents). +The `on_member_join` event is called when a user joins the server. The `member` parameter is the user that joined. Different events have different names and parameters. You can find all of them [here](https://docs.pycord.dev/en/stable/api.html#discord.Intents). So, that's how you add event handlers! ### Waiting for User Response -Let's say you want to create a Guess-the-Number game (where the user has to guess a number between 1-10). You need to send a message to a user and wait for them to respond. You can do this with the [`wait_for`](https://docs.pycord.dev/en/master/api.html#discord.Bot.wait_for) method. +Let's say you want to create a Guess-the-Number game (where the user has to guess a number between 1-10). You need to send a message to a user and wait for them to respond. You can do this with the [`wait_for`](https://docs.pycord.dev/en/stable/api.html#discord.Bot.wait_for) method. ```python @bot.command() @@ -114,7 +114,7 @@ enabling your bot to lay out messages with a lot of text into neat fields.
-Creating embeds is simple! Just create an instance of [`discord.Embed`](https://docs.pycord.dev/en/master/api.html#discord.Embed) and edit it to your liking. Once you're done, send it! +Creating embeds is simple! Just create an instance of [`discord.Embed`](https://docs.pycord.dev/en/stable/api.html#discord.Embed) and edit it to your liking. Once you're done, send it! ```python import discord @@ -187,10 +187,10 @@ embed = discord.Embed( ) ``` -This command creates an embed. We use the [`Embed`](https://docs.pycord.dev/en/master/api.html#discord.Embed) +This command creates an embed. We use the [`Embed`](https://docs.pycord.dev/en/stable/api.html#discord.Embed) class to create an embed object with the title "My Amazing Embed", the description "Embeds are super easy, barely an inconvenience.", and the color `blurple`, Discord's main theme color. -[discord.Colour](https://docs.pycord.dev/en/master/api.html#colour) is a class full of [classmethods](https://docs.python.org/3/library/functions.html#classmethod) +[discord.Colour](https://docs.pycord.dev/en/stable/api.html#colour) is a class full of [classmethods](https://docs.python.org/3/library/functions.html#classmethod) that return color values. While the official, documented name of this is `discord.Colour`, `discord.Color` works as well. @@ -201,9 +201,9 @@ embed.add_field(title="Inline Field 2", value="Inline Field 2", inline=True) embed.add_field(title="Inline Field 3", value="Inline Field 3", inline=True) ``` -This small section shows off embed fields. You can add fields to embeds with the [`add_field` method](https://docs.pycord.dev/en/master/api.html#discord.Embed.add_field) -of the [`discord.Embed`](https://docs.pycord.dev/en/master/api.html#embed) class. These consist of three -keyword arguments: `title`, `value`, and `inline`. `title` and `value` are both required arguments, which inline defaults to `False` if it's not defined. The `inline` argument specifies whether or not space will be divided among the inline fields. There could be a mix of fields where inline has different values too. +This small section shows off embed fields. You can add fields to embeds with the [`add_field` method](https://docs.pycord.dev/en/stable/api.html#discord.Embed.add_field) +of the [`discord.Embed`](https://docs.pycord.dev/en/stable/api.html#embed) class. These consist of three +keyword arguments: `title`, `value`, and `inline`. `title` and `value` are both required arguments, which inline defaults to `False` if it's not defined. The `inline` argument specifies whether space will be divided among the inline fields. There could be a mix of fields where inline has different values too. ```py embed.set_footer(text="Footer! No markdown here.") # footers can have icons too @@ -213,14 +213,14 @@ embed.set_image(url="https://example.com/link-to-my-banner.png") ``` In this section, we're adding unique items to the embed. These items are: -- Footer - With the [`set_footer()`](https://docs.pycord.dev/en/master/api.html#discord.Embed.set_footer) +- Footer - With the [`set_footer()`](https://docs.pycord.dev/en/stable/api.html#discord.Embed.set_footer) method, you can set a small footer that holds a message. This has `text` and `icon_url` kwargs. -- Author - With the [`set_author`](https://docs.pycord.dev/en/master/api.html#discord.Embed.set_author) +- Author - With the [`set_author`](https://docs.pycord.dev/en/stable/api.html#discord.Embed.set_author) method, you can set an author for the embed. This is a small text field at the top of the embed. This includes `name`, `url` and `icon_url` kwargs. -- Thumbnail - With the [`set_thumbnail`](https://docs.pycord.dev/en/master/api.html#discord.Embed.set_thumbnail) +- Thumbnail - With the [`set_thumbnail`](https://docs.pycord.dev/en/stable/api.html#discord.Embed.set_thumbnail) method, you can set a small image to reside at the top-right of the embed. This has a single `url` kwarg. -- Image - With the [`set_image`](https://docs.pycord.dev/en/master/api.html#discord.Embed.set_image) +- Image - With the [`set_image`](https://docs.pycord.dev/en/stable/api.html#discord.Embed.set_image) method, you can set an image to sit at the bottom of an embed. This has a single `url` kwarg. There are a lot more methods and attributes you can use to configure embeds. Here, we just covered the basics. Also, remember that all of these values are not necessary in an embed. An embed may only contain a few of these. For example, only a description, a title and a description, and so on. @@ -324,7 +324,7 @@ by using the following syntax: Inside the supported elements that have just been mentioned, the example above will look like this: [`Pycord`](https://pycord.dev/) -Outside of them, the link will still be clickable but the formatting will be ignored, +Outside them, the link will still be clickable but the formatting will be ignored, therefore the example above will look similarly to this: `[Pycord](https://pycord.dev/)` #### Embed Markdown diff --git a/docs/getting-started/rules-and-common-practices.mdx b/docs/getting-started/rules-and-common-practices.mdx index 30520b31..675b9fb2 100644 --- a/docs/getting-started/rules-and-common-practices.mdx +++ b/docs/getting-started/rules-and-common-practices.mdx @@ -59,7 +59,7 @@ about it. I'm here to tell you that it isn't a good idea to shard your bot. *Wait a minute, why would it be an option if it wasn't a good idea?* It's simple. I lied. Sort of. I'm not going to go into the details of sharding a bot, so you can read about it on [this page](../Popular-Topics/sharding). Sharding is the process of taking your bot -and breaking it up into small pieces so it's easier to perform tasks. This is very useful for large +and breaking it up into small pieces, so it's easier to perform tasks. This is very useful for large bots, as it makes them faster and more reliable. Sharding is not a good practice for small bots. :::note @@ -84,7 +84,7 @@ will be denied simply because you applied for an intent you didn't need. ### Subclassing While it may take some time, subclassing a bot is very worth it. Once again, this was explained -elsewhere so I won't go into the details, but I felt it fit here so I put it here. +elsewhere, so I won't go into the details, but I felt it fit here, so I put it here. Subclassing a bot makes it more flexible and allows it to do a lot more. Read more about subclassing bots [here](../Popular-Topics/subclassing-bots) @@ -96,7 +96,7 @@ Your bot is only able to be run for one reason: its token. If you followed the keeping that token safe. That's exactly what you want to do. Sharing your token is never good. If someone evil gets a hold of your token, they can do terrible things, -such as making your bot leave all of its servers, spamming all of the members the bot has contact with, +such as making your bot leave all of its servers, spamming all the members the bot has contact with, and even manipulating the servers the bot is in, if given the permissions. That's why it's very important to keep your token safe. To learn how to do so, read [this part](creating-your-first-bot#tokens) of the Creating Your First Bot guide. @@ -106,13 +106,13 @@ the Creating Your First Bot guide. You always want to back up your bot's data. This includes both its code *and* its databases. This way, if something tragic happens, such as your host failing a data migration or you breaking your Raspberry Pi's SD card that held your bot, you'll still have its precious user data. I have a small program for -my bot that uploads its databases to a remote GitHub repository every now and then to not lose any data. +my bot that uploads its databases to a remote GitHub repository periodically to not lose any data. It may be smarter to find a bit more of a reliable way to do so, though. Public or private, having a local Git repository connected to a remote one is a good idea for making almost any application. For a lot of developers, it's like saving your work. If you do this, all of -your bot's code won't be lost if your computer spontaneously combusts or you smash it to bits from -anger. You can simply grab the backup computer that everyone has laying around and you're back +your bot's code won't be lost if your computer spontaneously combusts, or you smash it to bits from +anger. You can simply grab the backup computer that everyone has lying around, and you're back in business. ### Organization and Cleanliness @@ -165,7 +165,7 @@ MongoDB is a JSON-like format and if you already use JSON files, it shouldn't be #### SQLite SQLite is based on SQL, a common relational data model. It's a lightweight, easy-to-use, portable database solution that -works entirely on files. However, if for some reason you cannot read/write to and from a file and you need to manage +works entirely on files. However, if for some reason you cannot read/write to and from a file, and you need to manage lots of data, SQLite might not be for you. While SQLite is a part of the Python Standard Library as the `sqlite3` package, we recommend not using it as it is diff --git a/docs/interactions/application-commands/context-menus.mdx b/docs/interactions/application-commands/context-menus.mdx index 7c2baa1c..cf4c8eba 100644 --- a/docs/interactions/application-commands/context-menus.mdx +++ b/docs/interactions/application-commands/context-menus.mdx @@ -14,11 +14,11 @@ import "discord-message-components/packages/react/dist/style.css"; import DiscordComponent, { defaultOptions } from "../../../src/components/DiscordComponent"; -When you right-click a message, you may see an option called "Apps". Hover over it and you can see +When you right-click a message, you may see an option called "Apps". Hover over it, and you can see commands a bot can run with that message. These are called message commands. When you right-click a user in the user list, you can once again see an option called "Apps". -Hover over it and you can see commands a bot can run with that message. These are called user commands. +Hover over it, and you can see commands a bot can run with that message. These are called user commands. Together, these two are called Context Menus or Context Menu Commands. These commands work very much like normal commands, except they take a member or message. diff --git a/docs/interactions/application-commands/slash-commands.mdx b/docs/interactions/application-commands/slash-commands.mdx index a6666705..976f00ac 100644 --- a/docs/interactions/application-commands/slash-commands.mdx +++ b/docs/interactions/application-commands/slash-commands.mdx @@ -62,11 +62,11 @@ Let's go through the code. First, we import Pycord's `discord` package. -Next, we create a [`discord.Bot`](https://docs.pycord.dev/en/master/api.html#discord.Bot) object and assign it to a variable `bot`. +Next, we create a [`discord.Bot`](https://docs.pycord.dev/en/stable/api.html#discord.Bot) object and assign it to a variable `bot`. -We then go ahead and use the [`@bot.command`](https://docs.pycord.dev/en/master/api.html#discord.Bot.command) decorator, which registers a new Slash Command. We pass a `description` parameter to give a description to the Slash Command. We can also pass a `name` parameter to change the Slash Command's name. By default, the name of the Slash Command will be the name of the function, in this case, `/ping`. +We then go ahead and use the [`@bot.command`](https://docs.pycord.dev/en/stable/api.html#discord.Bot.command) decorator, which registers a new Slash Command. We pass a `description` parameter to give a description to the Slash Command. We can also pass a `name` parameter to change the Slash Command's name. By default, the name of the Slash Command will be the name of the function, in this case, `/ping`. -We create an async function called `ping` with parameters `ctx`, which, when called, sends the bot's ping/latency using [`ctx.respond`](https://docs.pycord.dev/en/master/api.html#discord.ApplicationContext.respond). +We create an async function called `ping` with parameters `ctx`, which, when called, sends the bot's ping/latency using [`ctx.respond`](https://docs.pycord.dev/en/stable/api.html#discord.ApplicationContext.respond). ## Subcommand Groups @@ -179,7 +179,7 @@ bot.run("TOKEN") -You could also explicitly declare the type using the [`SlashCommandOptionType`](https://docs.pycord.dev/en/master/api.html#discord.SlashCommandOptionType) enum. +You could also explicitly declare the type using the [`SlashCommandOptionType`](https://docs.pycord.dev/en/stable/api.html#discord.SlashCommandOptionType) enum. ```python title="Slash Command Type" import discord diff --git a/docs/interactions/index.mdx b/docs/interactions/index.mdx index 52394e15..03f9e5dd 100644 --- a/docs/interactions/index.mdx +++ b/docs/interactions/index.mdx @@ -15,7 +15,7 @@ import DiscordComponent, { defaultOptions } from "../../src/components/DiscordCo In December 2020, Discord released their first Interaction: the [Slash Command](https://discord.com/developers/docs/interactions/application-commands#slash-commands). -Since then, Discord has added many different types of Interactions, including: +Since then, Discord has added many types of Interactions, including: [**Application Commands**](https://discord.com/developers/docs/interactions/application-commands) @@ -41,7 +41,7 @@ Form-like modals can be used to ask for input from a user. Application Commands are another set of new features that are intended to avoid compromising users' safety and privacy. They're relatively easy to add to your bot, and give people a simpler and safer way to use commands. -### [Slash Commands](https://docs.pycord.dev/en/master/api.html#slashcommand) +### [Slash Commands](https://docs.pycord.dev/en/stable/api.html#slashcommand) Slash Commands were the first Interaction added to Discord. They're easy to use and create, and is the only prefix commands alternative that does not need Message Content intent. @@ -77,7 +77,7 @@ apart from the note telling you who invoked it. A Slash Command's fields can acc Just about as good as it gets. -### [Message](https://docs.pycord.dev/en/master/api.html#messagecommand) and [User](https://docs.pycord.dev/en/master/api.html#usercommand) Commands +### [Message](https://docs.pycord.dev/en/stable/api.html#messagecommand) and [User](https://docs.pycord.dev/en/stable/api.html#usercommand) Commands Message Commands and User Commands were both introduced at around the same time, and are very similar to each other, so we'll be introducing them together. These commands can be found in the `Apps` tab when alt-clicking. The only difference between the two is that @@ -181,10 +181,10 @@ Message Components are fairly new features in Discord, allowing developers to gi and understandable user interface. Message Components are easy to use and make your bot look modern, sleek, and downright awesome. -### [Views](https://docs.pycord.dev/en/master/api.html#discord.ui.View) +### [Views](https://docs.pycord.dev/en/stable/api.html#discord.ui.View) Views are not an Application Command nor are they a Message Component. Views are the invisible placeholders, or grid, -that Message Components lie in. Views can have up to 5 [`Action Rows`](https://docs.pycord.dev/en/master/api.html#discord.ActionRow), +that Message Components lie in. Views can have up to 5 [`Action Rows`](https://docs.pycord.dev/en/stable/api.html#discord.ActionRow), and Action Rows can have a maximum of 5 slots. Below, you can find a table showing how many slots a Message Interaction takes up. | Component | Slots | @@ -197,7 +197,7 @@ So, based on this, you could have a maximum of 25 Buttons in a View with no Sele Menus in a View with no Buttons. This doesn't mean you can't have them both in a View, however. You can have a combination of them, such as 20 Buttons and a Select Menu or 10 Buttons and 3 Select Menus. -### [Buttons](https://docs.pycord.dev/en/master/api.html#discord.ui.Button) +### [Buttons](https://docs.pycord.dev/en/stable/api.html#discord.ui.Button) Buttons are the first of the Message Components. They allow for quick responses to prompts, such as for canceling or continuing an action. Of course, these aren't their only uses; people have created awesome things with Buttons, such as calculators, games, and more! @@ -218,7 +218,7 @@ Of course, these aren't their only uses; people have created awesome things with This is what a Button looks like, very simple and modern. To learn more about Buttons, refer to our [Buttons page](./ui-components/buttons.mdx). -### [Select Menus](https://docs.pycord.dev/en/master/api.html#discord.ui.Select) +### [Select Menus](https://docs.pycord.dev/en/stable/api.html#discord.ui.Select) Select Menus are the second of Discord's Message Components. They allow users to select from a list of choices, which your bot can then use. Select Menus are good for things such as choosing features, pages of a help menu, and more. @@ -229,11 +229,11 @@ This is what a Select Menu looks like. While not looking as good as Buttons, the and have even greater possibilities. To learn more about Select Menus, please refer to our [Select Menus page](./ui-components/dropdowns.mdx). -### [Modal Dialogs](https://docs.pycord.dev/en/master/api.html#discord.ui.Modal) +### [Modal Dialogs](https://docs.pycord.dev/en/stable/api.html#discord.ui.Modal) Text Modals are the most recently added Message Component in Discord. They're useful for text input and filling out forms, such as a sign-up for your bot's service. These are meant to replace long bot setup processes by allowing users to fill out multiple text fields, -which avoids having the user send multiple messages for the bot. Modals can accessed by either invoking an Application Command or by +which avoids having the user send multiple messages for the bot. Modals can be accessed by either invoking an Application Command or by interacting with another UI Component. ![Text Modal Example Image](../assets/interactions/modal-example.png) diff --git a/docs/interactions/ui-components/buttons.mdx b/docs/interactions/ui-components/buttons.mdx index ce13e0c6..eccf2abe 100644 --- a/docs/interactions/ui-components/buttons.mdx +++ b/docs/interactions/ui-components/buttons.mdx @@ -74,13 +74,13 @@ Using this command should return the following message:
As you can see, we create a class called `MyView` that [subclasses](#oop) -[`discord.ui.View`](https://docs.pycord.dev/en/master/api.html#discord.ui.View). +[`discord.ui.View`](https://docs.pycord.dev/en/stable/api.html#discord.ui.View). Then, we add a function called `button_callback` to the `MyView` class with the decorator -[`discord.ui.button`](https://docs.pycord.dev/en/master/api.html#discord.ui.button). +[`discord.ui.button`](https://docs.pycord.dev/en/stable/api.html#discord.ui.button). This decorator adds a button to a component. This function takes two arguments: the button that was clicked and the interaction. These arguments are passed to the function when the button is clicked -by the module. We use the [`interaction.response.send_message`](https://docs.pycord.dev/en/master/api.html#discord.InteractionResponse.send_message) +by the module. We use the [`interaction.response.send_message`](https://docs.pycord.dev/en/stable/api.html#discord.InteractionResponse.send_message) function to send a message to the channel where the interaction was sent. Finally, we create a global slash command called `button` that sends the message, along with the view @@ -101,11 +101,11 @@ about making your button do amazing things, while Pycord handles the rest! | Danger | `discord.ButtonStyle.danger` / `discord.ButtonStyle.red` | Red | | Link | `discord.ButtonStyle.link` / `discord.ButtonStyle.url` | Grey | -Check out the [`discord.ButtonStyle`](https://docs.pycord.dev/en/master/api.html#discord.ButtonStyle) class for more information. +Check out the [`discord.ButtonStyle`](https://docs.pycord.dev/en/stable/api.html#discord.ButtonStyle) class for more information. ![Different Button Styles](../../assets/interactions/button-styles.png) -You can set a button's style by adding the `style` argument in the [`discord.ui.button`](https://docs.pycord.dev/en/master/api.html#discord.ui.button) decorator. +You can set a button's style by adding the `style` argument in the [`discord.ui.button`](https://docs.pycord.dev/en/stable/api.html#discord.ui.button) decorator. ```python class MyView(discord.ui.View): @@ -119,7 +119,7 @@ class MyView(discord.ui.View): We have discussed that Views can have 5 rows. Each row has 5 slots, and each button takes up 1 slot. So, how do we move the buttons to another row? -This can be done by specifying the `row` argument in the [`discord.ui.button`](https://docs.pycord.dev/en/master/api.html#discord.ui.button) +This can be done by specifying the `row` argument in the [`discord.ui.button`](https://docs.pycord.dev/en/stable/api.html#discord.ui.button) decorator. :::info The `row` argument @@ -288,7 +288,7 @@ No. As a Discord limitation, you can only have one view per message. They cannot be simple like commands. This system makes them flexible and doesn't limit your imagination. There are loads of different ways you can use UI Components. For example, you could subclass Buttons or Select Menus and add them to a view using the view's `add_item` function. -UI Components aren't hard to use if you know Python. We recommend learning [Object Oriented Programming with Python](#oop). +UI Components aren't hard to use if you know Python. We recommend learning [Object-Oriented Programming with Python](#oop). #### What is OOP? What is subclassing? diff --git a/docs/interactions/ui-components/dropdowns.mdx b/docs/interactions/ui-components/dropdowns.mdx index 2ee2afae..107dc4ae 100644 --- a/docs/interactions/ui-components/dropdowns.mdx +++ b/docs/interactions/ui-components/dropdowns.mdx @@ -59,17 +59,17 @@ bot.run("TOKEN") There's a lot going on over here! Don't worry, we will go over the code and explain it. As you can see, we create a class called `MyView` that subclasses -[`discord.ui.View`](https://docs.pycord.dev/en/master/api.html#discord.ui.View). +[`discord.ui.View`](https://docs.pycord.dev/en/stable/api.html#discord.ui.View). Then, we add a function called `select_callback` to the `View` class with the decorator -[`discord.ui.select`](https://docs.pycord.dev/en/master/api.html#discord.ui.select). +[`discord.ui.select`](https://docs.pycord.dev/en/stable/api.html#discord.ui.select). This decorator adds a select menu to the view. This decorator takes a few arguments to customize your select menu. Read them in the [Customization section](#customization). -That was the decorator. Now, the function itself is pretty simple. It takes two parameters, not including `self`. The parameters are `select`: The select menu, and `interaction`: a [`discord.InteractionResponse`](https://docs.pycord.dev/en/master/api.html#discord.InteractionResponse) object. Both of these are passed by Pycord, so you just need to specify them in the function! +That was the decorator. Now, the function itself is pretty simple. It takes two parameters, not including `self`. The parameters are `select`: The select menu, and `interaction`: a [`discord.InteractionResponse`](https://docs.pycord.dev/en/stable/api.html#discord.InteractionResponse) object. Both of these are passed by Pycord, so you just need to specify them in the function! -In the callback, you could do anything you want. You get the two parameters `select` and `interaction` to play around with. Here, we send a message using `await interaction.response.send_message` (where interaction is [`discord.InteractionResponse`](https://docs.pycord.dev/en/master/api.html#discord.InteractionResponse)) with content `select.values[0]`, which sends the label of the first/only option the user selected. Obviously, this is only an example and you could do just about anything you want. +In the callback, you could do anything you want. You get the two parameters `select` and `interaction` to play around with. Here, we send a message using `await interaction.response.send_message` (where interaction is [`discord.InteractionResponse`](https://docs.pycord.dev/en/stable/api.html#discord.InteractionResponse)) with content `select.values[0]`, which sends the label of the first/only option the user selected. Obviously, this is only an example, and you could do just about anything you want. Finally, we create a global slash command called `flavour` that sends a message "Choose a flavor!" along with the view that contains our select menu. @@ -81,7 +81,7 @@ about making your code do amazing things, while Pycord handles the rest! #### Select Menu Properties -- `options`\*: A list of [`discord.SelectOption`](https://docs.pycord.dev/en/master/api.html#discord.SelectOption) values. These are the options that can be selected in this menu. +- `options`\*: A list of [`discord.SelectOption`](https://docs.pycord.dev/en/stable/api.html#discord.SelectOption) values. These are the options that can be selected in this menu. - `placeholder` is the placeholder text shown in the select menu if no option is selected. - `custom_id`: The ID of the select menu that gets received during an interaction. It is recommended not to set this to anything unless you are trying to create a persistent view. - `row`: The relative row this select menu belongs to. A Discord component can only have 5 rows. By default, items are arranged automatically into those 5 rows. If you’d like to control the relative positioning of the row then passing an index is advised. For example, row=1 will show up before row=2. Defaults to None, which is automatic ordering. The row number must be between 0 and 4 (i.e. zero indexed). @@ -93,7 +93,7 @@ about making your code do amazing things, while Pycord handles the rest! #### Select Option Properties -In the `options` parameter, you pass a list of [`discord.SelectOption`](https://docs.pycord.dev/en/master/api.html#discord.SelectOption) values. This class also has a few parameters: +In the `options` parameter, you pass a list of [`discord.SelectOption`](https://docs.pycord.dev/en/stable/api.html#discord.SelectOption) values. This class also has a few parameters: - `default` (whether the option is selected by default) - `description` (an additional description, if any) - `emoji` (a string or an emoji object, if any) @@ -281,7 +281,7 @@ No. As a Discord limitation, you can only have one view per message. They cannot be simple like commands. This system makes them flexible and doesn't limit your imagination. There are loads of different ways you can use UI Components. For example, you could subclass Buttons or Select Menus and add them to a view using the view's `add_item` function. -UI Components aren't hard to use if you know Python. We recommend learning [Object Oriented Programming with Python](#oop). +UI Components aren't hard to use if you know Python. We recommend learning [Object-Oriented Programming with Python](#oop). #### What is OOP? What is subclassing? diff --git a/docs/interactions/ui-components/modal-dialogs.mdx b/docs/interactions/ui-components/modal-dialogs.mdx index 08d06b98..c13d7ea5 100644 --- a/docs/interactions/ui-components/modal-dialogs.mdx +++ b/docs/interactions/ui-components/modal-dialogs.mdx @@ -21,7 +21,7 @@ Modal Dialogs, also known as "modals", provide a form-like structure for bots to ## Concept -Modal Dialogs consist of a title, custom ID, and up to 5 [`discord.ui.InputText`](https://docs.pycord.dev/en/master/api.html#discord.ui.InputText) components. While creating modals, we generally subclass [`discord.ui.Modal`](https://docs.pycord.dev/en/master/api.html#discord.ui.Modal), as we'll see later. +Modal Dialogs consist of a title, custom ID, and up to 5 [`discord.ui.InputText`](https://docs.pycord.dev/en/stable/api.html#discord.ui.InputText) components. While creating modals, we generally subclass [`discord.ui.Modal`](https://docs.pycord.dev/en/stable/api.html#discord.ui.Modal), as we'll see later. Unlike other UI Components, Modals cannot be sent with messages. They must be invoked by an Application Command or another UI Component. @@ -45,7 +45,7 @@ class MyModal(discord.ui.Modal): -The `ctx` parameter we define in Application Commands receives an [`ApplicationContext`](https://docs.pycord.dev/en/master/api.html#discord.ApplicationContext) object. Using its `send_modal()` coroutine, you can send a Modal dialog to the user invoking the Application Command. +The `ctx` parameter we define in Application Commands receives an [`ApplicationContext`](https://docs.pycord.dev/en/stable/api.html#discord.ApplicationContext) object. Using its `send_modal()` coroutine, you can send a Modal dialog to the user invoking the Application Command. ```py @bot.slash_command() @@ -58,7 +58,7 @@ async def modal_slash(ctx: discord.ApplicationContext): -The `interaction` parameter we define in UI Components receives an [`Interaction`](https://docs.pycord.dev/en/master/api.html#discord.Interaction) object. The `response` attribute of the object contains an [`InteractionResponse`](https://docs.pycord.dev/en/master/api.html#discord.InteractionResponse) object, with various coroutines such as `send_message()` and `send_modal()`, which we utilize. +The `interaction` parameter we define in UI Components receives an [`Interaction`](https://docs.pycord.dev/en/stable/api.html#discord.Interaction) object. The `response` attribute of the object contains an [`InteractionResponse`](https://docs.pycord.dev/en/stable/api.html#discord.InteractionResponse) object, with various coroutines such as `send_message()` and `send_modal()`, which we utilize. ```py class MyView(discord.ui.View): @@ -79,7 +79,7 @@ Each input field can be accessed in the order it was added to the modal dialog, ## Customization -A Modal can have up to 5 [`InputText`](https://docs.pycord.dev/en/master/api.html#discord.ui.InputText) fields. These fields offer some customization. +A Modal can have up to 5 [`InputText`](https://docs.pycord.dev/en/stable/api.html#discord.ui.InputText) fields. These fields offer some customization. Each field has a label which is shown to the user. This is defined with `label`. diff --git a/docs/introduction.mdx b/docs/introduction.mdx index 8f29d170..6ebb01a1 100644 --- a/docs/introduction.mdx +++ b/docs/introduction.mdx @@ -41,7 +41,7 @@ Here are some good resources to get started or to freshen up your Python knowled First of all, we would like to thank [Rapptz](https://github.com/Rapptz) for the original [discord.py](https://pypi.org/project/discord.py) library. Pycord is a maintained fork of this library. -We would also like to thank the [discord.js guide](https://discordjs.guide), which inspired this guide style-wise, and the [original Pycord Guide](https://namantech.me/pycord), which inspired some of the content in this guide. +We would also like to thank the [discord.js guide](https://discordjs.guide), which inspired this guide style-wise, and the [original Pycord Guide](https://namantech.me/pycord), which inspired some content in this guide. We created this guide using [Docusaurus v2](https://docusaurus.io), a modern static site generator for React. We would also like to thank Danktuary for his [`@discord-message-components/react`](https://www.npmjs.com/package/@discord-message-components/react) package, from which we took the Discord message components. diff --git a/docs/more/contributing.mdx b/docs/more/contributing.mdx index 414ec3f1..94d9c635 100644 --- a/docs/more/contributing.mdx +++ b/docs/more/contributing.mdx @@ -21,7 +21,7 @@ This page outlines some of the basic syntax you need to know to contribute to th ## Info -We use [Docusaurus v2](https://docusaurus.io/) to generate our guide. All of the guide pages are generated +We use [Docusaurus v2](https://docusaurus.io/) to generate our guide. All the guide pages are generated from `mdx` files in the [`docs/`](https://github.com/Pycord-Development/guide/tree/master/docs) directory. MDX allows you to use JSX in your markdown content. diff --git a/docs/more/virtual-environments.mdx b/docs/more/virtual-environments.mdx index 2569af2b..811b6ea1 100644 --- a/docs/more/virtual-environments.mdx +++ b/docs/more/virtual-environments.mdx @@ -34,7 +34,7 @@ $ pip install -U py-cord Congratulations. You now have a virtual environment all set up. ## Additional info -It can be useful to set up a requirements.txt so you can just put all of your dependencies in there and have pip install it. +It can be useful to set up a requirements.txt, so you can just put all of your dependencies in there and have pip install it. For instance, if you wanted to have the latest 2.0 version of pycord and [pytz](https://github.com/stub42/pytz/blob/master/src/README.rst), just create a file named requirements.txt with the following contents: ``` diff --git a/docs/popular-topics/cogs.mdx b/docs/popular-topics/cogs.mdx index 003ffb55..62e38dc9 100644 --- a/docs/popular-topics/cogs.mdx +++ b/docs/popular-topics/cogs.mdx @@ -76,7 +76,7 @@ for cog in cogs_list: ## Cog Rules When using a cog instead of the main file, there are some changes you have to make to your code. This -is because cogs work slightly different than a regular file. +is because cogs work slightly different from a regular file. ### The `self` variable @@ -101,13 +101,13 @@ Similar to prefixed commands, you'll have to use either the `@discord.slash_comm or `@discord.message_command()` decorators for Application Commands. Also, when creating a command, make sure that it is indented. If we want a command to be actually -inside of a cog, it has to be inside of your cog's class. If the command is not inside of the cog, +inside a cog, it has to be inside your cog's class. If the command is not inside the cog, your command becomes useless. ### Events When creating events, you can no longer use `@bot.event` as a decorator. This is because we cannot -access the `bot` variable outside of a function. To make an event, you have to use the `ext.commands` +access the `bot` variable outside a function. To make an event, you have to use the `ext.commands` method, `@commands.Cog.listener()`. Events also need `self` as their first parameter. And that's it! Cogs are a simple and easy way of organizing your code. Now you can check out how to diff --git a/docs/popular-topics/error-handling.mdx b/docs/popular-topics/error-handling.mdx index 4e26cfdb..b760f2ba 100644 --- a/docs/popular-topics/error-handling.mdx +++ b/docs/popular-topics/error-handling.mdx @@ -169,7 +169,7 @@ statements can handle. This is done by using the same method as above with the ` Adding error handlers per-command can be quite the task in terms of work if you have a lot. If you have happened to group your commands in cogs, then you're in luck! You can create an error handler that is specific to a cog and -handles all errors raised by commands inside of that cog. +handles all errors raised by commands inside that cog. Here's an example of a bot with a cog that implements its own error handling: @@ -259,7 +259,7 @@ Otherwise, if used in a guild context:
Per-cog error handling comes in very handy as you can relegate all of your error handling to a single function instead -of spreading it out across several per-command error handlers or inside of the commands themselves. +of spreading it out across several per-command error handlers or inside the commands themselves. ## Global Handling @@ -320,7 +320,7 @@ The error handling used above will yield this interaction if the command is used
The only issue regarding global error handling is that, if you have a large amount of commands, the global handler may -start to get crammed with a lot of code. This is where all of the previously mentioned handlers can take their place! +start to get crammed with a lot of code. This is where all the previously mentioned handlers can take their place! ## FAQ @@ -336,8 +336,8 @@ If this is new to you, we recommend checking out these helpful resources to lear #### How many errors can I handle in a single error handler? -While all of the examples in this guide page only handle one specific error and re-raise all others, all of these -error handlers can be extended to catch many different errors. +While all the examples in this guide page only handle one specific error and re-raise all others, all of these +error handlers can be extended to catch many errors. In [basic handling](#basic) (i.e. try/except statements) you can do one of two things: * Explicitly handle the errors you know might get raised and then have a broad `except Exception as exc:` statement diff --git a/docs/popular-topics/intents.mdx b/docs/popular-topics/intents.mdx index 724d3c65..a25b9c67 100644 --- a/docs/popular-topics/intents.mdx +++ b/docs/popular-topics/intents.mdx @@ -14,7 +14,7 @@ Intents allow bot developers to "subscribe" to specific events in Discord. This :::important -Remember that [Privileged Intents](#what-are-privileged-intents) require you to enable them in the Discord Developer Portal. Verified Discord Bots that don't already have access to them will need to request Discord to allow them access to them. +Remember that [Privileged Intents](#what-are-privileged-intents) require you to enable them in the Discord Developer Portal. Verified Discord Bots that don't already have access to them will need to request Discord to allow access. ::: @@ -31,7 +31,7 @@ bot = discord.Bot(intents=discord.Intents.all()) -You can view a list of intents and the events they subscribe to [here](https://docs.pycord.dev/en/master/api.html#discord.Intents). +You can view a list of intents and the events they subscribe to [here](https://docs.pycord.dev/en/stable/api.html#discord.Intents). ```python title="Enabling Intents" import discord diff --git a/docs/popular-topics/sharding.mdx b/docs/popular-topics/sharding.mdx index 361fbf99..b9af0fa0 100644 --- a/docs/popular-topics/sharding.mdx +++ b/docs/popular-topics/sharding.mdx @@ -19,7 +19,7 @@ or `AutoShardedBot` class instead of a plain `Client` or `Bot` class. Pretty coo Just because you _can_ shard your bot doesn't mean you _should_. While Pycord makes it easy to shard your bot, it isn't necessary to shard unless your bot is large. Sharding a small bot isn't just useless, but _harmful_, as it uses extra resources and may slow down your bot. Discord -themselves will let you know when your bot needs sharding so you won't need to worry about this until they contact you. +themselves will let you know when your bot needs sharding, so you won't need to worry about this until they contact you. ## How Do I Shard in Pycord? @@ -28,7 +28,7 @@ Sharding in Pycord is straightforward. Just replace your `discord.Client`, `discord.Bot`, `commands.Bot` objects with `discord.AutoShardedClient`, `discord.AutoShardedBot`, `commands.AutoShardedBot` respectively. -These new objects have been inherited from the original objects, so all of the functions from those other types should be present. +These new objects have been inherited from the original objects, so all the functions from those other types should be present. If you want to specify the number of shards your bot uses, just add the `shards` parameter, along with the number of shards you want. diff --git a/docs/popular-topics/subclassing-bots.mdx b/docs/popular-topics/subclassing-bots.mdx index 791d8231..f3be788d 100644 --- a/docs/popular-topics/subclassing-bots.mdx +++ b/docs/popular-topics/subclassing-bots.mdx @@ -28,7 +28,7 @@ bot = Bot() bot.run("TOKEN") ``` -Here, all of the commands are inside the `/src` folder that the user need not bother with. +Here, all the commands are inside the `/src` folder that the user need not bother with. #### Running Multiple Instances @@ -72,7 +72,7 @@ async def ping(ctx): bot.run('token') ``` -As you can see, instead of creating a bot object with `bot = discord.Bot()`, we subclass [`discord.Bot`](https://docs.pycord.dev/en/master/api.html#discord.Bot). We then create an instance of our new bot class and run it. Notice how we don't need to use the `@event` decorator. +As you can see, instead of creating a bot object with `bot = discord.Bot()`, we subclass [`discord.Bot`](https://docs.pycord.dev/en/stable/api.html#discord.Bot). We then create an instance of our new bot class and run it. Notice how we don't need to use the `@event` decorator. Here's another example: diff --git a/docs/popular-topics/threads.mdx b/docs/popular-topics/threads.mdx index 1e4466d5..94e51ea0 100644 --- a/docs/popular-topics/threads.mdx +++ b/docs/popular-topics/threads.mdx @@ -8,8 +8,8 @@ a way to keep multiple conversations going at the same time. Let's take a brief :::tip -Not all of the methods and attributes will be covered in this guide, but you can find them in our documentation! -[Check it out!](https://docs.pycord.dev/en/master/api.html#discord.Thread) +Not all the methods and attributes will be covered in this guide, but you can find them in our documentation! +[Check it out!](https://docs.pycord.dev/en/stable/api.html#discord.Thread) ::: diff --git a/docs/voice/playing.mdx b/docs/voice/playing.mdx index b9c0e145..ad764b9a 100644 --- a/docs/voice/playing.mdx +++ b/docs/voice/playing.mdx @@ -27,7 +27,7 @@ For users that want extra examples, you can find some in Pycord's ## Starting out First you need to run a [Lavalink Server](https://github.com/freyacodes/Lavalink) to connect with. -There a multiple documentations to do this so we are not covering that here. +There a multiple documentations to do this, so we are not covering that here. You also need to install the [wavelink](https://github.com/PythonistaGuild/Wavelink) library. diff --git a/docs/voice/receiving.mdx b/docs/voice/receiving.mdx index ef4dcade..fdb79a1b 100644 --- a/docs/voice/receiving.mdx +++ b/docs/voice/receiving.mdx @@ -74,7 +74,7 @@ Now you are finished making your command for voice receiving! Next, you will wan ### Making a Callback -To make a callback, you will want to define the currently undefined `once_done` function inside of +To make a callback, you will want to define the currently undefined `once_done` function inside our command, like so: ```py title="Recorder Callback" diff --git a/package.json b/package.json index 7858eb5e..7f08fb4d 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ }, "dependencies": { "@discordapp/twemoji": "discord/twemoji", - "@docusaurus/core": "2.1.0", - "@docusaurus/preset-classic": "2.1.0", + "@docusaurus/core": "2.2.0", + "@docusaurus/preset-classic": "2.2.0", "@easyops-cn/docusaurus-search-local": "0.27.1", "@matteusan/sentro": "0.1.23", "@mdx-js/react": "1.6.22", @@ -44,7 +44,7 @@ "yarn": "^1.22.19" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.1.0", + "@docusaurus/module-type-aliases": "2.2.0", "@tsconfig/docusaurus": "1.0.6", "micromark-extension-mdx-md": "^1.0.0", "remark-cli": "^11.0.0", diff --git a/yarn.lock b/yarn.lock index 0df60cfb..c6afdeb3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1456,10 +1456,10 @@ "@docsearch/css" "3.1.1" algoliasearch "^4.0.0" -"@docusaurus/core@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.1.0.tgz#4aedc306f4c4cd2e0491b641bf78941d4b480ab6" - integrity sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q== +"@docusaurus/core@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.2.0.tgz#64c9ee31502c23b93c869f8188f73afaf5fd4867" + integrity sha512-Vd6XOluKQqzG12fEs9prJgDtyn6DPok9vmUWDR2E6/nV5Fl9SVkhEQOBxwObjk3kQh7OY7vguFaLh0jqdApWsA== dependencies: "@babel/core" "^7.18.6" "@babel/generator" "^7.18.7" @@ -1471,13 +1471,13 @@ "@babel/runtime" "^7.18.6" "@babel/runtime-corejs3" "^7.18.6" "@babel/traverse" "^7.18.8" - "@docusaurus/cssnano-preset" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" + "@docusaurus/cssnano-preset" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@slorber/static-site-generator-webpack-plugin" "^4.0.7" "@svgr/webpack" "^6.2.1" autoprefixer "^10.4.7" @@ -1533,33 +1533,33 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.1.0.tgz#5b42107769b7cbc61655496090bc262d7788d6ab" - integrity sha512-pRLewcgGhOies6pzsUROfmPStDRdFw+FgV5sMtLr5+4Luv2rty5+b/eSIMMetqUsmg3A9r9bcxHk9bKAKvx3zQ== +"@docusaurus/cssnano-preset@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.2.0.tgz#fc05044659051ae74ab4482afcf4a9936e81d523" + integrity sha512-mAAwCo4n66TMWBH1kXnHVZsakW9VAXJzTO4yZukuL3ro4F+JtkMwKfh42EG75K/J/YIFQG5I/Bzy0UH/hFxaTg== dependencies: cssnano-preset-advanced "^5.3.8" postcss "^8.4.14" postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" -"@docusaurus/logger@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.1.0.tgz#86c97e948f578814d3e61fc2b2ad283043cbe87a" - integrity sha512-uuJx2T6hDBg82joFeyobywPjSOIfeq05GfyKGHThVoXuXsu1KAzMDYcjoDxarb9CoHCI/Dor8R2MoL6zII8x1Q== +"@docusaurus/logger@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.2.0.tgz#ea2f7feda7b8675485933b87f06d9c976d17423f" + integrity sha512-DF3j1cA5y2nNsu/vk8AG7xwpZu6f5MKkPPMaaIbgXLnWGfm6+wkOeW7kNrxnM95YOhKUkJUophX69nGUnLsm0A== dependencies: chalk "^4.1.2" tslib "^2.4.0" -"@docusaurus/mdx-loader@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.1.0.tgz#3fca9576cc73a22f8e7d9941985590b9e47a8526" - integrity sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg== +"@docusaurus/mdx-loader@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.2.0.tgz#fd558f429e5d9403d284bd4214e54d9768b041a0" + integrity sha512-X2bzo3T0jW0VhUU+XdQofcEeozXOTmKQMvc8tUnWRdTnCvj4XEcBVdC3g+/jftceluiwSTNRAX4VBOJdNt18jA== dependencies: "@babel/parser" "^7.18.8" "@babel/traverse" "^7.18.8" - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" @@ -1574,13 +1574,13 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@docusaurus/module-type-aliases@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.1.0.tgz#322f8fd5b436af2154c0dddfa173435730e66261" - integrity sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ== +"@docusaurus/module-type-aliases@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.2.0.tgz#1e23e54a1bbb6fde1961e4fa395b1b69f4803ba5" + integrity sha512-wDGW4IHKoOr9YuJgy7uYuKWrDrSpsUSDHLZnWQYM9fN7D5EpSmYHjFruUpKWVyxLpD/Wh0rW8hYZwdjJIQUQCQ== dependencies: "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "2.1.0" + "@docusaurus/types" "2.2.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1588,18 +1588,18 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/plugin-content-blog@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.1.0.tgz#32b1a7cd4b0026f4a76fce4edc5cfdd0edb1ec42" - integrity sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-blog@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.2.0.tgz#dc55982e76771f4e678ac10e26d10e1da2011dc1" + integrity sha512-0mWBinEh0a5J2+8ZJXJXbrCk1tSTNf7Nm4tYAl5h2/xx+PvH/Bnu0V+7mMljYm/1QlDYALNIIaT/JcoZQFUN3w== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" cheerio "^1.0.0-rc.12" feed "^4.2.2" fs-extra "^10.1.0" @@ -1610,18 +1610,18 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-docs@2.1.0", "@docusaurus/plugin-content-docs@^2.0.0-beta.20": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.1.0.tgz#3fcdf258c13dde27268ce7108a102b74ca4c279b" - integrity sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-docs@2.2.0", "@docusaurus/plugin-content-docs@^2.0.0-beta.20": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.2.0.tgz#0fcb85226fcdb80dc1e2d4a36ef442a650dcc84d" + integrity sha512-BOazBR0XjzsHE+2K1wpNxz5QZmrJgmm3+0Re0EVPYFGW8qndCWGNtXW/0lGKhecVPML8yyFeAmnUCIs7xM2wPw== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@types/react-router-config" "^5.0.6" combine-promises "^1.1.0" fs-extra "^10.1.0" @@ -1632,84 +1632,84 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-pages@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.1.0.tgz#714d24f71d49dbfed888f50c15e975c2154c3ce8" - integrity sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-pages@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.2.0.tgz#e3f40408787bbe229545dd50595f87e1393bc3ae" + integrity sha512-+OTK3FQHk5WMvdelz8v19PbEbx+CNT6VSpx7nVOvMNs5yJCKvmqBJBQ2ZSxROxhVDYn+CZOlmyrC56NSXzHf6g== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" fs-extra "^10.1.0" tslib "^2.4.0" webpack "^5.73.0" -"@docusaurus/plugin-debug@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.1.0.tgz#b3145affb40e25cf342174638952a5928ddaf7dc" - integrity sha512-8wsDq3OIfiy6440KLlp/qT5uk+WRHQXIXklNHEeZcar+Of0TZxCNe2FBpv+bzb/0qcdP45ia5i5WmR5OjN6DPw== +"@docusaurus/plugin-debug@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.2.0.tgz#b38741d2c492f405fee01ee0ef2e0029cedb689a" + integrity sha512-p9vOep8+7OVl6r/NREEYxf4HMAjV8JMYJ7Bos5fCFO0Wyi9AZEo0sCTliRd7R8+dlJXZEgcngSdxAUo/Q+CJow== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" fs-extra "^10.1.0" react-json-view "^1.21.3" tslib "^2.4.0" -"@docusaurus/plugin-google-analytics@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.1.0.tgz#c9a7269817b38e43484d38fad9996e39aac4196c" - integrity sha512-4cgeqIly/wcFVbbWP03y1QJJBgH8W+Bv6AVbWnsXNOZa1yB3AO6hf3ZdeQH9x20v9T2pREogVgAH0rSoVnNsgg== +"@docusaurus/plugin-google-analytics@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.2.0.tgz#63c7137eff5a1208d2059fea04b5207c037d7954" + integrity sha512-+eZVVxVeEnV5nVQJdey9ZsfyEVMls6VyWTIj8SmX0k5EbqGvnIfET+J2pYEuKQnDIHxy+syRMoRM6AHXdHYGIg== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" tslib "^2.4.0" -"@docusaurus/plugin-google-gtag@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.1.0.tgz#e4f351dcd98b933538d55bb742650a2a36ca9a32" - integrity sha512-/3aDlv2dMoCeiX2e+DTGvvrdTA+v3cKQV3DbmfsF4ENhvc5nKV23nth04Z3Vq0Ci1ui6Sn80TkhGk/tiCMW2AA== +"@docusaurus/plugin-google-gtag@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.2.0.tgz#7b086d169ac5fe9a88aca10ab0fd2bf00c6c6b12" + integrity sha512-6SOgczP/dYdkqUMGTRqgxAS1eTp6MnJDAQMy8VCF1QKbWZmlkx4agHDexihqmYyCujTYHqDAhm1hV26EET54NQ== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" tslib "^2.4.0" -"@docusaurus/plugin-sitemap@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.1.0.tgz#b316bb9a42a1717845e26bd4e2d3071748a54b47" - integrity sha512-2Y6Br8drlrZ/jN9MwMBl0aoi9GAjpfyfMBYpaQZXimbK+e9VjYnujXlvQ4SxtM60ASDgtHIAzfVFBkSR/MwRUw== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-sitemap@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.2.0.tgz#876da60937886032d63143253d420db6a4b34773" + integrity sha512-0jAmyRDN/aI265CbWZNZuQpFqiZuo+5otk2MylU9iVrz/4J7gSc+ZJ9cy4EHrEsW7PV8s1w18hIEsmcA1YgkKg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" fs-extra "^10.1.0" sitemap "^7.1.1" tslib "^2.4.0" -"@docusaurus/preset-classic@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.1.0.tgz#45b23c8ec10c96ded9ece128fac3a39b10bcbc56" - integrity sha512-NQMnaq974K4BcSMXFSJBQ5itniw6RSyW+VT+6i90kGZzTwiuKZmsp0r9lC6BYAvvVMQUNJQwrETmlu7y2XKW7w== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/plugin-debug" "2.1.0" - "@docusaurus/plugin-google-analytics" "2.1.0" - "@docusaurus/plugin-google-gtag" "2.1.0" - "@docusaurus/plugin-sitemap" "2.1.0" - "@docusaurus/theme-classic" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-search-algolia" "2.1.0" - "@docusaurus/types" "2.1.0" +"@docusaurus/preset-classic@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.2.0.tgz#bece5a043eeb74430f7c6c7510000b9c43669eb7" + integrity sha512-yKIWPGNx7BT8v2wjFIWvYrS+nvN04W+UameSFf8lEiJk6pss0kL6SG2MRvyULiI3BDxH+tj6qe02ncpSPGwumg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/plugin-debug" "2.2.0" + "@docusaurus/plugin-google-analytics" "2.2.0" + "@docusaurus/plugin-google-gtag" "2.2.0" + "@docusaurus/plugin-sitemap" "2.2.0" + "@docusaurus/theme-classic" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-search-algolia" "2.2.0" + "@docusaurus/types" "2.2.0" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1719,23 +1719,23 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.1.0.tgz#d957a907ea8dd035c1cf911d0fbe91d8f24aef3f" - integrity sha512-xn8ZfNMsf7gaSy9+ClFnUu71o7oKgMo5noYSS1hy3svNifRTkrBp6+MReLDsmIaj3mLf2e7+JCBYKBFbaGzQng== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-translations" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/theme-classic@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.2.0.tgz#a048bb1bc077dee74b28bec25f4b84b481863742" + integrity sha512-kjbg/qJPwZ6H1CU/i9d4l/LcFgnuzeiGgMQlt6yPqKo0SOJIBMPuz7Rnu3r/WWbZFPi//o8acclacOzmXdUUEg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@mdx-js/react" "^1.6.22" clsx "^1.2.1" copy-text-to-clipboard "^3.0.1" @@ -1750,17 +1750,17 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-common@2.1.0", "@docusaurus/theme-common@^2.0.0-beta.20": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.1.0.tgz#dff4d5d1e29efc06125dc06f7b259f689bb3f24d" - integrity sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag== - dependencies: - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/utils" "2.1.0" +"@docusaurus/theme-common@2.2.0", "@docusaurus/theme-common@^2.0.0-beta.20": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.2.0.tgz#2303498d80448aafdd588b597ce9d6f4cfa930e4" + integrity sha512-R8BnDjYoN90DCL75gP7qYQfSjyitXuP9TdzgsKDmSFPNyrdE3twtPNa2dIN+h+p/pr+PagfxwWbd6dn722A1Dw== + dependencies: + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/utils" "2.2.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1770,19 +1770,19 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.1.0.tgz#e7cdf64b6f7a15b07c6dcf652fd308cfdaabb0ee" - integrity sha512-rNBvi35VvENhucslEeVPOtbAzBdZY/9j55gdsweGV5bYoAXy4mHB6zTGjealcB4pJ6lJY4a5g75fXXMOlUqPfg== +"@docusaurus/theme-search-algolia@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.2.0.tgz#77fd9f7a600917e6024fe3ac7fb6cfdf2ce84737" + integrity sha512-2h38B0tqlxgR2FZ9LpAkGrpDWVdXZ7vltfmTdX+4RsDs3A7khiNsmZB+x/x6sA4+G2V2CvrsPMlsYBy5X+cY1w== dependencies: "@docsearch/react" "^3.1.1" - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-translations" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" algoliasearch "^4.13.1" algoliasearch-helper "^3.10.0" clsx "^1.2.1" @@ -1792,10 +1792,10 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.1.0.tgz#ce9a2955afd49bff364cfdfd4492b226f6dd3b6e" - integrity sha512-07n2akf2nqWvtJeMy3A+7oSGMuu5F673AovXVwY0aGAux1afzGCiqIFlYW3EP0CujvDJAEFSQi/Tetfh+95JNg== +"@docusaurus/theme-translations@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.2.0.tgz#5fbd4693679806f80c26eeae1381e1f2c23d83e7" + integrity sha512-3T140AG11OjJrtKlY4pMZ5BzbGRDjNs2co5hJ6uYJG1bVWlhcaFGqkaZ5lCgKflaNHD7UHBHU9Ec5f69jTdd6w== dependencies: fs-extra "^10.1.0" tslib "^2.4.0" @@ -1808,10 +1808,10 @@ fs-extra "^10.1.0" tslib "^2.4.0" -"@docusaurus/types@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.1.0.tgz#01e13cd9adb268fffe87b49eb90302d5dc3edd6b" - integrity sha512-BS1ebpJZnGG6esKqsjtEC9U9qSaPylPwlO7cQ1GaIE7J/kMZI3FITnNn0otXXu7c7ZTqhb6+8dOrG6fZn6fqzQ== +"@docusaurus/types@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.2.0.tgz#02c577a4041ab7d058a3c214ccb13647e21a9857" + integrity sha512-b6xxyoexfbRNRI8gjblzVOnLr4peCJhGbYGPpJ3LFqpi5nsFfoK4mmDLvWdeah0B7gmJeXabN7nQkFoqeSdmOw== dependencies: "@types/history" "^4.7.11" "@types/react" "*" @@ -1822,30 +1822,30 @@ webpack "^5.73.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.1.0", "@docusaurus/utils-common@^2.0.0-beta.20": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.1.0.tgz#248434751096f8c6c644ed65eed2a5a070a227f8" - integrity sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg== +"@docusaurus/utils-common@2.2.0", "@docusaurus/utils-common@^2.0.0-beta.20": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.2.0.tgz#a401c1b93a8697dd566baf6ac64f0fdff1641a78" + integrity sha512-qebnerHp+cyovdUseDQyYFvMW1n1nv61zGe5JJfoNQUnjKuApch3IVsz+/lZ9a38pId8kqehC1Ao2bW/s0ntDA== dependencies: tslib "^2.4.0" -"@docusaurus/utils-validation@2.1.0", "@docusaurus/utils-validation@^2.0.0-beta.20": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.1.0.tgz#c8cf1d8454d924d9a564fefa86436268f43308e3" - integrity sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ== +"@docusaurus/utils-validation@2.2.0", "@docusaurus/utils-validation@^2.0.0-beta.20": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.2.0.tgz#04d4d103137ad0145883971d3aa497f4a1315f25" + integrity sha512-I1hcsG3yoCkasOL5qQAYAfnmVoLei7apugT6m4crQjmDGxq+UkiRrq55UqmDDyZlac/6ax/JC0p+usZ6W4nVyg== dependencies: - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" joi "^17.6.0" js-yaml "^4.1.0" tslib "^2.4.0" -"@docusaurus/utils@2.1.0", "@docusaurus/utils@^2.0.0-beta.20": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.1.0.tgz#b77b45b22e61eb6c2dcad8a7e96f6db0409b655f" - integrity sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A== +"@docusaurus/utils@2.2.0", "@docusaurus/utils@^2.0.0-beta.20": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.2.0.tgz#3d6f9b7a69168d5c92d371bf21c556a4f50d1da6" + integrity sha512-oNk3cjvx7Tt1Lgh/aeZAmFpGV2pDr5nHKrBVx6hTkzGhrnMuQqLt6UPlQjdYQ3QHXwyF/ZtZMO1D5Pfi0lu7SA== dependencies: - "@docusaurus/logger" "2.1.0" + "@docusaurus/logger" "2.2.0" "@svgr/webpack" "^6.2.1" file-loader "^6.2.0" fs-extra "^10.1.0"