conflict fixes
This commit is contained in:
1
docs/_static/codeblocks.css
vendored
1
docs/_static/codeblocks.css
vendored
@ -112,6 +112,7 @@
|
||||
:root[data-theme="dark"] .highlight .ni { color: #d0d0d0; } /* Name.Entity */
|
||||
:root[data-theme="dark"] .highlight .ne { color: #bbbbbb; } /* Name.Exception */
|
||||
:root[data-theme="dark"] .highlight .nf { color: #6494d8; } /* Name.Function */
|
||||
:root[data-theme="dark"] .highlight .fm { color: #6494d8; } /* Name.Function.Magic */
|
||||
:root[data-theme="dark"] .highlight .nl { color: #d0d0d0; } /* Name.Label */
|
||||
:root[data-theme="dark"] .highlight .nn { color: #6494d8;} /* Name.Namespace */
|
||||
:root[data-theme="dark"] .highlight .nx { color: #d0d0d0; } /* Name.Other */
|
||||
|
18
docs/_static/custom.js
vendored
18
docs/_static/custom.js
vendored
@ -5,6 +5,7 @@ let bottomHeightThreshold, sections;
|
||||
let hamburgerToggle;
|
||||
let mobileSearch;
|
||||
let sidebar;
|
||||
let toTop;
|
||||
|
||||
class Modal {
|
||||
constructor(element) {
|
||||
@ -49,12 +50,19 @@ class SearchBar {
|
||||
|
||||
}
|
||||
|
||||
function scrollToTop() {
|
||||
window.scrollTo({ top: 0, behavior: 'smooth' });
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
mobileSearch = new SearchBar();
|
||||
|
||||
bottomHeightThreshold = document.documentElement.scrollHeight - 30;
|
||||
sections = document.querySelectorAll('section');
|
||||
hamburgerToggle = document.getElementById('hamburger-toggle');
|
||||
|
||||
toTop = document.getElementById('to-top');
|
||||
toTop.hidden = !(window.scrollY > 0);
|
||||
|
||||
if (hamburgerToggle) {
|
||||
hamburgerToggle.addEventListener('click', (e) => {
|
||||
@ -76,6 +84,16 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
// insert ourselves after the element
|
||||
parent.insertBefore(table, element.nextSibling);
|
||||
});
|
||||
|
||||
window.addEventListener('scroll', () => {
|
||||
toTop.hidden = !(window.scrollY > 0);
|
||||
});
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', (event) => {
|
||||
if (event.code == "Escape" && activeModal) {
|
||||
activeModal.close();
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', (event) => {
|
||||
|
5
docs/_static/settings.js
vendored
5
docs/_static/settings.js
vendored
@ -94,10 +94,13 @@ function updateSetting(element) {
|
||||
}
|
||||
}
|
||||
|
||||
for (const setting of settings) {
|
||||
setting.load();
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
settingsModal = new Modal(document.querySelector('div#settings.modal'));
|
||||
for (const setting of settings) {
|
||||
setting.load();
|
||||
setting.setElement();
|
||||
}
|
||||
});
|
||||
|
63
docs/_static/style.css
vendored
63
docs/_static/style.css
vendored
@ -19,6 +19,7 @@ Historically however, thanks to:
|
||||
/* CSS variables would go here */
|
||||
:root {
|
||||
--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
--monospace-font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
|
||||
/* palette goes here */
|
||||
--white: #ffffff;
|
||||
@ -96,6 +97,8 @@ Historically however, thanks to:
|
||||
--rtd-ad-background: var(--grey-2);
|
||||
--rtd-ad-main-text: var(--grey-6);
|
||||
--rtd-ad-small-text: var(--grey-4);
|
||||
--rtd-version-background: #272525;
|
||||
--rtd-version-main-text: #fcfcfc;
|
||||
--attribute-table-title: var(--grey-6);
|
||||
--attribute-table-entry-border: var(--grey-3);
|
||||
--attribute-table-entry-text: var(--grey-5);
|
||||
@ -103,6 +106,7 @@ Historically however, thanks to:
|
||||
--attribute-table-entry-hover-background: var(--grey-2);
|
||||
--attribute-table-entry-hover-text: var(--blue-2);
|
||||
--attribute-table-badge: var(--grey-7);
|
||||
--highlighted-text: rgb(252, 233, 103);
|
||||
}
|
||||
|
||||
:root[data-font="serif"] {
|
||||
@ -162,6 +166,7 @@ Historically however, thanks to:
|
||||
--attribute-table-entry-hover-background: var(--grey-6);
|
||||
--attribute-table-entry-hover-text: var(--blue-1);
|
||||
--attribute-table-badge: var(--grey-4);
|
||||
--highlighted-text: rgba(250, 166, 26, 0.2);
|
||||
}
|
||||
|
||||
img[src$="snake_dark.svg"] {
|
||||
@ -247,6 +252,7 @@ header > nav {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
header > nav a {
|
||||
@ -265,6 +271,12 @@ header > nav.mobile-only {
|
||||
|
||||
header > nav.mobile-only .search {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: -1;
|
||||
padding-top: 0;
|
||||
transition: top 0.5s ease-in-out;
|
||||
}
|
||||
|
||||
header > nav.mobile-only .search-wrapper {
|
||||
@ -316,6 +328,11 @@ header > nav > a:hover {
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.sub-header option {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.sub-header > select:focus {
|
||||
outline: none;
|
||||
}
|
||||
@ -380,12 +397,12 @@ aside h3 {
|
||||
position: relative;
|
||||
line-height: 0.5em;
|
||||
transition: transform 0.4s;
|
||||
transform: rotate(0deg);
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
|
||||
.expanded {
|
||||
transition: transform 0.4s;
|
||||
transform: rotate(-90deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
.ref-internal-padding {
|
||||
@ -567,6 +584,37 @@ div.modal input {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* scroll to top button */
|
||||
|
||||
#to-top {
|
||||
position: fixed;
|
||||
bottom: 50px;
|
||||
right: 20px;
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#to-top.is-rtd {
|
||||
bottom: 90px;
|
||||
}
|
||||
|
||||
#to-top > span {
|
||||
display: block;
|
||||
|
||||
width: auto;
|
||||
height: 30px;
|
||||
padding: 0 6px;
|
||||
|
||||
background-color: var(--rtd-version-background);
|
||||
color: var(--rtd-version-main-text);
|
||||
}
|
||||
|
||||
#to-top span {
|
||||
line-height: 30px;
|
||||
font-size: 90%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* copy button */
|
||||
|
||||
.relative-copy {
|
||||
@ -855,7 +903,7 @@ dl.field-list {
|
||||
/* internal references are forced to bold for some reason */
|
||||
a.reference.internal > strong {
|
||||
font-weight: unset;
|
||||
font-family: monospace;
|
||||
font-family: var(--monospace-font-family);
|
||||
}
|
||||
|
||||
/* exception hierarchy */
|
||||
@ -950,7 +998,7 @@ pre {
|
||||
}
|
||||
|
||||
pre, code {
|
||||
font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
font-family: var(--monospace-font-family);
|
||||
font-size: 0.9em;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
@ -1007,6 +1055,13 @@ dd {
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
dt:target, span.highlighted {
|
||||
background-color: var(--highlighted-text);
|
||||
}
|
||||
|
||||
rect.highlighted {
|
||||
fill: var(--highlighted-text);
|
||||
}
|
||||
|
||||
.container.operations {
|
||||
padding: 10px;
|
||||
|
10
docs/_templates/layout.html
vendored
10
docs/_templates/layout.html
vendored
@ -67,7 +67,7 @@
|
||||
<a onclick="mobileSearch.close();" title="{{ _('Close') }}" id="close-search" class="mobile-only" hidden><span class="material-icons">close</span></a>
|
||||
</nav>
|
||||
<nav class="mobile-only">
|
||||
<form role="search" class="search" action="search.html" method="get">
|
||||
<form role="search" class="search" action="{{ pathto('search') }}" method="get">
|
||||
<div class="search-wrapper">
|
||||
<input type="search" name="q" placeholder="{{ _('Search documentation') }}" />
|
||||
<button type="submit">
|
||||
@ -90,7 +90,7 @@
|
||||
<option value="{{ pathto(p + '/index')|e }}" {% if pagename is prefixedwith p %}selected{% endif %}>{{ ext }}</option>
|
||||
{%- endfor %}
|
||||
</select>
|
||||
<form role="search" class="search" action="search.html" method="get">
|
||||
<form role="search" class="search" action="{{ pathto('search') }}" method="get">
|
||||
<div class="search-wrapper">
|
||||
<input type="search" name="q" placeholder="{{ _('Search documentation') }}" />
|
||||
<button type="submit">
|
||||
@ -115,7 +115,7 @@
|
||||
</div>
|
||||
</aside>
|
||||
{#- The actual body of the contents #}
|
||||
<main class="grid-item">
|
||||
<main class="grid-item" role="main">
|
||||
{% block body %} {% endblock %}
|
||||
</main>
|
||||
{%- block footer %}
|
||||
@ -190,5 +190,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="to-top" onclick="scrollToTop()"{%- if READTHEDOCS %} class="is-rtd"{%- endif %} hidden>
|
||||
<span><span class="material-icons">arrow_upward</span> to top</span>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
40
docs/api.rst
40
docs/api.rst
@ -87,6 +87,14 @@ VoiceClient
|
||||
.. autoclass:: VoiceClient()
|
||||
:members:
|
||||
|
||||
VoiceProtocol
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: VoiceProtocol
|
||||
|
||||
.. autoclass:: VoiceProtocol
|
||||
:members:
|
||||
|
||||
AudioSource
|
||||
~~~~~~~~~~~~
|
||||
|
||||
@ -147,7 +155,7 @@ Opus Library
|
||||
Event Reference
|
||||
---------------
|
||||
|
||||
This page outlines the different types of events listened by :class:`Client`.
|
||||
This section outlines the different types of events listened by :class:`Client`.
|
||||
|
||||
There are two ways to register an event, the first way is through the use of
|
||||
:meth:`Client.event`. The second way is through subclassing :class:`Client` and
|
||||
@ -661,6 +669,7 @@ to handle it, which defaults to print a traceback and ignoring the exception.
|
||||
- activity
|
||||
- nickname
|
||||
- roles
|
||||
- pending
|
||||
|
||||
This requires :attr:`Intents.members` to be enabled.
|
||||
|
||||
@ -2150,9 +2159,9 @@ Certain utilities make working with async iterators easier, detailed below.
|
||||
Collects items into chunks of up to a given maximum size.
|
||||
Another :class:`AsyncIterator` is returned which collects items into
|
||||
:class:`list`\s of a given size. The maximum chunk size must be a positive integer.
|
||||
|
||||
|
||||
.. versionadded:: 1.6
|
||||
|
||||
|
||||
Collecting groups of users: ::
|
||||
|
||||
async for leader, *users in reaction.users().chunk(3):
|
||||
@ -2616,11 +2625,22 @@ Webhook Support
|
||||
|
||||
discord.py offers support for creating, editing, and executing webhooks through the :class:`Webhook` class.
|
||||
|
||||
Webhook
|
||||
~~~~~~~~~
|
||||
|
||||
.. attributetable:: Webhook
|
||||
|
||||
.. autoclass:: Webhook
|
||||
:members:
|
||||
|
||||
WebhookMessage
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: WebhookMessage
|
||||
|
||||
.. autoclass:: WebhookMessage
|
||||
:members:
|
||||
|
||||
Adapters
|
||||
~~~~~~~~~
|
||||
|
||||
@ -2790,6 +2810,8 @@ Message
|
||||
DeletedReferencedMessage
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: DeletedReferencedMessage
|
||||
|
||||
.. autoclass:: DeletedReferencedMessage()
|
||||
:members:
|
||||
|
||||
@ -2998,6 +3020,8 @@ Invite
|
||||
Template
|
||||
~~~~~~~~~
|
||||
|
||||
.. attributetable:: Template
|
||||
|
||||
.. autoclass:: Template()
|
||||
:members:
|
||||
|
||||
@ -3029,6 +3053,8 @@ Widget
|
||||
Sticker
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: Sticker
|
||||
|
||||
.. autoclass:: Sticker()
|
||||
:members:
|
||||
|
||||
@ -3101,6 +3127,8 @@ dynamic attributes in mind.
|
||||
Object
|
||||
~~~~~~~
|
||||
|
||||
.. attributetable:: Object
|
||||
|
||||
.. autoclass:: Object
|
||||
:members:
|
||||
|
||||
@ -3126,6 +3154,12 @@ MessageReference
|
||||
.. autoclass:: MessageReference
|
||||
:members:
|
||||
|
||||
PartialMessage
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. autoclass:: PartialMessage
|
||||
:members:
|
||||
|
||||
Intents
|
||||
~~~~~~~~~~
|
||||
|
||||
|
14
docs/conf.py
14
docs/conf.py
@ -40,6 +40,7 @@ extensions = [
|
||||
'details',
|
||||
'exception_hierarchy',
|
||||
'attributetable',
|
||||
'resourcelinks',
|
||||
]
|
||||
|
||||
autodoc_member_order = 'bysource'
|
||||
@ -76,7 +77,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'discord.py'
|
||||
copyright = u'2015-2020, Rapptz'
|
||||
copyright = u'2015-2021, Rapptz'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@ -91,6 +92,9 @@ with open('../discord/__init__.py') as f:
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = version
|
||||
|
||||
# This assumes a tag is available for final releases
|
||||
branch = 'master' if version.endswith('a') else 'v' + version
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
@ -152,6 +156,13 @@ html_context = {
|
||||
],
|
||||
}
|
||||
|
||||
resource_links = {
|
||||
'discord': 'https://discord.gg/r3sSKJJ',
|
||||
'issues': 'https://github.com/Rapptz/discord.py/issues',
|
||||
'discussions': 'https://github.com/Rapptz/discord.py/discussions',
|
||||
'examples': 'https://github.com/Rapptz/discord.py/tree/%s/examples' % branch,
|
||||
}
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
@ -337,3 +348,4 @@ def setup(app):
|
||||
if app.config.language == 'ja':
|
||||
app.config.intersphinx_mapping['py'] = ('https://docs.python.org/ja/3', None)
|
||||
app.config.html_context['discord_invite'] = 'https://discord.gg/nXzj3dg'
|
||||
app.config.resource_links['discord'] = 'https://discord.gg/nXzj3dg'
|
@ -35,7 +35,7 @@ Creating a Bot account is a pretty straightforward process.
|
||||
|
||||
7. Copy the token using the "Copy" button.
|
||||
|
||||
- **This is not the Client Secret at the General Information page**
|
||||
- **This is not the Client Secret at the General Information page.**
|
||||
|
||||
.. warning::
|
||||
|
||||
|
@ -7,16 +7,29 @@ The following section outlines the API of discord.py's command extension module.
|
||||
|
||||
.. _ext_commands_api_bot:
|
||||
|
||||
Bots
|
||||
------
|
||||
|
||||
Bot
|
||||
----
|
||||
~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.Bot
|
||||
|
||||
.. autoclass:: discord.ext.commands.Bot
|
||||
:members:
|
||||
:inherited-members:
|
||||
|
||||
AutoShardedBot
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.AutoShardedBot
|
||||
|
||||
.. autoclass:: discord.ext.commands.AutoShardedBot
|
||||
:members:
|
||||
|
||||
Prefix Helpers
|
||||
----------------
|
||||
|
||||
.. autofunction:: discord.ext.commands.when_mentioned
|
||||
|
||||
.. autofunction:: discord.ext.commands.when_mentioned_or
|
||||
@ -64,21 +77,39 @@ are custom to the command extension module.
|
||||
|
||||
.. _ext_commands_api_command:
|
||||
|
||||
Command
|
||||
--------
|
||||
Commands
|
||||
----------
|
||||
|
||||
Decorators
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. autofunction:: discord.ext.commands.command
|
||||
|
||||
.. autofunction:: discord.ext.commands.group
|
||||
|
||||
Command
|
||||
~~~~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.Command
|
||||
|
||||
.. autoclass:: discord.ext.commands.Command
|
||||
:members:
|
||||
:special-members: __call__
|
||||
|
||||
Group
|
||||
~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.Group
|
||||
|
||||
.. autoclass:: discord.ext.commands.Group
|
||||
:members:
|
||||
:inherited-members:
|
||||
|
||||
GroupMixin
|
||||
~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.GroupMixin
|
||||
|
||||
.. autoclass:: discord.ext.commands.GroupMixin
|
||||
:members:
|
||||
|
||||
@ -87,28 +118,58 @@ Command
|
||||
Cogs
|
||||
------
|
||||
|
||||
Cog
|
||||
~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.Cog
|
||||
|
||||
.. autoclass:: discord.ext.commands.Cog
|
||||
:members:
|
||||
|
||||
CogMeta
|
||||
~~~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.CogMeta
|
||||
|
||||
.. autoclass:: discord.ext.commands.CogMeta
|
||||
:members:
|
||||
|
||||
.. _ext_commands_help_command:
|
||||
|
||||
Help Commands
|
||||
-----------------
|
||||
---------------
|
||||
|
||||
HelpCommand
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.HelpCommand
|
||||
|
||||
.. autoclass:: discord.ext.commands.HelpCommand
|
||||
:members:
|
||||
|
||||
DefaultHelpCommand
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.DefaultHelpCommand
|
||||
|
||||
.. autoclass:: discord.ext.commands.DefaultHelpCommand
|
||||
:members:
|
||||
:exclude-members: send_bot_help, send_cog_help, send_group_help, send_command_help, prepare_help_command
|
||||
|
||||
MinimalHelpCommand
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.MinimalHelpCommand
|
||||
|
||||
.. autoclass:: discord.ext.commands.MinimalHelpCommand
|
||||
:members:
|
||||
:exclude-members: send_bot_help, send_cog_help, send_group_help, send_command_help, prepare_help_command
|
||||
|
||||
Paginator
|
||||
~~~~~~~~~~
|
||||
|
||||
.. attributetable:: discord.ext.commands.Paginator
|
||||
|
||||
.. autoclass:: discord.ext.commands.Paginator
|
||||
:members:
|
||||
|
||||
@ -190,6 +251,8 @@ Checks
|
||||
Context
|
||||
--------
|
||||
|
||||
.. attributetable:: discord.ext.commands.Context
|
||||
|
||||
.. autoclass:: discord.ext.commands.Context
|
||||
:members:
|
||||
:inherited-members:
|
||||
@ -353,9 +416,15 @@ Exceptions
|
||||
.. autoexception:: discord.ext.commands.ChannelNotReadable
|
||||
:members:
|
||||
|
||||
.. autoexception:: discord.ext.commands.BadColourArgument
|
||||
:members:
|
||||
|
||||
.. autoexception:: discord.ext.commands.RoleNotFound
|
||||
:members:
|
||||
|
||||
.. autoexception:: discord.ext.commands.BadInviteArgument
|
||||
:members:
|
||||
|
||||
.. autoexception:: discord.ext.commands.EmojiNotFound
|
||||
:members:
|
||||
|
||||
@ -409,7 +478,7 @@ Exceptions
|
||||
|
||||
|
||||
Exception Hierarchy
|
||||
+++++++++++++++++++++
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. exception_hierarchy::
|
||||
|
||||
|
@ -713,7 +713,7 @@ Global Checks
|
||||
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.
|
||||
|
||||
Global checks work similarly to regular checks except they are registered with the :func:`.Bot.check` decorator.
|
||||
Global checks work similarly to regular checks except they are registered with the :meth:`.Bot.check` decorator.
|
||||
|
||||
For example, to block all DMs we could do the following:
|
||||
|
||||
|
@ -135,6 +135,8 @@ Doing something during cancellation:
|
||||
API Reference
|
||||
---------------
|
||||
|
||||
.. attributetable:: discord.ext.tasks.Loop
|
||||
|
||||
.. autoclass:: discord.ext.tasks.Loop()
|
||||
:members:
|
||||
|
||||
|
44
docs/extensions/resourcelinks.py
Normal file
44
docs/extensions/resourcelinks.py
Normal file
@ -0,0 +1,44 @@
|
||||
# Credit to sphinx.ext.extlinks for being a good starter
|
||||
# Copyright 2007-2020 by the Sphinx team
|
||||
# Licensed under BSD.
|
||||
|
||||
from typing import Any, Dict, List, Tuple
|
||||
|
||||
from docutils import nodes, utils
|
||||
from docutils.nodes import Node, system_message
|
||||
from docutils.parsers.rst.states import Inliner
|
||||
|
||||
import sphinx
|
||||
from sphinx.application import Sphinx
|
||||
from sphinx.util.nodes import split_explicit_title
|
||||
from sphinx.util.typing import RoleFunction
|
||||
|
||||
|
||||
def make_link_role(resource_links: Dict[str, str]) -> RoleFunction:
|
||||
def role(
|
||||
typ: str,
|
||||
rawtext: str,
|
||||
text: str,
|
||||
lineno: int,
|
||||
inliner: Inliner,
|
||||
options: Dict = {},
|
||||
content: List[str] = []
|
||||
) -> Tuple[List[Node], List[system_message]]:
|
||||
|
||||
text = utils.unescape(text)
|
||||
has_explicit_title, title, key = split_explicit_title(text)
|
||||
full_url = resource_links[key]
|
||||
if not has_explicit_title:
|
||||
title = full_url
|
||||
pnode = nodes.reference(title, title, internal=False, refuri=full_url)
|
||||
return [pnode], []
|
||||
return role
|
||||
|
||||
|
||||
def add_link_role(app: Sphinx) -> None:
|
||||
app.add_role('resource', make_link_role(app.config.resource_links))
|
||||
|
||||
def setup(app: Sphinx) -> Dict[str, Any]:
|
||||
app.add_config_value('resource_links', {}, 'env')
|
||||
app.connect('builder-inited', add_link_role)
|
||||
return {'version': sphinx.__display_version__, 'parallel_read_safe': True}
|
@ -30,41 +30,57 @@ Features
|
||||
- Easy to use with an object oriented design
|
||||
- Optimised for both speed and memory
|
||||
|
||||
Documentation Contents
|
||||
-----------------------
|
||||
Getting started
|
||||
-----------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
Is this your first time using the library? This is the place to get started!
|
||||
|
||||
intro
|
||||
quickstart
|
||||
migrating
|
||||
logging
|
||||
api
|
||||
- **First steps:** :doc:`intro` | :doc:`quickstart` | :doc:`logging`
|
||||
- **Working with Discord:** :doc:`discord` | :doc:`intents`
|
||||
- **Examples:** Many examples are available in the :resource:`repository <examples>`.
|
||||
|
||||
Getting help
|
||||
--------------
|
||||
|
||||
If you're having trouble with something, these resources might help.
|
||||
|
||||
- Try the :doc:`faq` first, it's got answers to all common questions.
|
||||
- Ask us and hang out with us in our :resource:`Discord <discord>` server.
|
||||
- If you're looking for something specific, try the :ref:`index <genindex>` or :ref:`searching <search>`.
|
||||
- Report bugs in the :resource:`issue tracker <issues>`.
|
||||
- Ask in our :resource:`GitHub discussions page <discussions>`.
|
||||
|
||||
Extensions
|
||||
-----------
|
||||
------------
|
||||
|
||||
These extensions help you during development when it comes to common tasks.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
:maxdepth: 1
|
||||
|
||||
ext/commands/index.rst
|
||||
ext/tasks/index.rst
|
||||
|
||||
Manuals
|
||||
---------
|
||||
|
||||
Additional Information
|
||||
-----------------------
|
||||
These pages go into great detail about everything the API can do.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:maxdepth: 1
|
||||
|
||||
discord
|
||||
intents
|
||||
faq
|
||||
whats_new
|
||||
version_guarantees
|
||||
api
|
||||
discord.ext.commands API Reference <ext/commands/api.rst>
|
||||
discord.ext.tasks API Reference <ext/tasks/index.rst>
|
||||
|
||||
If you still can't find what you're looking for, try in one of the following pages:
|
||||
Meta
|
||||
------
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
||||
If you're looking for something related to the project itself, it's here.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
whats_new
|
||||
version_guarantees
|
||||
migrating
|
||||
|
@ -60,7 +60,7 @@ With the API change requiring bot authors to specify intents, some intents were
|
||||
A privileged intent is one that requires you to go to the developer portal and manually enable it. To enable privileged intents do the following:
|
||||
|
||||
1. Make sure you're logged on to the `Discord website <https://discord.com>`_.
|
||||
2. Navigate to the `application page <https://discord.com/developers/applications>`_
|
||||
2. Navigate to the `application page <https://discord.com/developers/applications>`_.
|
||||
3. Click on the bot you want to enable privileged intents for.
|
||||
4. Navigate to the bot tab on the left side of the screen.
|
||||
|
||||
@ -74,7 +74,7 @@ A privileged intent is one that requires you to go to the developer portal and m
|
||||
|
||||
.. warning::
|
||||
|
||||
Enabling privileged intents when your bot is in over 100 guilds requires going through `bot verification <https://support.discord.com/hc/en-us/articles/360040720412>`_. If your bot is already verified and you would like to enable a privileged intent you must go through `discord support <https://dis.gd/contact>`_ and talk to them about it.
|
||||
Enabling privileged intents when your bot is in over 100 guilds requires going through `bot verification <https://support.discord.com/hc/en-us/articles/360040720412>`_. If your bot is already verified and you would like to enable a privileged intent you must go through `Discord support <https://dis.gd/contact>`_ and talk to them about it.
|
||||
|
||||
.. note::
|
||||
|
||||
@ -203,4 +203,4 @@ On Windows use ``py -3`` instead of ``python3``.
|
||||
|
||||
There is no currently set date in which the old gateway will stop working so it is recommended to update your code instead.
|
||||
|
||||
If you truly dislike the direction Discord is going with their API, you can contact them via `support <https://dis.gd/contact>`_
|
||||
If you truly dislike the direction Discord is going with their API, you can contact them via `support <https://dis.gd/contact>`_.
|
||||
|
@ -52,7 +52,7 @@ Virtual Environments
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Sometimes you want to keep libraries from polluting system installs or use a different version of
|
||||
libraries than the ones installed on the system. You might also not have permissions to install libaries system-wide.
|
||||
libraries than the ones installed on the system. You might also not have permissions to install libraries system-wide.
|
||||
For this purpose, the standard library as of Python 3.3 comes with a concept called "Virtual Environment"s to
|
||||
help maintain these separate versions.
|
||||
|
||||
|
@ -11,7 +11,7 @@ if you don't check the :ref:`installing` portion.
|
||||
A Minimal Bot
|
||||
---------------
|
||||
|
||||
Let's make a bot that replies to a specific message and walk you through it.
|
||||
Let's make a bot that responds to a specific message and walk you through it.
|
||||
|
||||
It looks something like this:
|
||||
|
||||
@ -53,7 +53,7 @@ There's a lot going on here, so let's walk you through it step by step.
|
||||
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`.
|
||||
5. 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!'``.
|
||||
then we send a message in the channel it was used in with ``'Hello!'``.
|
||||
6. 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.
|
||||
|
||||
|
@ -66,6 +66,78 @@ New Features
|
||||
|
||||
- |commands| Add :attr:`Context.clean_prefix <ext.commands.Context>`
|
||||
|
||||
.. _vp1p6p0:
|
||||
|
||||
v1.6.0
|
||||
--------
|
||||
|
||||
This version comes with support for replies and stickers.
|
||||
|
||||
New Features
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- An entirely redesigned documentation. This was the cumulation of multiple months of effort.
|
||||
- There's now a dark theme, feel free to navigate to the cog on the screen to change your setting, though this should be automatic.
|
||||
- Add support for :meth:`AppInfo.icon_url_as` and :meth:`AppInfo.cover_image_url_as` (:issue:`5888`)
|
||||
- Add :meth:`Colour.random` to get a random colour (:issue:`6067`)
|
||||
- Add support for stickers via :class:`Sticker` (:issue:`5946`)
|
||||
- Add support for replying via :meth:`Message.reply` (:issue:`6061`)
|
||||
- This also comes with the :attr:`AllowedMentions.replied_user` setting.
|
||||
- :meth:`abc.Messageable.send` can now accept a :class:`MessageReference`.
|
||||
- :class:`MessageReference` can now be constructed by users.
|
||||
- :meth:`Message.to_reference` can now convert a message to a :class:`MessageReference`.
|
||||
- Add support for getting the replied to resolved message through :attr:`MessageReference.resolved`.
|
||||
- Add support for role tags.
|
||||
- :attr:`Guild.premium_subscriber_role` to get the "Nitro Booster" role (if available).
|
||||
- :attr:`Guild.self_role` to get the bot's own role (if available).
|
||||
- :attr:`Role.tags` to get the role's tags.
|
||||
- :meth:`Role.is_premium_subscriber` to check if a role is the "Nitro Booster" role.
|
||||
- :meth:`Role.is_bot_managed` to check if a role is a bot role (i.e. the automatically created role for bots).
|
||||
- :meth:`Role.is_integration` to check if a role is role created by an integration.
|
||||
- Add :meth:`Client.is_ws_ratelimited` to check if the websocket is rate limited.
|
||||
- :meth:`ShardInfo.is_ws_ratelimited` is the equivalent for checking a specific shard.
|
||||
- Add support for chunking an :class:`AsyncIterator` through :meth:`AsyncIterator.chunk` (:issue:`6100`, :issue:`6082`)
|
||||
- Add :attr:`PartialEmoji.created_at` (:issue:`6128`)
|
||||
- Add support for editing and deleting webhook sent messages (:issue:`6058`)
|
||||
- This adds :class:`WebhookMessage` as well to power this behaviour.
|
||||
- Add :class:`PartialMessage` to allow working with a message via channel objects and just a message_id (:issue:`5905`)
|
||||
- This is useful if you don't want to incur an extra API call to fetch the message.
|
||||
- Add :meth:`Emoji.url_as` (:issue:`6162`)
|
||||
- Add support for :attr:`Member.pending` for the membership gating feature.
|
||||
- Allow ``colour`` parameter to take ``int`` in :meth:`Guild.create_role` (:issue:`6195`)
|
||||
- Add support for ``presences`` in :meth:`Guild.query_members` (:issue:`2354`)
|
||||
- |commands| Add support for ``description`` keyword argument in :class:`commands.Cog <ext.commands.Cog>` (:issue:`6028`)
|
||||
- |tasks| Add support for calling the wrapped coroutine as a function via ``__call__``.
|
||||
|
||||
|
||||
Bug Fixes
|
||||
~~~~~~~~~~~
|
||||
|
||||
- Raise :exc:`DiscordServerError` when reaching 503s repeatedly (:issue:`6044`)
|
||||
- Fix :exc:`AttributeError` when :meth:`Client.fetch_template` is called (:issue:`5986`)
|
||||
- Fix errors when playing audio and moving to another channel (:issue:`5953`)
|
||||
- Fix :exc:`AttributeError` when voice channels disconnect too fast (:issue:`6039`)
|
||||
- Fix stale :class:`User` references when the members intent is off.
|
||||
- Fix :func:`on_user_update` not dispatching in certain cases when a member is not cached but the user somehow is.
|
||||
- Fix :attr:`Message.author` being overwritten in certain cases during message update.
|
||||
- This would previously make it so :attr:`Message.author` is a :class:`User`.
|
||||
- Fix :exc:`UnboundLocalError` for editing ``public_updates_channel`` in :meth:`Guild.edit` (:issue:`6093`)
|
||||
- Fix uninitialised :attr:`CustomActivity.created_at` (:issue:`6095`)
|
||||
- |commands| Errors during cog unload no longer stops module cleanup (:issue:`6113`)
|
||||
- |commands| Properly cleanup lingering commands when a conflicting alias is found when adding commands (:issue:`6217`)
|
||||
|
||||
Miscellaneous
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
- ``ffmpeg`` spawned processes no longer open a window in Windows (:issue:`6038`)
|
||||
- Update dependencies to allow the library to work on Python 3.9+ without requiring build tools. (:issue:`5984`, :issue:`5970`)
|
||||
- Fix docstring issue leading to a SyntaxError in 3.9 (:issue:`6153`)
|
||||
- Update Windows opus binaries from 1.2.1 to 1.3.1 (:issue:`6161`)
|
||||
- Allow :meth:`Guild.create_role` to accept :class:`int` as the ``colour`` parameter (:issue:`6195`)
|
||||
- |commands| :class:`MessageConverter <ext.commands.MessageConverter>` regex got updated to support ``www.`` prefixes (:issue:`6002`)
|
||||
- |commands| :class:`UserConverter <ext.commands.UserConverter>` now fetches the API if an ID is passed and the user is not cached.
|
||||
- |commands| :func:`max_concurrency <ext.commands.max_concurrency>` is now called before cooldowns (:issue:`6172`)
|
||||
|
||||
.. _vp1p5p1:
|
||||
|
||||
v1.5.1
|
||||
|
Reference in New Issue
Block a user