16 changed files with 18477 additions and 0 deletions
File diff suppressed because it is too large
@ -0,0 +1,196 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../discord.rst:4 |
|||
msgid "Creating a Bot Account" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:6 |
|||
msgid "" |
|||
"In order to work with the library and the Discord API in general, we must" |
|||
" first create a Discord Bot account." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:8 |
|||
msgid "Creating a Bot account is a pretty straightforward process." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:10 |
|||
msgid "" |
|||
"Make sure you're logged on to the `Discord website " |
|||
"<https://discordapp.com>`_." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:11 |
|||
msgid "" |
|||
"Navigate to the `application page " |
|||
"<https://discordapp.com/developers/applications/me>`_" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:12 |
|||
msgid "Click on the \"New App\" button." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:17 |
|||
msgid "" |
|||
"Give the application a name and a description if wanted and click " |
|||
"\"Create App\"." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:19 |
|||
msgid "" |
|||
"You can also put an avatar you want your bot to use, don't worry you can " |
|||
"change this later." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:20 |
|||
msgid "**Leave the Redirect URI(s) blank** unless are creating a service." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:24 |
|||
msgid "" |
|||
"Create a Bot User by clicking on the accompanying button and confirming " |
|||
"it." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:28 |
|||
msgid "" |
|||
"Make sure that **Public Bot** is ticked if you want others to invite your" |
|||
" bot." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:30 |
|||
msgid "" |
|||
"You should also make sure that **Require OAuth2 Code Grant** is unchecked" |
|||
" unless you are developing a service that needs it. If you're unsure, " |
|||
"then **leave it unchecked**." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:36 |
|||
msgid "Click to reveal the token." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:38 |
|||
msgid "**This is not the Client Secret**" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:39 |
|||
msgid "Look at the image above to see where the **Token** is." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:43 |
|||
msgid "" |
|||
"It should be worth noting that this token is essentially your bot's " |
|||
"password. You should **never** share this to someone else. In doing so, " |
|||
"someone can log in to your bot and do malicious things, such as leaving " |
|||
"servers, ban all members inside a server, or pinging everyone " |
|||
"maliciously." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:48 |
|||
msgid "The possibilities are endless, so **do not share this token.**" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:50 |
|||
msgid "" |
|||
"And that's it. You now have a bot account and you can login with that " |
|||
"token." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:55 |
|||
msgid "Inviting Your Bot" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:57 |
|||
msgid "So you've made a Bot User but it's not actually in any server." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:59 |
|||
msgid "If you want to invite your bot you must create an invite URL for your bot." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:61 |
|||
msgid "" |
|||
"First, you must fetch the Client ID of the Bot. You can find this in the " |
|||
"Bot's application page." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:66 |
|||
msgid "Copy paste that into the pre-formatted URL:" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:72 |
|||
msgid "" |
|||
"Replace ``YOUR_CLIENT_ID`` with the Client ID we got in the previous " |
|||
"step. For example, in the image above our client ID is 312777964700041216" |
|||
" so the resulting URL would be " |
|||
"https://discordapp.com/oauth2/authorize?client_id=312777964700041216&scope=bot&permissions=0" |
|||
" (note that this bot has been deleted)." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:77 |
|||
msgid "" |
|||
"Now you can click the link and invite your bot to any server you have " |
|||
"\"Manage Server\" permissions on." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:80 |
|||
msgid "Adding Permissions" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:82 |
|||
msgid "" |
|||
"In the above URL, you might have noticed an interesting bit, the " |
|||
"``permissions=0`` fragment." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:84 |
|||
msgid "" |
|||
"Bot accounts can request specific permissions to be granted upon joining." |
|||
" When the bot joins the guild, they will be granted a managed role that " |
|||
"contains the permissions you requested. If the permissions is 0, then no " |
|||
"special role is created." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:88 |
|||
msgid "" |
|||
"This ``permissions`` value is calculated based on bit-wise arithmetic. " |
|||
"Thankfully, people have created a calculator that makes it easy to " |
|||
"calculate the permissions necessary visually." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:91 |
|||
msgid "https://discordapi.com/permissions.html" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:92 |
|||
msgid "https://finitereality.github.io/permissions/" |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:94 |
|||
msgid "Feel free to use whichever is easier for you to grasp." |
|||
msgstr "" |
|||
|
|||
#: ../../discord.rst:96 |
|||
msgid "" |
|||
"If you want to generate this URL dynamically at run-time inside your bot " |
|||
"and using the :class:`discord.Permissions` interface, you can use " |
|||
":func:`discord.utils.oauth_url`." |
|||
msgstr "" |
|||
|
File diff suppressed because it is too large
@ -0,0 +1,665 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../ext/commands/commands.rst:6 |
|||
msgid "Commands" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:8 |
|||
msgid "" |
|||
"One of the most appealing aspect of the command extension is how easy it " |
|||
"is to define commands and how you can arbitrarily nest groups and " |
|||
"commands to have a rich sub-command system." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:11 |
|||
msgid "" |
|||
"Commands are defined by attaching it to a regular Python function. The " |
|||
"command is then invoked by the user using a similar signature to the " |
|||
"Python function." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:14 |
|||
msgid "For example, in the given command definition:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:22 |
|||
msgid "With the following prefix (``$``), it would be invoked by the user via:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:28 |
|||
msgid "" |
|||
"A command must always have at least one parameter, ``ctx``, which is the " |
|||
":class:`.Context` as the first one." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:30 |
|||
msgid "" |
|||
"There are two ways of registering a command. The first one is by using " |
|||
":meth:`.Bot.command` decorator, as seen in the example above. The second " |
|||
"is using the :func:`~ext.commands.command` decorator followed by " |
|||
":meth:`.Bot.add_command` on the instance." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:34 |
|||
msgid "Essentially, these two are equivalent: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:52 |
|||
msgid "" |
|||
"Since the :meth:`.Bot.command` decorator is shorter and easier to " |
|||
"comprehend, it will be the one used throughout the documentation here." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:55 |
|||
msgid "" |
|||
"Any parameter that is accepted by the :class:`.Command` constructor can " |
|||
"be passed into the decorator. For example, to change the name to " |
|||
"something other than the function would be as simple as doing this:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:65 |
|||
msgid "Parameters" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:67 |
|||
msgid "" |
|||
"Since we define commands by making Python functions, we also define the " |
|||
"argument passing behaviour by the function parameters." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:70 |
|||
msgid "" |
|||
"Certain parameter types do different things in the user side and most " |
|||
"forms of parameter types are supported." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:73 |
|||
msgid "Positional" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:75 |
|||
msgid "" |
|||
"The most basic form of parameter passing is the positional parameter. " |
|||
"This is where we pass a parameter as-is:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:84 |
|||
msgid "" |
|||
"On the bot using side, you can provide positional arguments by just " |
|||
"passing a regular string:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:88 |
|||
msgid "To make use of a word with spaces in between, you should quote it:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:92 |
|||
msgid "" |
|||
"As a note of warning, if you omit the quotes, you will only get the first" |
|||
" word:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:96 |
|||
msgid "" |
|||
"Since positional arguments are just regular Python arguments, you can " |
|||
"have as many as you want:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:105 |
|||
msgid "Variable" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:107 |
|||
msgid "" |
|||
"Sometimes you want users to pass in an undetermined number of parameters." |
|||
" The library supports this similar to how variable list parameters are " |
|||
"done in Python:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:116 |
|||
msgid "" |
|||
"This allows our user to accept either one or many arguments as they " |
|||
"please. This works similar to positional arguments, so multi-word " |
|||
"parameters should be quoted." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:119 |
|||
msgid "For example, on the bot side:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:123 |
|||
msgid "" |
|||
"If the user wants to input a multi-word argument, they have to quote it " |
|||
"like earlier:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:127 |
|||
msgid "" |
|||
"Do note that similar to the Python function behaviour, a user can " |
|||
"technically pass no arguments at all:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:132 |
|||
msgid "" |
|||
"Since the ``args`` variable is a `tuple " |
|||
"<https://docs.python.org/3/library/stdtypes.html#sequence-types-list-" |
|||
"tuple-range>`_, you can do anything you would usually do with one." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:136 |
|||
msgid "Keyword-Only Arguments" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:138 |
|||
msgid "" |
|||
"When you want to handle parsing of the argument yourself or do not feel " |
|||
"like you want to wrap multi-word user input into quotes, you can ask the " |
|||
"library to give you the rest as a single argument. We do this by using a " |
|||
"**keyword-only argument**, seen below:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:150 |
|||
msgid "You can only have one keyword-only argument due to parsing ambiguities." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:152 |
|||
msgid "On the bot side, we do not need to quote input with spaces:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:156 |
|||
msgid "Do keep in mind that wrapping it in quotes leaves it as-is:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:160 |
|||
msgid "" |
|||
"By default, the keyword-only arguments are stripped of white space to " |
|||
"make it easier to work with. This behaviour can be toggled by the " |
|||
":attr:`.Command.rest_is_raw` argument in the decorator." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:166 |
|||
msgid "Invocation Context" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:168 |
|||
msgid "" |
|||
"As seen earlier, every command must take at least a single parameter, " |
|||
"called the :class:`~ext.commands.Context`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:170 |
|||
msgid "" |
|||
"This parameter gives you access to something called the \"invocation " |
|||
"context\". Essentially all the information you need to know how the " |
|||
"command was executed. It contains a lot of useful information:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:173 |
|||
msgid ":attr:`.Context.guild` to fetch the :class:`Guild` of the command, if any." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:174 |
|||
msgid ":attr:`.Context.message` to fetch the :class:`Message` of the command." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:175 |
|||
msgid "" |
|||
":attr:`.Context.author` to fetch the :class:`Member` or :class:`User` " |
|||
"that called the command." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:176 |
|||
msgid "" |
|||
":meth:`.Context.send` to send a message to the channel the command was " |
|||
"used in." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:178 |
|||
msgid "" |
|||
"The context implements the :class:`abc.Messageable` interface, so " |
|||
"anything you can do on a :class:`abc.Messageable` you can do on the " |
|||
":class:`~ext.commands.Context`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:182 |
|||
msgid "Converters" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:184 |
|||
msgid "" |
|||
"Adding bot arguments with function parameters is only the first step in " |
|||
"defining your bot's command interface. To actually make use of the " |
|||
"arguments, we usually want to convert the data into a target type. We " |
|||
"call these :ref:`ext_commands_api_converters`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:188 |
|||
msgid "Converters come in a few flavours:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:190 |
|||
msgid "" |
|||
"A regular callable object that takes an argument as a sole parameter and " |
|||
"returns a different type." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:192 |
|||
msgid "" |
|||
"These range from your own function, to something like :class:`bool` or " |
|||
":class:`int`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:194 |
|||
msgid "A custom class that inherits from :class:`~ext.commands.Converter`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:197 |
|||
msgid "Basic Converters" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:199 |
|||
msgid "" |
|||
"At its core, a basic converter is a callable that takes in an argument " |
|||
"and turns it into something else." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:201 |
|||
msgid "" |
|||
"For example, if we wanted to add two numbers together, we could request " |
|||
"that they are turned into integers for us by specifying the converter:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:210 |
|||
msgid "" |
|||
"We specify converters by using something called a **function " |
|||
"annotation**. This is a Python 3 exclusive feature that was introduced in" |
|||
" :pep:`3107`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:213 |
|||
msgid "" |
|||
"This works with any callable, such as a function that would convert a " |
|||
"string to all upper-case:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:227 |
|||
msgid "Advanced Converters" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:229 |
|||
msgid "" |
|||
"Sometimes a basic converter doesn't have enough information that we need." |
|||
" For example, sometimes we want to get some information from the " |
|||
":class:`Message` that called the command or we want to do some " |
|||
"asynchronous processing." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:232 |
|||
msgid "" |
|||
"For this, the library provides the :class:`~ext.commands.Converter` " |
|||
"interface. This allows you to have access to the :class:`.Context` and " |
|||
"have the callable be asynchronous. Defining a custom converter using this" |
|||
" interface requires overriding a single method, " |
|||
":meth:`.Converter.convert`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:236 |
|||
msgid "An example converter:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:251 |
|||
msgid "" |
|||
"The converter provided can either be constructed or not. Essentially " |
|||
"these two are equivalent:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:265 |
|||
msgid "" |
|||
"Having the possibility of the converter be constructed allows you to set " |
|||
"up some state in the converter's ``__init__`` for fine tuning the " |
|||
"converter. An example of this is actually in the library, " |
|||
":class:`~ext.commands.clean_content`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:281 |
|||
msgid "" |
|||
"If a converter fails to convert an argument to its designated target " |
|||
"type, the :exc:`.BadArgument` exception must be raised." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:285 |
|||
msgid "Discord Converters" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:287 |
|||
msgid "" |
|||
"Working with :ref:`discord_api_models` is a fairly common thing when " |
|||
"defining commands, as a result the library makes working with them easy." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:290 |
|||
msgid "" |
|||
"For example, to receive a :class:`Member`, you can just pass it as a " |
|||
"converter:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:298 |
|||
msgid "" |
|||
"When this command is executed, it attempts to convert the string given " |
|||
"into a :class:`Member` and then passes it as a parameter for the " |
|||
"function. This works by checking if the string is a mention, an ID, a " |
|||
"nickname, a username + discriminator, or just a regular username. The " |
|||
"default set of converters have been written to be as easy to use as " |
|||
"possible." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:302 |
|||
msgid "A lot of discord models work out of the gate as a parameter:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:304 ../../ext/commands/commands.rst:325 |
|||
msgid ":class:`Member`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:305 ../../ext/commands/commands.rst:327 |
|||
msgid ":class:`User`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:306 ../../ext/commands/commands.rst:329 |
|||
msgid ":class:`TextChannel`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:307 ../../ext/commands/commands.rst:331 |
|||
#: ../../ext/commands/commands.rst:333 |
|||
msgid ":class:`VoiceChannel`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:308 |
|||
msgid ":class:`CategoryChannel`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:309 ../../ext/commands/commands.rst:335 |
|||
msgid ":class:`Role`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:310 ../../ext/commands/commands.rst:337 |
|||
msgid ":class:`Invite`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:311 ../../ext/commands/commands.rst:339 |
|||
msgid ":class:`Game`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:312 ../../ext/commands/commands.rst:341 |
|||
msgid ":class:`Emoji`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:313 ../../ext/commands/commands.rst:343 |
|||
msgid ":class:`PartialEmoji`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:314 ../../ext/commands/commands.rst:345 |
|||
msgid ":class:`Colour`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:316 |
|||
msgid "" |
|||
"Having any of these set as the converter will intelligently convert the " |
|||
"argument to the appropriate target type you specify." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:319 |
|||
msgid "" |
|||
"Under the hood, these are implemented by the " |
|||
":ref:`ext_commands_adv_converters` interface. A table of the equivalent " |
|||
"converter is given below:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:323 |
|||
msgid "Discord Class" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:323 |
|||
msgid "Converter" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:325 |
|||
msgid ":class:`~ext.commands.MemberConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:327 |
|||
msgid ":class:`~ext.commands.UserConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:329 |
|||
msgid ":class:`~ext.commands.TextChannelConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:331 |
|||
msgid ":class:`~ext.commands.VoiceChannelConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:333 |
|||
msgid ":class:`~ext.commands.CategoryChannelConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:335 |
|||
msgid ":class:`~ext.commands.RoleConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:337 |
|||
msgid ":class:`~ext.commands.InviteConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:339 |
|||
msgid ":class:`~ext.commands.GameConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:341 |
|||
msgid ":class:`~ext.commands.EmojiConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:343 |
|||
msgid ":class:`~ext.commands.PartialEmojiConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:345 |
|||
msgid ":class:`~ext.commands.ColourConverter`" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:348 |
|||
msgid "" |
|||
"By providing the converter it allows us to use them as building blocks " |
|||
"for another converter:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:363 |
|||
msgid "Inline Advanced Converters" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:365 |
|||
msgid "" |
|||
"If we don't want to inherit from :class:`~ext.commands.Converter`, we can" |
|||
" still provide a converter that has the advanced functionalities of an " |
|||
"advanced converter and save us from specifying two types." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:368 |
|||
msgid "" |
|||
"For example, a common idiom would be to have a class and a converter for " |
|||
"that class:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:394 |
|||
msgid "" |
|||
"This can get tedious, so an inline advanced converter is possible through" |
|||
" a ``classmethod`` inside the type:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:423 |
|||
msgid "Error Handling" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:425 |
|||
msgid "" |
|||
"When our commands fail to either parse we will, by default, receive a " |
|||
"noisy error in ``stderr`` of our console that tells us that an error has " |
|||
"happened and has been silently ignored." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:428 |
|||
msgid "" |
|||
"In order to handle our errors, we must use something called an error " |
|||
"handler. There is a global error handler, called :func:`on_command_error`" |
|||
" which works like any other event in the :ref:`discord-api-events`. This " |
|||
"global error handler is called for every error reached." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:432 |
|||
msgid "" |
|||
"Most of the time however, we want to handle an error local to the command" |
|||
" itself. Luckily, commands come with local error handlers that allow us " |
|||
"to do just that. First we decorate an error handler function with " |
|||
":meth:`.Command.error`:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:448 |
|||
msgid "" |
|||
"The first parameter of the error handler is the :class:`.Context` while " |
|||
"the second one is an exception that is derived from " |
|||
":exc:`~ext.commands.CommandError`. A list of errors is found in the " |
|||
":ref:`ext_commands_api_errors` page of the documentation." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:452 |
|||
msgid "Checks" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:454 |
|||
msgid "" |
|||
"There are cases when we don't want a user to use our commands. They don't" |
|||
" have permissions to do so or maybe we blocked them from using our bot " |
|||
"earlier. The commands extension comes with full support for these things " |
|||
"in a concept called a :ref:`ext_commands_api_checks`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:458 |
|||
msgid "" |
|||
"A check is a basic predicate that can take in a :class:`.Context` as its " |
|||
"sole parameter. Within it, you have the following options:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:461 |
|||
msgid "Return ``True`` to signal that the person can run the command." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:462 |
|||
msgid "Return ``False`` to signal that the person cannot run the command." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:463 |
|||
msgid "" |
|||
"Raise a :exc:`~ext.commands.CommandError` derived exception to signal the" |
|||
" person cannot run the command." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:465 |
|||
msgid "" |
|||
"This allows you to have custom error messages for you to handle in the " |
|||
":ref:`error handlers <ext_commands_error_handler>`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:468 |
|||
msgid "" |
|||
"To register a check for a command, we would have two ways of doing so. " |
|||
"The first is using the :meth:`~ext.commands.check` decorator. For " |
|||
"example:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:482 |
|||
msgid "" |
|||
"This would only evaluate the command if the function ``is_owner`` returns" |
|||
" ``True``. Sometimes we re-use a check often and want to split it into " |
|||
"its own decorator. To do that we can just add another level of depth:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:499 |
|||
msgid "" |
|||
"Since an owner check is so common, the library provides it for you " |
|||
"(:func:`~ext.commands.is_owner`):" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:509 |
|||
msgid "When multiple checks are specified, **all** of them must be ``True``:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:524 |
|||
msgid "" |
|||
"If any of those checks fail in the example above, then the command will " |
|||
"not be run." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:526 |
|||
msgid "" |
|||
"When an error happens, the error is propagated to the :ref:`error " |
|||
"handlers <ext_commands_error_handler>`. If you do not raise a custom " |
|||
":exc:`~ext.commands.CommandError` derived exception, then it will get " |
|||
"wrapped up into a :exc:`~ext.commands.CheckFailure` exception as so:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:543 |
|||
msgid "" |
|||
"If you want a more robust error system, you can derive from the exception" |
|||
" and raise it instead of returning ``False``:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:568 |
|||
msgid "" |
|||
"Since having a ``guild_only`` decorator is pretty common, it comes built-" |
|||
"in via :func:`~ext.commands.guild_only`." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:571 |
|||
msgid "Global Checks" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:573 |
|||
msgid "" |
|||
"Sometimes we want to apply a check to **every** command, not just certain" |
|||
" commands. The library supports this as well using the global check " |
|||
"concept." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:576 |
|||
msgid "" |
|||
"Global checks work similarly to regular checks except they are registered" |
|||
" with the :func:`.Bot.check` decorator." |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:578 |
|||
msgid "For example, to block all DMs we could do the following:" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/commands.rst:588 |
|||
msgid "" |
|||
"Be careful on how you write your global checks, as it could also lock you" |
|||
" out of your own bot." |
|||
msgstr "" |
|||
|
@ -0,0 +1,33 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../ext/commands/index.rst:2 |
|||
msgid "``discord.ext.commands`` -- Bot commands framework" |
|||
msgstr "" |
|||
|
|||
#: ../../ext/commands/index.rst:4 |
|||
msgid "" |
|||
"``discord.py`` offers a lower level aspect on interacting with Discord. " |
|||
"Often times, the library is used for the creation of bots. However this " |
|||
"task can be daunting and confusing to get correctly the first time. Many " |
|||
"times there comes a repetition in creating a bot command framework that " |
|||
"is extensible, flexible, and powerful. For this reason, ``discord.py`` " |
|||
"comes with an extension library that handles this for you." |
|||
msgstr "" |
|||
|
@ -0,0 +1,405 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../faq.rst:5 |
|||
msgid "Frequently Asked Questions" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:7 |
|||
msgid "" |
|||
"This is a list of Frequently Asked Questions regarding using " |
|||
"``discord.py`` and its extension modules. Feel free to suggest a new " |
|||
"question or submit one via pull requests." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:11 |
|||
msgid "Questions" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:14 |
|||
msgid "Coroutines" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:16 |
|||
msgid "Questions regarding coroutines and asyncio belong here." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:19 |
|||
msgid "What is a coroutine?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:21 |
|||
msgid "" |
|||
"A coroutine is a function that must be invoked with ``await`` or ``yield " |
|||
"from``. When Python encounters an ``await`` it stops the function's " |
|||
"execution at that point and works on other things until it comes back to " |
|||
"that point and finishes off its work. This allows for your program to be " |
|||
"doing multiple things at the same time without using threads or " |
|||
"complicated multiprocessing." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:26 |
|||
msgid "" |
|||
"**If you forget to await a coroutine then the coroutine will not run. " |
|||
"Never forget to await a coroutine.**" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:29 |
|||
msgid "Where can I use ``await``\\?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:31 |
|||
msgid "" |
|||
"You can only use ``await`` inside ``async def`` functions and nowhere " |
|||
"else." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:34 |
|||
msgid "What does \"blocking\" mean?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:36 |
|||
msgid "" |
|||
"In asynchronous programming a blocking call is essentially all the parts " |
|||
"of the function that are not ``await``. Do not despair however, because " |
|||
"not all forms of blocking are bad! Using blocking calls is inevitable, " |
|||
"but you must work to make sure that you don't excessively block " |
|||
"functions. Remember, if you block for too long then your bot will freeze " |
|||
"since it has not stopped the function's execution at that point to do " |
|||
"other things." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:41 |
|||
msgid "" |
|||
"A common source of blocking for too long is something like " |
|||
":func:`time.sleep`. Don't do that. Use :func:`asyncio.sleep` instead. " |
|||
"Similar to this example: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:50 |
|||
msgid "" |
|||
"Another common source of blocking for too long is using HTTP requests " |
|||
"with the famous module ``requests``. While ``requests`` is an amazing " |
|||
"module for non-asynchronous programming, it is not a good choice for " |
|||
":mod:`asyncio` because certain requests can block the event loop too " |
|||
"long. Instead, use the ``aiohttp`` library which is installed on the side" |
|||
" with this library." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:54 |
|||
msgid "Consider the following example: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:70 |
|||
msgid "General" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:72 |
|||
msgid "General questions regarding library usage belong here." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:75 |
|||
msgid "How do I set the \"Playing\" status?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:77 |
|||
msgid "" |
|||
"There is a method for this under :class:`Client` called " |
|||
":meth:`Client.change_presence`. The relevant aspect of this is its " |
|||
"``game`` keyword argument which takes in a :class:`Game` object. Putting " |
|||
"both of these pieces of info together, you get the following: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:84 |
|||
msgid "How do I send a message to a specific channel?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:86 |
|||
msgid "" |
|||
"You must fetch the channel directly and then call the appropriate method." |
|||
" Example: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:92 |
|||
msgid "How do I upload an image?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:94 |
|||
msgid "To upload something to Discord you have to use the :class:`File` object." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:96 |
|||
msgid "" |
|||
"A :class:`File` accepts two parameters, the file-like object (or file " |
|||
"path) and the filename to pass to Discord when uploading." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:99 |
|||
msgid "If you want to upload an image it's as simple as: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:103 |
|||
msgid "If you have a file-like object you can do as follows: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:108 |
|||
msgid "" |
|||
"To upload multiple files, you can use the ``files`` keyword argument " |
|||
"instead of ``file``\\: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:116 |
|||
msgid "" |
|||
"If you want to upload something from a URL, you will have to use an HTTP " |
|||
"request using ``aiohttp`` and then pass an :class:`io.BytesIO` instance " |
|||
"to :class:`File` like so:" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:133 |
|||
msgid "How can I add a reaction to a message?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:135 |
|||
msgid "You use the :meth:`Message.add_reaction` method." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:137 |
|||
msgid "" |
|||
"If you want to use unicode emoji, you must pass a valid unicode code " |
|||
"point in a string. In your code, you can write this in a few different " |
|||
"ways:" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:139 |
|||
msgid "``'👍'``" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:140 |
|||
msgid "``'\\U0001F44D'``" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:141 |
|||
msgid "``'\\N{THUMBS UP SIGN}'``" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:143 ../../faq.rst:154 ../../faq.rst:218 |
|||
msgid "Quick example: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:147 |
|||
msgid "" |
|||
"In case you want to use emoji that come from a message, you already get " |
|||
"their code points in the content without needing to do anything special. " |
|||
"You **cannot** send ``':thumbsup:'`` style shorthands." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:150 |
|||
msgid "" |
|||
"For custom emoji, you should pass an instance of :class:`Emoji`. You can " |
|||
"also pass a ``'name:id'`` string, but if you can use said emoji, you " |
|||
"should be able to use :meth:`Client.get_emoji` to get an emoji via ID or " |
|||
"use :func:`utils.find`/ :func:`utils.get` on :attr:`Client.emojis` or " |
|||
":attr:`Guild.emojis` collections." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:166 |
|||
msgid "How do I pass a coroutine to the player's \"after\" function?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:168 |
|||
msgid "" |
|||
"The library's music player launches on a separate thread, ergo it does " |
|||
"not execute inside a coroutine. This does not mean that it is not " |
|||
"possible to call a coroutine in the ``after`` parameter. To do so you " |
|||
"must pass a callable that wraps up a couple of aspects." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:172 |
|||
msgid "" |
|||
"The first gotcha that you must be aware of is that calling a coroutine is" |
|||
" not a thread-safe operation. Since we are technically in another thread," |
|||
" we must take caution in calling thread-safe operations so things do not " |
|||
"bug out. Luckily for us, :mod:`asyncio` comes with a " |
|||
":func:`asyncio.run_coroutine_threadsafe` function that allows us to call " |
|||
"a coroutine from another thread." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:177 |
|||
msgid "" |
|||
"However, this function returns a :class:`concurrent.Future` and to " |
|||
"actually call it we have to fetch its result. Putting all of this " |
|||
"together we can do the following: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:192 |
|||
msgid "How do I run something in the background?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:194 |
|||
msgid "" |
|||
"`Check the background_task.py example. " |
|||
"<https://github.com/Rapptz/discord.py/blob/rewrite/examples/background_task.py>`_" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:197 |
|||
msgid "How do I get a specific model?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:199 |
|||
msgid "" |
|||
"There are multiple ways of doing this. If you have a specific model's ID " |
|||
"then you can use one of the following functions:" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:202 |
|||
msgid ":meth:`Client.get_channel`" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:203 |
|||
msgid ":meth:`Client.get_guild`" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:204 |
|||
msgid ":meth:`Client.get_user`" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:205 |
|||
msgid ":meth:`Client.get_emoji`" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:206 |
|||
msgid ":meth:`Guild.get_member`" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:207 |
|||
msgid ":meth:`Guild.get_channel`" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:209 |
|||
msgid "The following use an HTTP request:" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:211 |
|||
msgid ":meth:`abc.Messageable.get_message`" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:212 |
|||
msgid ":meth:`Client.get_user_info`" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:215 |
|||
msgid "" |
|||
"If the functions above do not help you, then use of :func:`utils.find` or" |
|||
" :func:`utils.get` would serve some use in finding specific models." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:229 |
|||
msgid "Commands Extension" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:231 |
|||
msgid "Questions regarding ``discord.ext.commands`` belong here." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:234 |
|||
msgid "Is there any documentation for this?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:236 |
|||
msgid "" |
|||
"Not at the moment. Writing documentation for stuff takes time. A lot of " |
|||
"people get by reading the docstrings in the source code. Others get by " |
|||
"via asking questions in the `Discord server <https://discord.gg/discord-" |
|||
"api>`_. Others look at the source code of `other existing bots " |
|||
"<https://github.com/Rapptz/RoboDanny>`_." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:240 |
|||
msgid "" |
|||
"There is a `basic example " |
|||
"<https://github.com/Rapptz/discord.py/blob/rewrite/examples/basic_bot.py>`_" |
|||
" showcasing some functionality." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:243 |
|||
msgid "" |
|||
"**Documentation is being worked on, it will just take some time to polish" |
|||
" it**." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:246 |
|||
msgid "Why does ``on_message`` make my commands stop working?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:248 |
|||
msgid "" |
|||
"Overriding the default provided ``on_message`` forbids any extra commands" |
|||
" from running. To fix this, add a ``bot.process_commands(message)`` line " |
|||
"at the end of your ``on_message``. For example: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:258 |
|||
msgid "Why do my arguments require quotes?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:260 |
|||
msgid "In a simple command defined as: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:266 |
|||
msgid "" |
|||
"Calling it via ``?echo a b c`` will only fetch the first argument and " |
|||
"disregard the rest. To fix this you should either call it via ``?echo \"a" |
|||
" b c\"`` or change the signature to have \"consume rest\" behaviour. " |
|||
"Example: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:273 |
|||
msgid "This will allow you to use ``?echo a b c`` without needing the quotes." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:276 |
|||
msgid "How do I get the original ``message``\\?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:278 |
|||
msgid "" |
|||
"The :class:`~ext.commands.Context` contains an attribute, " |
|||
":attr:`~.Context.message` to get the original message." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:281 ../../faq.rst:294 |
|||
msgid "Example: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:289 |
|||
msgid "How do I make a subcommand?" |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:291 |
|||
msgid "" |
|||
"Use the ``group`` decorator. This will transform the callback into a " |
|||
"``Group`` which will allow you to add commands into the group operating " |
|||
"as \"subcommands\". These groups can be arbitrarily nested as well." |
|||
msgstr "" |
|||
|
|||
#: ../../faq.rst:305 |
|||
msgid "This could then be used as ``?git push origin master``." |
|||
msgstr "" |
|||
|
@ -0,0 +1,87 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../index.rst:7 |
|||
msgid "Welcome to discord.py" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:11 |
|||
msgid "" |
|||
"discord.py is a modern, easy to use, feature-rich, and async ready API " |
|||
"wrapper for Discord." |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:14 |
|||
msgid "**Features:**" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:16 |
|||
msgid "Modern Pythonic API using ``async``\\/``await`` syntax" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:17 |
|||
msgid "Sane rate limit handling that prevents 429s" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:18 |
|||
msgid "Implements the entire Discord API" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:19 |
|||
msgid "Command extension to aid with bot creation" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:20 |
|||
msgid "Easy to use with an object oriented design" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:21 |
|||
msgid "Optimised for both speed and memory" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:24 |
|||
msgid "Documentation Contents" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:36 |
|||
msgid "Extensions" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:45 |
|||
msgid "Additional Information" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:54 |
|||
msgid "" |
|||
"If you still can't find what you're looking for, try in one of the " |
|||
"following pages:" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:56 |
|||
msgid ":ref:`genindex`" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:57 |
|||
msgid ":ref:`modindex`" |
|||
msgstr "" |
|||
|
|||
#: ../../index.rst:58 |
|||
msgid ":ref:`search`" |
|||
msgstr "" |
|||
|
@ -0,0 +1,149 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../intro.rst:6 |
|||
msgid "Introduction" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:8 |
|||
msgid "" |
|||
"This is the documentation for discord.py, a library for Python to aid in " |
|||
"creating applications that utilise the Discord API." |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:12 |
|||
msgid "Prerequisites" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:14 |
|||
msgid "" |
|||
"discord.py works with Python 3.5.3 or higher. Support for earlier " |
|||
"versions of Python is not provided. Python 2.7 or lower is not supported." |
|||
" Python 3.4 or lower is not supported due to one of the dependencies " |
|||
"(``aiohttp``) not supporting Python 3.4." |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:22 |
|||
msgid "Installing" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:24 |
|||
msgid "You can get the library directly from PyPI: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:28 |
|||
msgid "If you are using Windows, then the following should be used instead: ::" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:33 |
|||
msgid "" |
|||
"To get voice support, you should use ``discord.py[voice]`` instead of " |
|||
"``discord.py``, e.g. ::" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:37 |
|||
msgid "" |
|||
"On Linux environments, installing voice requires getting the following " |
|||
"dependencies:" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:39 |
|||
msgid "libffi" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:40 |
|||
msgid "libnacl" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:41 |
|||
msgid "python3-dev" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:43 |
|||
msgid "" |
|||
"For a debian-based system, the following command will help get those " |
|||
"dependencies:" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:49 |
|||
msgid "Remember to check your permissions!" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:52 |
|||
msgid "Virtual Environments" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:54 |
|||
msgid "" |
|||
"Sometimes we don't want to pollute our system installs with a library or " |
|||
"we want to maintain different versions of a library than the currently " |
|||
"system installed one. Or we don't have permissions to install a library " |
|||
"along side with the system installed ones. For this purpose, the standard" |
|||
" library as of 3.3 comes with a concept called \"Virtual Environment\" to" |
|||
" help maintain these separate versions." |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:59 |
|||
msgid "" |
|||
"A more in-depth tutorial is found on `the official documentation. " |
|||
"<https://docs.python.org/3/tutorial/venv.html>`_" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:61 |
|||
msgid "However, for the quick and dirty:" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:63 |
|||
msgid "Go to your project's working directory:" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:70 |
|||
msgid "Activate the virtual environment:" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:76 |
|||
msgid "On Windows you activate it with:" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:82 |
|||
msgid "Use pip like usual:" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:88 |
|||
msgid "" |
|||
"Congratulations. You now have a virtual environment all set up without " |
|||
"messing with your system installation." |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:91 |
|||
msgid "Basic Concepts" |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:93 |
|||
msgid "" |
|||
"discord.py revolves around the concept of :ref:`events <discord-api-" |
|||
"events>`. An event is something you listen to and then respond to. For " |
|||
"example, when a message happens, you will receive an event about it and " |
|||
"you can then respond to it." |
|||
msgstr "" |
|||
|
|||
#: ../../intro.rst:97 |
|||
msgid "A quick example to showcase how events work:" |
|||
msgstr "" |
|||
|
@ -0,0 +1,65 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../logging.rst:5 |
|||
msgid "Setting Up Logging" |
|||
msgstr "" |
|||
|
|||
#: ../../logging.rst:7 |
|||
msgid "" |
|||
"*discord.py* logs errors and debug information via the :mod:`logging` " |
|||
"python module. It is strongly recommended that the logging module is " |
|||
"configured, as no errors or warnings will be output if it is not set up. " |
|||
"Configuration of the ``logging`` module can be as simple as::" |
|||
msgstr "" |
|||
|
|||
#: ../../logging.rst:16 |
|||
msgid "" |
|||
"Placed at the start of the application. This will output the logs from " |
|||
"discord as well as other libraries that uses the ``logging`` module " |
|||
"directly to the console." |
|||
msgstr "" |
|||
|
|||
#: ../../logging.rst:20 |
|||
msgid "" |
|||
"The optional ``level`` argument specifies what level of events to log out" |
|||
" and can any of ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``, and " |
|||
"``DEBUG`` and if not specified defaults to ``WARNING``." |
|||
msgstr "" |
|||
|
|||
#: ../../logging.rst:24 |
|||
msgid "" |
|||
"More advance setups are possible with the :mod:`logging` module. To for " |
|||
"example write the logs to a file called ``discord.log`` instead of " |
|||
"outputting them to to the console the following snippet can be used::" |
|||
msgstr "" |
|||
|
|||
#: ../../logging.rst:37 |
|||
msgid "" |
|||
"This is recommended, especially at verbose levels such as ``INFO``, and " |
|||
"``DEBUG`` as there are a lot of events logged and it would clog the " |
|||
"stdout of your program." |
|||
msgstr "" |
|||
|
|||
#: ../../logging.rst:43 |
|||
msgid "" |
|||
"For more information, check the documentation and tutorial of the " |
|||
":mod:`logging` module." |
|||
msgstr "" |
|||
|
File diff suppressed because it is too large
@ -0,0 +1,431 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../migrating_to_async.rst:8 |
|||
msgid "Migrating to v0.10.0" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:10 |
|||
msgid "" |
|||
"v0.10.0 is one of the biggest breaking changes in the library due to " |
|||
"massive fundamental changes in how the library operates." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:13 |
|||
msgid "" |
|||
"The biggest major change is that the library has dropped support to all " |
|||
"versions prior to Python 3.4.2. This was made to support ``asyncio``, in " |
|||
"which more detail can be seen :issue:`in the corresponding issue <50>`. " |
|||
"To reiterate this, the implication is that **python version 2.7 and 3.3 " |
|||
"are no longer supported**." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:18 |
|||
msgid "Below are all the other major changes from v0.9.0 to v0.10.0." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:21 |
|||
msgid "Event Registration" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:23 |
|||
msgid "" |
|||
"All events before were registered using :meth:`Client.event`. While this " |
|||
"is still possible, the events must be decorated with " |
|||
"``@asyncio.coroutine``." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:26 ../../migrating_to_async.rst:71 |
|||
#: ../../migrating_to_async.rst:105 ../../migrating_to_async.rst:166 |
|||
msgid "Before:" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:34 ../../migrating_to_async.rst:83 |
|||
#: ../../migrating_to_async.rst:111 ../../migrating_to_async.rst:174 |
|||
#: ../../migrating_to_async.rst:284 |
|||
msgid "After:" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:43 |
|||
msgid "Or in Python 3.5+:" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:51 |
|||
msgid "" |
|||
"Because there is a lot of typing, a utility decorator " |
|||
"(:meth:`Client.async_event`) is provided for easier registration. For " |
|||
"example:" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:61 |
|||
msgid "" |
|||
"Be aware however, that this is still a coroutine and your other functions" |
|||
" that are coroutines must be decorated with ``@asyncio.coroutine`` or be " |
|||
"``async def``." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:65 |
|||
msgid "Event Changes" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:67 |
|||
msgid "" |
|||
"Some events in v0.9.0 were considered pretty useless due to having no " |
|||
"separate states. The main events that were changed were the ``_update`` " |
|||
"events since previously they had no context on what was changed." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:93 |
|||
msgid "" |
|||
"Note that ``on_status`` was removed. If you want its functionality, use " |
|||
":func:`on_member_update`. See :ref:`discord-api-events` for more " |
|||
"information. Other removed events include ``on_socket_closed``, " |
|||
"``on_socket_receive``, and ``on_socket_opened``." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:98 |
|||
msgid "Coroutines" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:100 |
|||
msgid "" |
|||
"The biggest change that the library went through is that almost every " |
|||
"function in :class:`Client` was changed to be a `coroutine " |
|||
"<https://docs.python.org/3/library/asyncio-task.html>`_. Functions that " |
|||
"are marked as a coroutine in the documentation must be awaited from or " |
|||
"yielded from in order for the computation to be done. For example..." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:120 |
|||
msgid "" |
|||
"In order for you to ``yield from`` or ``await`` a coroutine then your " |
|||
"function must be decorated with ``@asyncio.coroutine`` or ``async def``." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:124 |
|||
msgid "Iterables" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:126 |
|||
msgid "" |
|||
"For performance reasons, many of the internal data structures were " |
|||
"changed into a dictionary to support faster lookup. As a consequence, " |
|||
"this meant that some lists that were exposed via the API have changed " |
|||
"into iterables and not sequences. In short, this means that certain " |
|||
"attributes now only support iteration and not any of the sequence " |
|||
"functions." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:131 |
|||
msgid "The affected attributes are as follows:" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:133 |
|||
msgid ":attr:`Client.servers`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:134 |
|||
msgid ":attr:`Client.private_channels`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:135 |
|||
msgid ":attr:`Server.channels`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:136 |
|||
msgid ":attr:`Server.members`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:138 |
|||
msgid "Some examples of previously valid behaviour that is now invalid" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:145 |
|||
msgid "" |
|||
"Since they are no longer :obj:`list`\\s, they no longer support indexing " |
|||
"or any operation other than iterating. In order to get the old behaviour " |
|||
"you should explicitly cast it to a list." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:155 |
|||
msgid "" |
|||
"Due to internal changes of the structure, the order you receive the data " |
|||
"in is not in a guaranteed order." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:159 |
|||
msgid "Enumerations" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:161 |
|||
msgid "" |
|||
"Due to dropping support for versions lower than Python 3.4.2, the library" |
|||
" can now use `enumerations " |
|||
"<https://docs.python.org/3/library/enum.html>`_ in places where it makes " |
|||
"sense." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:164 |
|||
msgid "" |
|||
"The common places where this was changed was in the server region, member" |
|||
" status, and channel type." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:182 |
|||
msgid "" |
|||
"The main reason for this change was to reduce the use of finicky strings " |
|||
"in the API as this could give users a false sense of power. More " |
|||
"information can be found in the :ref:`discord-api-enums` page." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:186 |
|||
msgid "Properties" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:188 |
|||
msgid "" |
|||
"A lot of function calls that returned constant values were changed into " |
|||
"Python properties for ease of use in format strings." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:191 |
|||
msgid "The following functions were changed into properties:" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:194 ../../migrating_to_async.rst:223 |
|||
#: ../../migrating_to_async.rst:238 |
|||
msgid "Before" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:194 ../../migrating_to_async.rst:223 |
|||
#: ../../migrating_to_async.rst:238 |
|||
msgid "After" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:196 |
|||
msgid "``User.avatar_url()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:196 |
|||
msgid ":attr:`User.avatar_url`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:198 |
|||
msgid "``User.mention()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:198 |
|||
msgid ":attr:`User.mention`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:200 |
|||
msgid "``Channel.mention()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:200 |
|||
msgid ":attr:`Channel.mention`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:202 |
|||
msgid "``Channel.is_default_channel()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:202 |
|||
msgid ":attr:`Channel.is_default`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:204 |
|||
msgid "``Role.is_everyone()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:204 |
|||
msgid ":attr:`Role.is_everyone`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:206 |
|||
msgid "``Server.get_default_role()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:206 |
|||
msgid ":attr:`Server.default_role`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:208 |
|||
msgid "``Server.icon_url()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:208 |
|||
msgid ":attr:`Server.icon_url`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:210 |
|||
msgid "``Server.get_default_channel()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:210 |
|||
msgid ":attr:`Server.default_channel`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:212 |
|||
msgid "``Message.get_raw_mentions()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:212 |
|||
msgid ":attr:`Message.raw_mentions`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:214 |
|||
msgid "``Message.get_raw_channel_mentions()``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:214 |
|||
msgid ":attr:`Message.raw_channel_mentions`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:218 |
|||
msgid "Member Management" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:220 |
|||
msgid "Functions that involved banning and kicking were changed." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:225 |
|||
msgid "``Client.ban(server, user)``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:225 |
|||
msgid "``Client.ban(member)``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:227 |
|||
msgid "``Client.kick(server, user)``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:227 |
|||
msgid "``Client.kick(member)``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:233 |
|||
msgid "Renamed Functions" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:235 |
|||
msgid "Functions have been renamed." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:240 |
|||
msgid "``Client.set_channel_permissions``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:240 ../../migrating_to_async.rst:263 |
|||
msgid ":meth:`Client.edit_channel_permissions`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:243 |
|||
msgid "" |
|||
"All the :class:`Permissions` related attributes have been renamed and the" |
|||
" `can_` prefix has been dropped. So for example, ``can_manage_messages`` " |
|||
"has become ``manage_messages``." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:247 |
|||
msgid "Forced Keyword Arguments" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:249 |
|||
msgid "" |
|||
"Since 3.0+ of Python, we can now force questions to take in forced " |
|||
"keyword arguments. A keyword argument is when you explicitly specify the " |
|||
"name of the variable and assign to it, for example: ``foo(name='test')``." |
|||
" Due to this support, some functions in the library were changed to force" |
|||
" things to take said keyword arguments. This is to reduce errors of " |
|||
"knowing the argument order and the issues that could arise from them." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:254 |
|||
msgid "The following parameters are now exclusively keyword arguments:" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:256 |
|||
msgid ":meth:`Client.send_message`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:257 |
|||
msgid "``tts``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:259 |
|||
msgid ":meth:`Client.logs_from`" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:259 |
|||
msgid "``before``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:260 |
|||
msgid "``after``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:262 |
|||
msgid "``allow``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:263 |
|||
msgid "``deny``" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:265 |
|||
msgid "" |
|||
"In the documentation you can tell if a function parameter is a forced " |
|||
"keyword argument if it is after ``\\*,`` in the function signature." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:271 |
|||
msgid "Running the Client" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:273 |
|||
msgid "" |
|||
"In earlier versions of discord.py, ``client.run()`` was a blocking call " |
|||
"to the main thread that called it. In v0.10.0 it is still a blocking call" |
|||
" but it handles the event loop for you. However, in order to do that you " |
|||
"must pass in your credentials to :meth:`Client.run`." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:277 |
|||
msgid "Basically, before:" |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:292 |
|||
msgid "" |
|||
"Like in the older ``Client.run`` function, the newer one must be the one " |
|||
"of the last functions to call. This is because the function is " |
|||
"**blocking**. Registering events or doing anything after " |
|||
":meth:`Client.run` will not execute until the function returns." |
|||
msgstr "" |
|||
|
|||
#: ../../migrating_to_async.rst:297 |
|||
msgid "" |
|||
"This is a utility function that abstracts the event loop for you. There's" |
|||
" no need for the run call to be blocking and out of your control. Indeed," |
|||
" if you want control of the event loop then doing so is quite " |
|||
"straightforward:" |
|||
msgstr "" |
|||
|
@ -0,0 +1,120 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../quickstart.rst:6 |
|||
msgid "Quickstart" |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:8 |
|||
msgid "" |
|||
"This page gives a brief introduction to the library. It assumes you have " |
|||
"the library installed, if you don't check the :ref:`installing` portion." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:12 |
|||
msgid "A Minimal Bot" |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:14 |
|||
msgid "" |
|||
"Let's make a bot that replies to a specific message and walk you through " |
|||
"it." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:16 |
|||
msgid "It looks something like this:" |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:38 |
|||
msgid "" |
|||
"Let's name this file ``example_bot.py``. Make sure not to name it " |
|||
"``discord.py`` as that'll conflict with the library." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:41 |
|||
msgid "There's a lot going on here, so let's walk you through it step by step." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:43 |
|||
msgid "" |
|||
"The first line just imports the library, if this raises a " |
|||
"`ModuleNotFoundError` or `ImportError` then head on over to " |
|||
":ref:`installing` section to properly install." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:45 |
|||
msgid "" |
|||
"Next, we create an instance of a :class:`Client`. This client is our " |
|||
"connection to Discord." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:46 |
|||
msgid "" |
|||
"We then use the :meth:`Client.event` decorator to register an event. This" |
|||
" library has many events. Since this library is asynchronous, we do " |
|||
"things in a \"callback\" style manner." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:49 |
|||
msgid "" |
|||
"A callback is essentially a function that is called when something " |
|||
"happens. In our case, the :func:`on_ready` event is called when the bot " |
|||
"has finished logging in and setting things up and the :func:`on_message` " |
|||
"event is called when the bot has received a message." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:52 |
|||
msgid "" |
|||
"Since the :func:`on_message` event triggers for *every* message received," |
|||
" we have to make sure that we ignore messages from ourselves. We do this " |
|||
"by checking if the :attr:`Message.author` is the same as the " |
|||
":attr:`Client.user`." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:55 |
|||
msgid "" |
|||
"Afterwards, we check if the :class:`Message.content` starts with " |
|||
"``'$hello'``. If it is, then we reply in the channel it was used in with " |
|||
"``'Hello!'``." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:57 |
|||
msgid "" |
|||
"Finally, we run the bot with our login token. If you need help getting " |
|||
"your token or creating a bot, look in the :ref:`discord-intro` section." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:61 |
|||
msgid "" |
|||
"Now that we've made a bot, we have to *run* the bot. Luckily, this is " |
|||
"simple since this is just a Python script, we can run it directly." |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:64 |
|||
msgid "On Windows:" |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:70 |
|||
msgid "On other systems:" |
|||
msgstr "" |
|||
|
|||
#: ../../quickstart.rst:76 |
|||
msgid "Now you can try playing around with your basic bot." |
|||
msgstr "" |
|||
|
@ -0,0 +1,26 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../_templates/layout.html:24 |
|||
#, python-format |
|||
msgid "" |
|||
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " |
|||
"%(sphinx_version)s." |
|||
msgstr "" |
|||
|
@ -0,0 +1,939 @@ |
|||
# SOME DESCRIPTIVE TITLE. |
|||
# Copyright (C) 2015-2017, Rapptz |
|||
# This file is distributed under the same license as the discord.py package. |
|||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018. |
|||
# |
|||
#, fuzzy |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: discord.py 1.0.0a\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-07-31 14:21-0400\n" |
|||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|||
"Language-Team: LANGUAGE <[email protected]>\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=utf-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Generated-By: Babel 2.5.3\n" |
|||
|
|||
#: ../../whats_new.rst:6 |
|||
msgid "Changelog" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:8 |
|||
msgid "" |
|||
"This page keeps a detailed human friendly rendering of what's new and " |
|||
"changed in specific versions." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:14 |
|||
msgid "v0.16.6" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:17 ../../whats_new.rst:33 ../../whats_new.rst:53 |
|||
#: ../../whats_new.rst:101 ../../whats_new.rst:118 ../../whats_new.rst:155 |
|||
#: ../../whats_new.rst:191 ../../whats_new.rst:243 ../../whats_new.rst:287 |
|||
#: ../../whats_new.rst:353 |
|||
msgid "Bug Fixes" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:19 |
|||
msgid "Fix issue with :meth:`Client.create_server` that made it stop working." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:20 |
|||
msgid "Fix main thread being blocked upon calling ``StreamPlayer.stop``." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:21 |
|||
msgid "Handle HEARTBEAT_ACK and resume gracefully when it occurs." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:22 |
|||
msgid "" |
|||
"Fix race condition when pre-emptively rate limiting that caused releasing" |
|||
" an already released lock." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:23 |
|||
msgid "Fix invalid state errors when immediately cancelling a coroutine." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:28 |
|||
msgid "v0.16.1" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:30 |
|||
msgid "" |
|||
"This release is just a bug fix release with some better rate limit " |
|||
"implementation." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:35 |
|||
msgid "Servers are now properly chunked for user bots." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:36 |
|||
msgid "The CDN URL is now used instead of the API URL for assets." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:37 |
|||
msgid "Rate limit implementation now tries to use header information if possible." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:38 |
|||
msgid "Event loop is now properly propagated (:issue:`420`)" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:39 |
|||
msgid "" |
|||
"Allow falsey values in :meth:`Client.send_message` and " |
|||
":meth:`Client.send_file`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:44 |
|||
msgid "v0.16.0" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:47 ../../whats_new.rst:79 ../../whats_new.rst:112 |
|||
#: ../../whats_new.rst:141 ../../whats_new.rst:168 ../../whats_new.rst:204 |
|||
#: ../../whats_new.rst:264 ../../whats_new.rst:310 |
|||
msgid "New Features" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:49 |
|||
msgid "" |
|||
"Add :attr:`Channel.overwrites` to get all the permission overwrites of a " |
|||
"channel." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:50 |
|||
msgid "Add :attr:`Server.features` to get information about partnered servers." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:55 |
|||
msgid "" |
|||
"Timeout when waiting for offline members while triggering " |
|||
":func:`on_ready`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:57 |
|||
msgid "" |
|||
"The fact that we did not timeout caused a gigantic memory leak in the " |
|||
"library that caused thousands of duplicate :class:`Member` instances " |
|||
"causing big memory spikes." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:60 |
|||
msgid "Discard null sequences in the gateway." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:62 |
|||
msgid "" |
|||
"The fact these were not discarded meant that :func:`on_ready` kept being " |
|||
"called instead of :func:`on_resumed`. Since this has been corrected, in " |
|||
"most cases :func:`on_ready` will be called once or twice with " |
|||
":func:`on_resumed` being called much more often." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:69 |
|||
msgid "v0.15.1" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:71 |
|||
msgid "Fix crash on duplicate or out of order reactions." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:76 |
|||
msgid "v0.15.0" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:81 |
|||
msgid "Rich Embeds for messages are now supported." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:83 |
|||
msgid "" |
|||
"To do so, create your own :class:`Embed` and pass the instance to the " |
|||
"``embed`` keyword argument to :meth:`Client.send_message` or " |
|||
":meth:`Client.edit_message`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:84 |
|||
msgid "Add :meth:`Client.clear_reactions` to remove all reactions from a message." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:85 |
|||
msgid "" |
|||
"Add support for MESSAGE_REACTION_REMOVE_ALL event, under " |
|||
":func:`on_reaction_clear`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:86 |
|||
msgid "" |
|||
"Add :meth:`Permissions.update` and :meth:`PermissionOverwrite.update` for" |
|||
" bulk permission updates." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:88 |
|||
msgid "" |
|||
"This allows you to use e.g. ``p.update(read_messages=True, " |
|||
"send_messages=False)`` in a single line." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:89 |
|||
msgid "" |
|||
"Add :meth:`PermissionOverwrite.is_empty` to check if the overwrite is " |
|||
"empty (i.e. has no overwrites set explicitly as true or false)." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:91 |
|||
msgid "For the command extension, the following changed:" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:93 |
|||
msgid "``Context`` is no longer slotted to facilitate setting dynamic attributes." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:98 |
|||
msgid "v0.14.3" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:103 |
|||
msgid "Fix crash when dealing with MESSAGE_REACTION_REMOVE" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:104 |
|||
msgid "Fix incorrect buckets for reactions." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:109 |
|||
msgid "v0.14.2" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:115 |
|||
msgid "" |
|||
":meth:`Client.wait_for_reaction` now returns a namedtuple with " |
|||
"``reaction`` and ``user`` attributes." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:115 |
|||
msgid "" |
|||
"This is for better support in the case that ``None`` is returned since " |
|||
"tuple unpacking can lead to issues." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:120 |
|||
msgid "" |
|||
"Fix bug that disallowed ``None`` to be passed for ``emoji`` parameter in " |
|||
":meth:`Client.wait_for_reaction`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:125 |
|||
msgid "v0.14.1" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:128 |
|||
msgid "Bug fixes" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:131 |
|||
msgid "Fix bug with `Reaction` not being visible at import." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:131 |
|||
msgid "This was also breaking the documentation." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:136 |
|||
msgid "v0.14.0" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:138 |
|||
msgid "This update adds new API features and a couple of bug fixes." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:143 |
|||
msgid "" |
|||
"Add support for Manage Webhooks permission under " |
|||
":attr:`Permissions.manage_webhooks`" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:144 |
|||
msgid "Add support for ``around`` argument in 3.5+ :meth:`Client.logs_from`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:152 |
|||
msgid "Add support for reactions." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:146 |
|||
msgid ":meth:`Client.add_reaction` to add a reactions" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:147 |
|||
msgid ":meth:`Client.remove_reaction` to remove a reaction." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:148 |
|||
msgid "" |
|||
":meth:`Client.get_reaction_users` to get the users that reacted to a " |
|||
"message." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:149 |
|||
msgid ":attr:`Permissions.add_reactions` permission bit support." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:150 |
|||
msgid "Two new events, :func:`on_reaction_add` and :func:`on_reaction_remove`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:151 |
|||
msgid ":attr:`Message.reactions` to get reactions from a message." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:152 |
|||
msgid ":meth:`Client.wait_for_reaction` to wait for a reaction from a user." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:157 |
|||
msgid "Fix bug with Paginator still allowing lines that are too long." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:158 |
|||
msgid "Fix the :attr:`Permissions.manage_emojis` bit being incorrect." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:163 |
|||
msgid "v0.13.0" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:165 |
|||
msgid "This is a backwards compatible update with new features." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:170 |
|||
msgid "Add the ability to manage emojis." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:172 |
|||
msgid ":meth:`Client.create_custom_emoji` to create new emoji." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:173 |
|||
msgid ":meth:`Client.edit_custom_emoji` to edit an old emoji." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:174 |
|||
msgid ":meth:`Client.delete_custom_emoji` to delete a custom emoji." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:175 |
|||
msgid "Add new :attr:`Permissions.manage_emojis` toggle." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:177 |
|||
msgid "This applies for :class:`PermissionOverwrite` as well." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:178 |
|||
msgid "Add new statuses for :class:`Status`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:180 |
|||
msgid "" |
|||
":attr:`Status.dnd` (aliased with :attr:`Status.do_not_disturb`\\) for Do " |
|||
"Not Disturb." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:181 |
|||
msgid "" |
|||
":attr:`Status.invisible` for setting your status to invisible (please see" |
|||
" the docs for a caveat)." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:182 |
|||
msgid "Deprecate :meth:`Client.change_status`" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:184 |
|||
msgid "" |
|||
"Use :meth:`Client.change_presence` instead for better more up to date " |
|||
"functionality." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:185 |
|||
msgid "This method is subject for removal in a future API version." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:186 |
|||
msgid "" |
|||
"Add :meth:`Client.change_presence` for changing your status with the new " |
|||
"Discord API change." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:188 |
|||
msgid "" |
|||
"This is the only method that allows changing your status to invisible or " |
|||
"do not disturb." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:193 |
|||
msgid "Paginator pages do not exceed their max_size anymore (:issue:`340`)" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:194 |
|||
msgid "" |
|||
"Do Not Disturb users no longer show up offline due to the new " |
|||
":class:`Status` changes." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:199 |
|||
msgid "v0.12.0" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:201 |
|||
msgid "This is a bug fix update that also comes with new features." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:206 |
|||
msgid "Add custom emoji support." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:208 |
|||
msgid "Adds a new class to represent a custom Emoji named :class:`Emoji`" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:209 |
|||
msgid "Adds a utility generator function, :meth:`Client.get_all_emojis`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:210 |
|||
msgid "Adds a list of emojis on a server, :attr:`Server.emojis`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:211 |
|||
msgid "Adds a new event, :func:`on_server_emojis_update`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:212 |
|||
msgid "Add new server regions to :class:`ServerRegion`" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:214 |
|||
msgid ":attr:`ServerRegion.eu_central` and :attr:`ServerRegion.eu_west`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:215 |
|||
msgid "" |
|||
"Add support for new pinned system message under " |
|||
":attr:`MessageType.pins_add`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:216 |
|||
msgid "" |
|||
"Add order comparisons for :class:`Role` to allow it to be compared with " |
|||
"regards to hierarchy." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:218 |
|||
msgid "" |
|||
"This means that you can now do ``role_a > role_b`` etc to check if " |
|||
"``role_b`` is lower in the hierarchy." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:220 |
|||
msgid "Add :attr:`Server.role_hierarchy` to get the server's role hierarchy." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:221 |
|||
msgid "" |
|||
"Add :attr:`Member.server_permissions` to get a member's server " |
|||
"permissions without their channel specific overwrites." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:222 |
|||
msgid "Add :meth:`Client.get_user_info` to retrieve a user's info from their ID." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:223 |
|||
msgid "" |
|||
"Add a new ``Player`` property, ``Player.error`` to fetch the error that " |
|||
"stopped the player." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:225 |
|||
msgid "" |
|||
"To help with this change, a player's ``after`` function can now take a " |
|||
"single parameter denoting the current player." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:226 |
|||
msgid "Add support for server verification levels." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:228 |
|||
msgid "Adds a new enum called :class:`VerificationLevel`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:229 |
|||
msgid "" |
|||
"This enum can be used in :meth:`Client.edit_server` under the " |
|||
"``verification_level`` keyword argument." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:230 |
|||
msgid "Adds a new attribute in the server, :attr:`Server.verification_level`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:231 |
|||
msgid "" |
|||
"Add :attr:`Server.voice_client` shortcut property for " |
|||
":meth:`Client.voice_client_in`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:233 |
|||
msgid "" |
|||
"This is technically old (was added in v0.10.0) but was undocumented until" |
|||
" v0.12.0." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:235 ../../whats_new.rst:281 |
|||
msgid "For the command extension, the following are new:" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:237 |
|||
msgid "Add custom emoji converter." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:238 |
|||
msgid "All default converters that can take IDs can now convert via ID." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:239 |
|||
msgid "Add coroutine support for ``Bot.command_prefix``." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:240 |
|||
msgid "Add a method to reset command cooldown." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:245 |
|||
msgid "" |
|||
"Fix bug that caused the library to not work with the latest " |
|||
"``websockets`` library." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:246 |
|||
msgid "Fix bug that leaked keep alive threads (:issue:`309`)" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:247 |
|||
msgid "" |
|||
"Fix bug that disallowed :class:`ServerRegion` from being used in " |
|||
":meth:`Client.edit_server`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:248 |
|||
msgid "" |
|||
"Fix bug in :meth:`Channel.permissions_for` that caused permission " |
|||
"resolution to happen out of order." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:249 |
|||
msgid "" |
|||
"Fix bug in :attr:`Member.top_role` that did not account for same-position" |
|||
" roles." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:254 |
|||
msgid "v0.11.0" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:256 |
|||
msgid "" |
|||
"This is a minor bug fix update that comes with a gateway update (v5 -> " |
|||
"v6)." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:259 |
|||
msgid "Breaking Changes" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:261 |
|||
msgid "" |
|||
"``Permissions.change_nicknames`` has been renamed to " |
|||
":attr:`Permissions.change_nickname` to match the UI." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:266 |
|||
msgid "Add the ability to prune members via :meth:`Client.prune_members`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:267 |
|||
msgid "" |
|||
"Switch the websocket gateway version to v6 from v5. This allows the " |
|||
"library to work with group DMs and 1-on-1 calls." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:268 |
|||
msgid "Add :attr:`AppInfo.owner` attribute." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:269 |
|||
msgid "Add :class:`CallMessage` for group voice call messages." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:270 |
|||
msgid "Add :class:`GroupCall` for group voice call information." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:271 |
|||
msgid "Add :attr:`Message.system_content` to get the system message." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:272 |
|||
msgid "" |
|||
"Add the remaining VIP servers and the Brazil servers into " |
|||
":class:`ServerRegion` enum." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:273 |
|||
msgid "" |
|||
"Add ``stderr`` argument to :meth:`VoiceClient.create_ffmpeg_player` to " |
|||
"redirect stderr." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:274 |
|||
msgid "" |
|||
"The library now handles implicit permission resolution in " |
|||
":meth:`Channel.permissions_for`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:275 |
|||
msgid "Add :attr:`Server.mfa_level` to query a server's 2FA requirement." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:276 |
|||
msgid "Add :attr:`Permissions.external_emojis` permission." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:277 |
|||
msgid "Add :attr:`Member.voice` attribute that refers to a :class:`VoiceState`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:279 |
|||
msgid "" |
|||
"For backwards compatibility, the member object will have properties " |
|||
"mirroring the old behaviour." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:283 |
|||
msgid "Command cooldown system with the ``cooldown`` decorator." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:284 |
|||
msgid "" |
|||
"``UserInputError`` exception for the hierarchy for user input related " |
|||
"errors." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:289 |
|||
msgid ":attr:`Client.email` is now saved when using a token for user accounts." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:290 |
|||
msgid "Fix issue when removing roles out of order." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:291 |
|||
msgid "Fix bug where discriminators would not update." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:292 |
|||
msgid "" |
|||
"Handle cases where ``HEARTBEAT`` opcode is received. This caused bots to " |
|||
"disconnect seemingly randomly." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:294 |
|||
msgid "For the command extension, the following bug fixes apply:" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:296 |
|||
msgid "``Bot.check`` decorator is actually a decorator not requiring parentheses." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:297 |
|||
msgid "" |
|||
"``Bot.remove_command`` and ``Group.remove_command`` no longer throw if " |
|||
"the command doesn't exist." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:298 |
|||
msgid "Command names are no longer forced to be ``lower()``." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:299 |
|||
msgid "" |
|||
"Fix a bug where Member and User converters failed to work in private " |
|||
"message contexts." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:300 |
|||
msgid "" |
|||
"``HelpFormatter`` now ignores hidden commands when deciding the maximum " |
|||
"width." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:305 |
|||
msgid "v0.10.0" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:307 |
|||
msgid "" |
|||
"For breaking changes, see :ref:`migrating-to-async`. The breaking changes" |
|||
" listed there will not be enumerated below. Since this version is rather " |
|||
"a big departure from v0.9.2, this change log will be non-exhaustive." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:312 |
|||
msgid "" |
|||
"The library is now fully ``asyncio`` compatible, allowing you to write " |
|||
"non-blocking code a lot more easily." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:313 |
|||
msgid "The library now fully handles 429s and unconditionally retries on 502s." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:314 |
|||
msgid "" |
|||
"A new command extension module was added but is currently undocumented. " |
|||
"Figuring it out is left as an exercise to the reader." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:315 |
|||
msgid "" |
|||
"Two new exception types, :exc:`Forbidden` and :exc:`NotFound` to denote " |
|||
"permission errors or 404 errors." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:316 |
|||
msgid "Added :meth:`Client.delete_invite` to revoke invites." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:317 |
|||
msgid "" |
|||
"Added support for sending voice. Check :class:`VoiceClient` for more " |
|||
"details." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:318 |
|||
msgid "" |
|||
"Added :meth:`Client.wait_for_message` coroutine to aid with follow up " |
|||
"commands." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:319 |
|||
msgid "" |
|||
"Added :data:`version_info` named tuple to check version info of the " |
|||
"library." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:320 |
|||
msgid "" |
|||
"Login credentials are now cached to have a faster login experience. You " |
|||
"can disable this by passing in ``cache_auth=False`` when constructing a " |
|||
":class:`Client`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:322 |
|||
msgid "" |
|||
"New utility function, :func:`discord.utils.get` to simplify retrieval of " |
|||
"items based on attributes." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:323 |
|||
msgid "" |
|||
"All data classes now support ``!=``, ``==``, ``hash(obj)`` and " |
|||
"``str(obj)``." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:324 |
|||
msgid "Added :meth:`Client.get_bans` to get banned members from a server." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:325 |
|||
msgid "" |
|||
"Added :meth:`Client.invites_from` to get currently active invites in a " |
|||
"server." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:326 |
|||
msgid "" |
|||
"Added :attr:`Server.me` attribute to get the :class:`Member` version of " |
|||
":attr:`Client.user`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:327 |
|||
msgid "" |
|||
"Most data classes now support a ``hash(obj)`` function to allow you to " |
|||
"use them in ``set`` or ``dict`` classes or subclasses." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:328 |
|||
msgid "" |
|||
"Add :meth:`Message.clean_content` to get a text version of the content " |
|||
"with the user and channel mentioned changed into their names." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:329 |
|||
msgid "" |
|||
"Added a way to remove the messages of the user that just got banned in " |
|||
":meth:`Client.ban`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:330 |
|||
msgid "" |
|||
"Added :meth:`Client.wait_until_ready` to facilitate easy creation of " |
|||
"tasks that require the client cache to be ready." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:331 |
|||
msgid "" |
|||
"Added :meth:`Client.wait_until_login` to facilitate easy creation of " |
|||
"tasks that require the client to be logged in." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:332 |
|||
msgid "" |
|||
"Add :class:`discord.Game` to represent any game with custom text to send " |
|||
"to :meth:`Client.change_status`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:333 |
|||
msgid "Add :attr:`Message.nonce` attribute." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:334 |
|||
msgid "" |
|||
"Add :meth:`Member.permissions_in` as another way of doing " |
|||
":meth:`Channel.permissions_for`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:335 |
|||
msgid "Add :meth:`Client.move_member` to move a member to another voice channel." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:336 |
|||
msgid "You can now create a server via :meth:`Client.create_server`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:337 |
|||
msgid "Added :meth:`Client.edit_server` to edit existing servers." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:338 |
|||
msgid "" |
|||
"Added :meth:`Client.server_voice_state` to server mute or server deafen a" |
|||
" member." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:339 |
|||
msgid "If you are being rate limited, the library will now handle it for you." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:340 |
|||
msgid "" |
|||
"Add :func:`on_member_ban` and :func:`on_member_unban` events that trigger" |
|||
" when a member is banned/unbanned." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:343 |
|||
msgid "Performance Improvements" |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:345 |
|||
msgid "" |
|||
"All data classes now use ``__slots__`` which greatly reduce the memory " |
|||
"usage of things kept in cache." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:346 |
|||
msgid "" |
|||
"Due to the usage of ``asyncio``, the CPU usage of the library has gone " |
|||
"down significantly." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:347 |
|||
msgid "" |
|||
"A lot of the internal cache lists were changed into dictionaries to " |
|||
"change the ``O(n)`` lookup into ``O(1)``." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:348 |
|||
msgid "" |
|||
"Compressed READY is now on by default. This means if you're on a lot of " |
|||
"servers (or maybe even a few) you would receive performance improvements " |
|||
"by having to download and process less data." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:350 |
|||
msgid "" |
|||
"While minor, change regex from ``\\d+`` to ``[0-9]+`` to avoid " |
|||
"unnecessary unicode character lookups." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:355 |
|||
msgid "Fix bug where guilds being updated did not edit the items in cache." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:356 |
|||
msgid "" |
|||
"Fix bug where ``member.roles`` were empty upon joining instead of having " |
|||
"the ``@everyone`` role." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:357 |
|||
msgid "" |
|||
"Fix bug where :meth:`Role.is_everyone` was not being set properly when " |
|||
"the role was being edited." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:358 |
|||
msgid "" |
|||
":meth:`Client.logs_from` now handles cases where limit > 100 to sidestep " |
|||
"the discord API limitation." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:359 |
|||
msgid "Fix bug where a role being deleted would trigger a ``ValueError``." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:360 |
|||
msgid "" |
|||
"Fix bug where :meth:`Permissions.kick_members` and " |
|||
":meth:`Permissions.ban_members` were flipped." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:361 |
|||
msgid "" |
|||
"Mentions are now triggered normally. This was changed due to the way " |
|||
"discord handles it internally." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:362 |
|||
msgid "" |
|||
"Fix issue when a :class:`Message` would attempt to upgrade a " |
|||
":attr:`Message.server` when the channel is a :class:`Object`." |
|||
msgstr "" |
|||
|
|||
#: ../../whats_new.rst:364 |
|||
msgid "" |
|||
"Unavailable servers were not being added into cache, this has been " |
|||
"corrected." |
|||
msgstr "" |
|||
|
Loading…
Reference in new issue