1885 lines
256 KiB
HTML
1885 lines
256 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Changelog</title>
|
||
<!-- end extra head -->
|
||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||
<link rel="stylesheet" type="text/css" href="_static/basic.css" />
|
||
<link rel="stylesheet" href="_static/style.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/codeblocks.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/icons.css" type="text/css" />
|
||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||
<script src="_static/jquery.js"></script>
|
||
<script src="_static/underscore.js"></script>
|
||
<script src="_static/doctools.js"></script>
|
||
<script src="_static/custom.js"></script>
|
||
<script src="_static/settings.js"></script>
|
||
<script src="_static/copy.js"></script>
|
||
<script src="_static/sidebar.js"></script>
|
||
<link rel="shortcut icon" href="_static/discord_py_logo.ico"/>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="Version Guarantees" href="version_guarantees.html" />
|
||
<link rel="prev" title="API Reference" href="api.html" />
|
||
</head>
|
||
<body>
|
||
<div class="main-grid">
|
||
<header class="grid-item">
|
||
<nav>
|
||
<a href="index.html" class="main-heading">discord.py</a>
|
||
<a href="https://github.com/Rapptz/discord.py" title="GitHub"><span class="material-icons custom-icons">github</span></a>
|
||
<a href="https://discord.gg/TvqYBrGXEm" title="Discord"><span class="material-icons custom-icons">discord</span></a>
|
||
<a href="faq.html" title="FAQ"><span class="material-icons">help_center</span></a>
|
||
<a onclick="mobileSearch.open();" title="Search" id="open-search" class="mobile-only"><span class="material-icons">search</span></a>
|
||
<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">
|
||
<div class="search-wrapper">
|
||
<input type="search" name="q" placeholder="Search documentation" />
|
||
<button type="submit">
|
||
<span class="material-icons">search</span>
|
||
</button>
|
||
</div>
|
||
</form>
|
||
</nav>
|
||
</header>
|
||
<div class="sub-header grid-item">
|
||
<label for="documentation_select">View Documentation For</label>
|
||
<select id="documentation_select" onchange="window.location = this.value;">
|
||
<option value="#" selected>discord</option>
|
||
<option value="ext/commands/index.html" >discord.ext.commands</option>
|
||
<option value="ext/tasks/index.html" >discord.ext.tasks</option>
|
||
</select>
|
||
<form role="search" class="search" action="search.html" method="get">
|
||
<div class="search-wrapper">
|
||
<input type="search" name="q" placeholder="Search documentation" />
|
||
<button type="submit">
|
||
<span class="material-icons">search</span>
|
||
</button>
|
||
</div>
|
||
</form>
|
||
<a accesskey="S" class="settings" onclick="settingsModal.open();"><span class="material-icons">settings</span></a>
|
||
</div>
|
||
<aside class="grid-item">
|
||
<span id="hamburger-toggle">
|
||
<span class="material-icons">menu</span>
|
||
</span>
|
||
<span id="settings-toggle" class="settings" onclick="settingsModal.open();">
|
||
<span class="material-icons">settings</span>
|
||
</span>
|
||
<div id="sidebar">
|
||
<h3><a href="index.html">Table of Contents</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#">Changelog</a><ul>
|
||
<li><a class="reference internal" href="#v2-0-0">v2.0.0</a><ul>
|
||
<li><a class="reference internal" href="#breaking-changes">Breaking Changes</a></li>
|
||
<li><a class="reference internal" href="#new-features">New Features</a></li>
|
||
<li><a class="reference internal" href="#bug-fixes">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-7-3">v1.7.3</a><ul>
|
||
<li><a class="reference internal" href="#id1">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-7-2">v1.7.2</a><ul>
|
||
<li><a class="reference internal" href="#id2">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-7-1">v1.7.1</a><ul>
|
||
<li><a class="reference internal" href="#id3">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-7-0">v1.7.0</a><ul>
|
||
<li><a class="reference internal" href="#id4">New Features</a></li>
|
||
<li><a class="reference internal" href="#id5">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#miscellaneous">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-6-0">v1.6.0</a><ul>
|
||
<li><a class="reference internal" href="#id6">New Features</a></li>
|
||
<li><a class="reference internal" href="#id7">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id8">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-5-1">v1.5.1</a><ul>
|
||
<li><a class="reference internal" href="#id9">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id10">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-5-0">v1.5.0</a><ul>
|
||
<li><a class="reference internal" href="#api-changes">API Changes</a></li>
|
||
<li><a class="reference internal" href="#id11">New Features</a></li>
|
||
<li><a class="reference internal" href="#id12">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id13">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-4-2">v1.4.2</a><ul>
|
||
<li><a class="reference internal" href="#id14">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id15">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-4-1">v1.4.1</a><ul>
|
||
<li><a class="reference internal" href="#id16">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-4-0">v1.4.0</a><ul>
|
||
<li><a class="reference internal" href="#id17">New Features</a></li>
|
||
<li><a class="reference internal" href="#id18">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id19">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-3-4">v1.3.4</a><ul>
|
||
<li><a class="reference internal" href="#id20">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-3-3">v1.3.3</a><ul>
|
||
<li><a class="reference internal" href="#id21">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-3-2">v1.3.2</a><ul>
|
||
<li><a class="reference internal" href="#id22">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-3-1">v1.3.1</a><ul>
|
||
<li><a class="reference internal" href="#id23">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id24">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-3-0">v1.3.0</a><ul>
|
||
<li><a class="reference internal" href="#id25">New Features</a></li>
|
||
<li><a class="reference internal" href="#id26">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id27">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-2-5">v1.2.5</a><ul>
|
||
<li><a class="reference internal" href="#id28">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-2-4">v1.2.4</a><ul>
|
||
<li><a class="reference internal" href="#id29">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-2-3">v1.2.3</a><ul>
|
||
<li><a class="reference internal" href="#id30">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-2-2">v1.2.2</a><ul>
|
||
<li><a class="reference internal" href="#id31">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-2-1">v1.2.1</a><ul>
|
||
<li><a class="reference internal" href="#id32">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-2-0">v1.2.0</a><ul>
|
||
<li><a class="reference internal" href="#id33">New Features</a></li>
|
||
<li><a class="reference internal" href="#id34">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id35">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-1-1">v1.1.1</a><ul>
|
||
<li><a class="reference internal" href="#id36">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id37">Miscellaneous</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-1-0">v1.1.0</a><ul>
|
||
<li><a class="reference internal" href="#id38">New Features</a><ul>
|
||
<li><a class="reference internal" href="#discord-ext-commands"><code class="docutils literal notranslate"><span class="pre">discord.ext.commands</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#id39">Bug Fixes</a><ul>
|
||
<li><a class="reference internal" href="#id40"><code class="docutils literal notranslate"><span class="pre">discord.ext.commands</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#id41">Miscellaneous</a><ul>
|
||
<li><a class="reference internal" href="#id42"><code class="docutils literal notranslate"><span class="pre">discord.ext.commands</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-0-1">v1.0.1</a><ul>
|
||
<li><a class="reference internal" href="#id43">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v1-0-0">v1.0.0</a></li>
|
||
<li><a class="reference internal" href="#v0-16-6">v0.16.6</a><ul>
|
||
<li><a class="reference internal" href="#id44">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-16-1">v0.16.1</a><ul>
|
||
<li><a class="reference internal" href="#id45">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-16-0">v0.16.0</a><ul>
|
||
<li><a class="reference internal" href="#id46">New Features</a></li>
|
||
<li><a class="reference internal" href="#id47">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-15-1">v0.15.1</a></li>
|
||
<li><a class="reference internal" href="#v0-15-0">v0.15.0</a><ul>
|
||
<li><a class="reference internal" href="#id48">New Features</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-14-3">v0.14.3</a><ul>
|
||
<li><a class="reference internal" href="#id49">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-14-2">v0.14.2</a><ul>
|
||
<li><a class="reference internal" href="#id50">New Features</a></li>
|
||
<li><a class="reference internal" href="#id51">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-14-1">v0.14.1</a><ul>
|
||
<li><a class="reference internal" href="#id52">Bug fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-14-0">v0.14.0</a><ul>
|
||
<li><a class="reference internal" href="#id53">New Features</a></li>
|
||
<li><a class="reference internal" href="#id54">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-13-0">v0.13.0</a><ul>
|
||
<li><a class="reference internal" href="#id55">New Features</a></li>
|
||
<li><a class="reference internal" href="#id56">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-12-0">v0.12.0</a><ul>
|
||
<li><a class="reference internal" href="#id57">New Features</a></li>
|
||
<li><a class="reference internal" href="#id58">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-11-0">v0.11.0</a><ul>
|
||
<li><a class="reference internal" href="#id59">Breaking Changes</a></li>
|
||
<li><a class="reference internal" href="#id60">New Features</a></li>
|
||
<li><a class="reference internal" href="#id61">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#v0-10-0">v0.10.0</a><ul>
|
||
<li><a class="reference internal" href="#id62">New Features</a></li>
|
||
<li><a class="reference internal" href="#performance-improvements">Performance Improvements</a></li>
|
||
<li><a class="reference internal" href="#id63">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</aside>
|
||
<main class="grid-item" role="main">
|
||
|
||
<section id="changelog">
|
||
<span id="whats-new"></span><h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1>
|
||
<p>This page keeps a detailed human friendly rendering of what’s new and changed
|
||
in specific versions.</p>
|
||
<section id="v2-0-0">
|
||
<span id="vp2p0p0"></span><h2>v2.0.0<a class="headerlink" href="#v2-0-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This version was partly developed by Danny, and partly by the enhanced-discord.py contributors.
|
||
The library has been updated with breaking changes, and as such the major version was changed.</p>
|
||
<ul class="simple">
|
||
<li><dl class="simple">
|
||
<dt>Performance of the library has improved significantly (all times with 1 process and 1 AutoShardedBot):</dt><dd><ul>
|
||
<li><p>735 guilds boot up time (with chunking): 57s/1.7 GiB RAM -> 42s/1.4 GiB RAM</p></li>
|
||
<li><p>27k guilds boot up time (with chunking): 477s/8 GiB RAM -> 303s/7.2 GiB RAM</p></li>
|
||
<li><p>48k guilds boot up time (without chunking): 109s -> 67s</p></li>
|
||
<li><p>106k guilds boot up time (without chunking): 3300s -> 3090s</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><dl class="simple">
|
||
<dt>The entire public API of the library is now completely type hinted.</dt><dd><ul>
|
||
<li><p>There may still be bugs however.</p></li>
|
||
<li><p>For best type hinting experience consider using Pyright.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Almost all edit methods now return their updated counterpart rather than doing an in-place edit.</p></li>
|
||
<li><p>Japanese docs were removed, as we are no longer able to keep them in sync.</p></li>
|
||
</ul>
|
||
<section id="breaking-changes">
|
||
<h3>Breaking Changes<a class="headerlink" href="#breaking-changes" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><a class="reference internal" href="api.html#discord.Asset.replace" title="discord.Asset.replace"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Asset.replace()</span></code></a> now only accepts keyword arguments</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Asset.with_</span></code> functions now only accept positional only arguments</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.TextChannel.get_partial_message" title="discord.TextChannel.get_partial_message"><code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.get_partial_message()</span></code></a> is now pos-only</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.TextChannel.get_thread" title="discord.TextChannel.get_thread"><code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.get_thread()</span></code></a> is now pos-only</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">permissions_for</span></code> is now pos-only</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.GroupChannel.owner" title="discord.GroupChannel.owner"><code class="xref py py-attr docutils literal notranslate"><span class="pre">GroupChannel.owner</span></code></a> is now Optional</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">edit</span></code> methods now only accept None if it actually means something (e.g. clearing it)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">timeout</span></code> parameter for <code class="docutils literal notranslate"><span class="pre">ui.View.__init__</span></code> is now keyword only</p></li>
|
||
<li><dl class="simple">
|
||
<dt>When an interaction has already been responded and another one is sent, <a class="reference internal" href="api.html#discord.InteractionResponded" title="discord.InteractionResponded"><code class="xref py py-exc docutils literal notranslate"><span class="pre">InteractionResponded</span></code></a> is now raised.</dt><dd><ul>
|
||
<li><p>Discord’s API only allows a single <code class="xref py py-attr docutils literal notranslate"><span class="pre">interaction.response</span></code>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><dl class="simple">
|
||
<dt>Separate <a class="reference internal" href="api.html#discord.on_member_update" title="discord.on_member_update"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_member_update()</span></code></a> and <a class="reference internal" href="api.html#discord.on_presence_update" title="discord.on_presence_update"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_presence_update()</span></code></a></dt><dd><ul>
|
||
<li><p>The new event <a class="reference internal" href="api.html#discord.on_presence_update" title="discord.on_presence_update"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_presence_update()</span></code></a> is now called when status/activity is changed.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.on_member_update" title="discord.on_member_update"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_member_update()</span></code></a> will now no longer have status/activity changes.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>afk parameter in <a class="reference internal" href="api.html#discord.Client.change_presence" title="discord.Client.change_presence"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.change_presence()</span></code></a> is removed</p></li>
|
||
<li><dl class="simple">
|
||
<dt>The undocumented private <code class="xref py py-func docutils literal notranslate"><span class="pre">on_socket_response()</span></code> event got removed.</dt><dd><ul>
|
||
<li><p>Consider using the newer documented <a class="reference internal" href="api.html#discord.on_socket_event_type" title="discord.on_socket_event_type"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_socket_event_type()</span></code></a> event instead.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Using <a class="reference internal" href="api.html#discord.on_socket_raw_receive" title="discord.on_socket_raw_receive"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_socket_raw_receive()</span></code></a> and <a class="reference internal" href="api.html#discord.on_socket_raw_send" title="discord.on_socket_raw_send"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_socket_raw_send()</span></code></a> are now opt-in via <code class="xref py py-attr docutils literal notranslate"><span class="pre">enable_debug_events</span></code> toggle.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.on_socket_raw_receive" title="discord.on_socket_raw_receive"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_socket_raw_receive()</span></code></a> is now only dispatched after decompressing the payload.</p></li>
|
||
<li><p>Persistent View dispatch mechanism now uses the <code class="docutils literal notranslate"><span class="pre">message_id</span></code> key if provided.</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.start_thread()</span></code> was renamed to <a class="reference internal" href="api.html#discord.Message.create_thread" title="discord.Message.create_thread"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.create_thread()</span></code></a></p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.start_thread()</span></code> was renamed to <a class="reference internal" href="api.html#discord.TextChannel.create_thread" title="discord.TextChannel.create_thread"><code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.create_thread()</span></code></a></p></li>
|
||
<li><p>All <code class="docutils literal notranslate"><span class="pre">get_</span></code> lookup functions now use positional-only parameters for the id parameter.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Remove <code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.active_threads()</span></code> due to the endpoint being deprecated and slated for removal.</dt><dd><ul>
|
||
<li><p>Use <a class="reference internal" href="api.html#discord.Guild.active_threads" title="discord.Guild.active_threads"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.active_threads()</span></code></a> instead.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><dl class="simple">
|
||
<dt><a class="reference internal" href="api.html#discord.User.avatar" title="discord.User.avatar"><code class="xref py py-attr docutils literal notranslate"><span class="pre">User.avatar</span></code></a> now returns None if the user did not upload an avatar.</dt><dd><ul>
|
||
<li><p>Use <a class="reference internal" href="api.html#discord.User.display_avatar" title="discord.User.display_avatar"><code class="xref py py-attr docutils literal notranslate"><span class="pre">User.display_avatar</span></code></a> to get the avatar and fallback to the default avatar to go back to the old behaviour.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
<section id="new-features">
|
||
<h3>New Features<a class="headerlink" href="#new-features" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Channel types are now typed</p></li>
|
||
<li><p>Member is now typed</p></li>
|
||
<li><p>Client is now typed</p></li>
|
||
<li><p>Permissions are now typed</p></li>
|
||
<li><p>Core library errors are now typed</p></li>
|
||
<li><p>Add various examples showing how to use views. There are more to come.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.GroupChannel.owner_id" title="discord.GroupChannel.owner_id"><code class="xref py py-attr docutils literal notranslate"><span class="pre">GroupChannel.owner_id</span></code></a> now gets the owner ID</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">edit</span></code> methods now don’t rely on previous state</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">View.from_message()</span></code> converts a Message.components to a View</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Thread.type" title="discord.Thread.type"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Thread.type</span></code></a> to get the thread channel type</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.ButtonStyle.url" title="discord.ButtonStyle.url"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ButtonStyle.url</span></code></a> alias for <a class="reference internal" href="api.html#discord.ButtonStyle.link" title="discord.ButtonStyle.link"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ButtonStyle.link</span></code></a></p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add default style for <a class="reference internal" href="api.html#discord.ui.Button" title="discord.ui.Button"><code class="xref py py-class docutils literal notranslate"><span class="pre">ui.Button</span></code></a> constructor</dt><dd><ul>
|
||
<li><p>This makes it so creating a URL button is as simple as <code class="docutils literal notranslate"><span class="pre">ui.Button(url='...',</span> <span class="pre">label='...')</span></code></p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Thread.mention" title="discord.Thread.mention"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Thread.mention</span></code></a> to get the mention string for a thread</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Thread.is_nsfw" title="discord.Thread.is_nsfw"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Thread.is_nsfw()</span></code></a> to check whether the parent channel of the thread is NSFW</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for fetching the original interaction response message.</dt><dd><ul>
|
||
<li><p><a class="reference internal" href="api.html#discord.Interaction.original_message" title="discord.Interaction.original_message"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Interaction.original_message()</span></code></a> will retrieve it and returns an InteractionMessage</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.InteractionMessage.edit" title="discord.InteractionMessage.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">InteractionMessage.edit()</span></code></a> or <a class="reference internal" href="api.html#discord.Interaction.edit_original_message" title="discord.Interaction.edit_original_message"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Interaction.edit_original_message()</span></code></a> will edit it</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.InteractionMessage.delete" title="discord.InteractionMessage.delete"><code class="xref py py-meth docutils literal notranslate"><span class="pre">InteractionMessage.delete()</span></code></a> or <a class="reference internal" href="api.html#discord.Interaction.delete_original_message" title="discord.Interaction.delete_original_message"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Interaction.delete_original_message()</span></code></a> will delete it</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p><a class="reference internal" href="api.html#discord.MessageFlags.ephemeral" title="discord.MessageFlags.ephemeral"><code class="xref py py-attr docutils literal notranslate"><span class="pre">MessageFlags.ephemeral</span></code></a> to get whether a message is ephemeral</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Client.fetch_channel" title="discord.Client.fetch_channel"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.fetch_channel()</span></code></a> now fetches threads as well</p></li>
|
||
<li><dl class="simple">
|
||
<dt><a class="reference internal" href="api.html#discord.SelectOption" title="discord.SelectOption"><code class="xref py py-class docutils literal notranslate"><span class="pre">SelectOption</span></code></a> now has a __str__ that matches the client representation.</dt><dd><ul>
|
||
<li><p>This might change in the future to remove the description from it.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add a converter for <a class="reference internal" href="api.html#discord.Thread" title="discord.Thread"><code class="xref py py-class docutils literal notranslate"><span class="pre">discord.Thread</span></code></a></p></li>
|
||
<li><p>Allow <code class="docutils literal notranslate"><span class="pre">clean_content</span></code> converter to work stand-alone</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add <a class="reference internal" href="api.html#discord.User.banner" title="discord.User.banner"><code class="xref py py-meth docutils literal notranslate"><span class="pre">User.banner()</span></code></a> to get a user’s banner and <a class="reference internal" href="api.html#discord.User.accent_colour" title="discord.User.accent_colour"><code class="xref py py-meth docutils literal notranslate"><span class="pre">User.accent_colour()</span></code></a> to get the set banner colour.</dt><dd><ul>
|
||
<li><p>Due to an API limitation this requires using <a class="reference internal" href="api.html#discord.Client.fetch_user" title="discord.Client.fetch_user"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.fetch_user()</span></code></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">reason</span></code> keyword argument to more methods</p></li>
|
||
<li><p>Add audit log events for threads</p></li>
|
||
<li><p>Allow public threads to be created without a starter message</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.get_channel_or_thread" title="discord.Guild.get_channel_or_thread"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.get_channel_or_thread()</span></code></a> helper method</p></li>
|
||
<li><p>Add full support for the new sticker API</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.on_socket_event_type" title="discord.on_socket_event_type"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_socket_event_type()</span></code></a> event to get the event type of an event</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.TextChannel.default_auto_archive_duration" title="discord.TextChannel.default_auto_archive_duration"><code class="xref py py-attr docutils literal notranslate"><span class="pre">TextChannel.default_auto_archive_duration</span></code></a></p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add <a class="reference internal" href="api.html#discord.PartialMessageable" title="discord.PartialMessageable"><code class="xref py py-class docutils literal notranslate"><span class="pre">PartialMessageable</span></code></a> type to allow for sending messages to a channel using only its <code class="docutils literal notranslate"><span class="pre">channel_id</span></code>.</dt><dd><ul>
|
||
<li><p>This is constructed with <a class="reference internal" href="api.html#discord.Client.get_partial_messageable" title="discord.Client.get_partial_messageable"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.get_partial_messageable()</span></code></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.active_threads" title="discord.Guild.active_threads"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.active_threads()</span></code></a> to get all of a guild’s active threads.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Thread.members" title="discord.Thread.members"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Thread.members</span></code></a> to get all cached <a class="reference internal" href="api.html#discord.ThreadMember" title="discord.ThreadMember"><code class="xref py py-class docutils literal notranslate"><span class="pre">ThreadMember</span></code></a> instances of a thread.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add <a class="reference internal" href="api.html#discord.Thread.fetch_members" title="discord.Thread.fetch_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Thread.fetch_members()</span></code></a> to fetch all <a class="reference internal" href="api.html#discord.ThreadMember" title="discord.ThreadMember"><code class="xref py py-class docutils literal notranslate"><span class="pre">ThreadMember</span></code></a> instances of a thread.</dt><dd><ul>
|
||
<li><p>These two require <a class="reference internal" href="api.html#discord.Intents.members" title="discord.Intents.members"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Intents.members</span></code></a> to be useful.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for guild avatars for members under <a class="reference internal" href="api.html#discord.Member.guild_avatar" title="discord.Member.guild_avatar"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.guild_avatar</span></code></a></p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.User.display_avatar" title="discord.User.display_avatar"><code class="xref py py-attr docutils literal notranslate"><span class="pre">User.display_avatar</span></code></a> and <a class="reference internal" href="api.html#discord.Member.display_avatar" title="discord.Member.display_avatar"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.display_avatar</span></code></a> to get the user’s displayed avatar.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Colour.brand_green" title="discord.Colour.brand_green"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Colour.brand_green</span></code></a> and <a class="reference internal" href="api.html#discord.Colour.brand_red" title="discord.Colour.brand_red"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Colour.brand_red</span></code></a></p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <code class="xref py py-attr docutils literal notranslate"><span class="pre">CommandOnCooldown.type</span></code> to get back the type of the cooldown since it was removed from <code class="xref py py-class docutils literal notranslate"><span class="pre">Cooldown</span></code></p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.bots" title="discord.Guild.bots"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.bots</span></code></a> and <a class="reference internal" href="api.html#discord.Guild.humans" title="discord.Guild.humans"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.humans</span></code></a></p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="bug-fixes">
|
||
<h3>Bug Fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="xref py py-class docutils literal notranslate"><span class="pre">Channel</span></code> converters now work in DMs again</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Interaction.channel" title="discord.Interaction.channel"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Interaction.channel</span></code></a> being None in threads</p></li>
|
||
<li><p>Change timeouts in <a class="reference internal" href="api.html#discord.ui.View" title="discord.ui.View"><code class="xref py py-class docutils literal notranslate"><span class="pre">ui.View</span></code></a> to work as documented</p></li>
|
||
<li><p><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.__repr__</span></code> now shows the proper type, e.g. <a class="reference internal" href="api.html#discord.WebhookMessage" title="discord.WebhookMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">WebhookMessage</span></code></a> and <a class="reference internal" href="api.html#discord.InteractionMessage" title="discord.InteractionMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">InteractionMessage</span></code></a></p></li>
|
||
<li><p>Change <code class="xref py py-class docutils literal notranslate"><span class="pre">Cooldown</span></code> handling to not reset token window when the number of tokens reaches 0</p></li>
|
||
<li><p>Fix audit log permission construction breaking due to unexpected type errors.</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.on_thread_join" title="discord.on_thread_join"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_thread_join()</span></code></a> not dispatching when a thread is unarchived</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Message.guild" title="discord.Message.guild"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.guild</span></code></a> being None when a thread is unarchived due to a new message</p></li>
|
||
<li><p><code class="xref py py-class docutils literal notranslate"><span class="pre">MessageConverter</span></code> now works with threads</p></li>
|
||
<li><p>Retry requests when a 504 is hit</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Thread.slowmode_delay" title="discord.Thread.slowmode_delay"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Thread.slowmode_delay</span></code></a> not updating on edit</p></li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">permissions_for</span></code> for roles</p></li>
|
||
<li><p>Update <a class="reference internal" href="api.html#discord.Message.system_content" title="discord.Message.system_content"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.system_content</span></code></a> for newer message types</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.PartialMessage" title="discord.PartialMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">PartialMessage</span></code></a> not working with threads</p></li>
|
||
<li><p>Fix crash with stage instances not having the documented <code class="docutils literal notranslate"><span class="pre">discoverable_enabled</span></code> key</p></li>
|
||
<li><p>Fix some built-in checks not working with threads</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.SyncWebhook" title="discord.SyncWebhook"><code class="xref py py-class docutils literal notranslate"><span class="pre">SyncWebhook</span></code></a> not working in a multi-threaded context</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.on_thread_member_remove" title="discord.on_thread_member_remove"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_thread_member_remove()</span></code></a> not dispatching properly</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.on_typing" title="discord.on_typing"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_typing()</span></code></a> not dispatching for threads</p></li>
|
||
<li><p>Update <a class="reference internal" href="api.html#discord.Message.is_system" title="discord.Message.is_system"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.is_system</span></code></a> to work with newer message types</p></li>
|
||
<li><p>Fix some enums like <a class="reference internal" href="api.html#discord.VerificationLevel" title="discord.VerificationLevel"><code class="xref py py-class docutils literal notranslate"><span class="pre">VerificationLevel</span></code></a> not being comparable.</p></li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">io.BytesIO</span></code> sources not working with ffmpeg players</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Client.fetch_channel" title="discord.Client.fetch_channel"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.fetch_channel()</span></code></a> and <a class="reference internal" href="api.html#discord.Guild.fetch_channel" title="discord.Guild.fetch_channel"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.fetch_channel()</span></code></a> not returning threads</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-7-3">
|
||
<span id="vp1p7p3"></span><h2>v1.7.3<a class="headerlink" href="#v1-7-3" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id1">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix a crash involving guild uploaded stickers</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.DMChannel.permissions_for" title="discord.DMChannel.permissions_for"><code class="xref py py-meth docutils literal notranslate"><span class="pre">DMChannel.permissions_for()</span></code></a> not having <a class="reference internal" href="api.html#discord.Permissions.read_messages" title="discord.Permissions.read_messages"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.read_messages</span></code></a> set.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-7-2">
|
||
<span id="vp1p7p2"></span><h2>v1.7.2<a class="headerlink" href="#v1-7-2" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id2">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">fail_if_not_exists</span></code> causing certain message references to not be usable within <a class="reference internal" href="api.html#discord.abc.Messageable.send" title="discord.abc.Messageable.send"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.Messageable.send()</span></code></a> and <a class="reference internal" href="api.html#discord.Message.reply" title="discord.Message.reply"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.reply()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6726">GH-6726</a>)</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Guild.chunk" title="discord.Guild.chunk"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.chunk()</span></code></a> hanging when the user left the guild. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6730">GH-6730</a>)</p></li>
|
||
<li><p>Fix loop sleeping after final iteration rather than before (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6744">GH-6744</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-7-1">
|
||
<span id="vp1p7p1"></span><h2>v1.7.1<a class="headerlink" href="#v1-7-1" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id3">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Cog.has_error_handler" title="discord.ext.commands.Cog.has_error_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Cog.has_error_handler</span></code></a> not working as intended.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-7-0">
|
||
<span id="vp1p7p0"></span><h2>v1.7.0<a class="headerlink" href="#v1-7-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This version is mainly for improvements and bug fixes. This is more than likely the last major version in the 1.x series.
|
||
Work after this will be spent on v2.0. As a result, <strong>this is the last version to support Python 3.5</strong>.
|
||
Likewise, <strong>this is the last version to support user bots</strong>.</p>
|
||
<p>Development of v2.0 will have breaking changes and support for newer API features.</p>
|
||
<section id="id4">
|
||
<h3>New Features<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Add support for stage channels via <a class="reference internal" href="api.html#discord.StageChannel" title="discord.StageChannel"><code class="xref py py-class docutils literal notranslate"><span class="pre">StageChannel</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6602">GH-6602</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6608">GH-6608</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for <a class="reference internal" href="api.html#discord.MessageReference.fail_if_not_exists" title="discord.MessageReference.fail_if_not_exists"><code class="xref py py-attr docutils literal notranslate"><span class="pre">MessageReference.fail_if_not_exists</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6484">GH-6484</a>)</dt><dd><ul>
|
||
<li><p>By default, if the message you’re replying to doesn’t exist then the API errors out.
|
||
This attribute tells the Discord API that it’s okay for that message to be missing.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for Discord’s new permission serialisation scheme.</p></li>
|
||
<li><p>Add an easier way to move channels using <a class="reference internal" href="api.html#discord.abc.GuildChannel.move" title="discord.abc.GuildChannel.move"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.GuildChannel.move()</span></code></a></p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Permissions.use_slash_commands" title="discord.Permissions.use_slash_commands"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.use_slash_commands</span></code></a></p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Permissions.request_to_speak" title="discord.Permissions.request_to_speak"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.request_to_speak</span></code></a></p></li>
|
||
<li><p>Add support for voice regions in voice channels via <a class="reference internal" href="api.html#discord.VoiceChannel.rtc_region" title="discord.VoiceChannel.rtc_region"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceChannel.rtc_region</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6606">GH-6606</a>)</p></li>
|
||
<li><p>Add support for <code class="xref py py-meth docutils literal notranslate"><span class="pre">PartialEmoji.url_as()</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6341">GH-6341</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.MessageReference.jump_url" title="discord.MessageReference.jump_url"><code class="xref py py-attr docutils literal notranslate"><span class="pre">MessageReference.jump_url</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6318">GH-6318</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.File.spoiler" title="discord.File.spoiler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">File.spoiler</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6317">GH-6317</a>)</p></li>
|
||
<li><p>Add support for passing <code class="docutils literal notranslate"><span class="pre">roles</span></code> to <a class="reference internal" href="api.html#discord.Guild.estimate_pruned_members" title="discord.Guild.estimate_pruned_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.estimate_pruned_members()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6538">GH-6538</a>)</p></li>
|
||
<li><p>Allow callable class factories to be used in <code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.Connectable.play()</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6478">GH-6478</a>)</p></li>
|
||
<li><p>Add a way to get mutual guilds from the client’s cache via <a class="reference internal" href="api.html#discord.User.mutual_guilds" title="discord.User.mutual_guilds"><code class="xref py py-attr docutils literal notranslate"><span class="pre">User.mutual_guilds</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2539">GH-2539</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6444">GH-6444</a>)</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.PartialMessage.edit" title="discord.PartialMessage.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">PartialMessage.edit()</span></code></a> now returns a full <a class="reference internal" href="api.html#discord.Message" title="discord.Message"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message</span></code></a> upon success (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6309">GH-6309</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.RawMessageUpdateEvent.guild_id" title="discord.RawMessageUpdateEvent.guild_id"><code class="xref py py-attr docutils literal notranslate"><span class="pre">RawMessageUpdateEvent.guild_id</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6489">GH-6489</a>)</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.AuditLogEntry" title="discord.AuditLogEntry"><code class="xref py py-class docutils literal notranslate"><span class="pre">AuditLogEntry</span></code></a> is now hashable (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6495">GH-6495</a>)</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Attachment" title="discord.Attachment"><code class="xref py py-class docutils literal notranslate"><span class="pre">Attachment</span></code></a> is now hashable</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Attachment.content_type" title="discord.Attachment.content_type"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Attachment.content_type</span></code></a> attribute (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6618">GH-6618</a>)</p></li>
|
||
<li><p>Add support for casting <a class="reference internal" href="api.html#discord.Attachment" title="discord.Attachment"><code class="xref py py-class docutils literal notranslate"><span class="pre">Attachment</span></code></a> to <a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a> to get the URL.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add <code class="docutils literal notranslate"><span class="pre">seed</span></code> parameter for <a class="reference internal" href="api.html#discord.Colour.random" title="discord.Colour.random"><code class="xref py py-class docutils literal notranslate"><span class="pre">Colour.random</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6562">GH-6562</a>)</dt><dd><ul>
|
||
<li><p>This only seeds it for one call. If seeding for multiple calls is desirable, use <a class="reference external" href="https://docs.python.org/3/library/random.html#random.seed" title="(in Python v3.9)"><code class="xref py py-func docutils literal notranslate"><span class="pre">random.seed()</span></code></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add a <a class="reference internal" href="api.html#discord.utils.remove_markdown" title="discord.utils.remove_markdown"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.remove_markdown()</span></code></a> helper function (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6573">GH-6573</a>)</p></li>
|
||
<li><p>Add support for passing scopes to <a class="reference internal" href="api.html#discord.utils.oauth_url" title="discord.utils.oauth_url"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.oauth_url()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6568">GH-6568</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add support for <code class="docutils literal notranslate"><span class="pre">rgb</span></code> CSS function as a parameter to <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.ColourConverter" title="discord.ext.commands.ColourConverter"><code class="xref py py-class docutils literal notranslate"><span class="pre">ColourConverter</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6374">GH-6374</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add support for converting <a class="reference internal" href="api.html#discord.StoreChannel" title="discord.StoreChannel"><code class="xref py py-class docutils literal notranslate"><span class="pre">StoreChannel</span></code></a> via <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.StoreChannelConverter" title="discord.ext.commands.StoreChannelConverter"><code class="xref py py-class docutils literal notranslate"><span class="pre">StoreChannelConverter</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6603">GH-6603</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add support for stripping whitespace after the prefix is encountered using the <code class="docutils literal notranslate"><span class="pre">strip_after_prefix</span></code> <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Bot" title="discord.ext.commands.Bot"><code class="xref py py-class docutils literal notranslate"><span class="pre">Bot</span></code></a> constructor parameter.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Context.invoked_parents" title="discord.ext.commands.Context.invoked_parents"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Context.invoked_parents</span></code></a> to get the aliases a command’s parent was invoked with (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/1874">GH-1874</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6462">GH-6462</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add a converter for <a class="reference internal" href="api.html#discord.PartialMessage" title="discord.PartialMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">PartialMessage</span></code></a> under <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.PartialMessageConverter" title="discord.ext.commands.PartialMessageConverter"><code class="xref py py-class docutils literal notranslate"><span class="pre">ext.commands.PartialMessageConverter</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6308">GH-6308</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add a converter for <a class="reference internal" href="api.html#discord.Guild" title="discord.Guild"><code class="xref py py-class docutils literal notranslate"><span class="pre">Guild</span></code></a> under <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.GuildConverter" title="discord.ext.commands.GuildConverter"><code class="xref py py-class docutils literal notranslate"><span class="pre">ext.commands.GuildConverter</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6016">GH-6016</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6365">GH-6365</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.has_error_handler" title="discord.ext.commands.Command.has_error_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Command.has_error_handler</span></code></a></dt><dd><ul>
|
||
<li><p>This is also adds <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Cog.has_error_handler" title="discord.ext.commands.Cog.has_error_handler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Cog.has_error_handler</span></code></a></p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Allow callable types to act as a bucket key for cooldowns (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6563">GH-6563</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add <code class="docutils literal notranslate"><span class="pre">linesep</span></code> keyword argument to <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Paginator" title="discord.ext.commands.Paginator"><code class="xref py py-class docutils literal notranslate"><span class="pre">Paginator</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5975">GH-5975</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Allow <code class="docutils literal notranslate"><span class="pre">None</span></code> to be passed to <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.HelpCommand.verify_checks" title="discord.ext.commands.HelpCommand.verify_checks"><code class="xref py py-attr docutils literal notranslate"><span class="pre">HelpCommand.verify_checks</span></code></a> to only verify in a guild context (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2008">GH-2008</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6446">GH-6446</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Allow relative paths when loading extensions via a <code class="docutils literal notranslate"><span class="pre">package</span></code> keyword argument (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2465">GH-2465</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6445">GH-6445</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id5">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix mentions not working if <code class="docutils literal notranslate"><span class="pre">mention_author</span></code> is passed in <a class="reference internal" href="api.html#discord.abc.Messageable.send" title="discord.abc.Messageable.send"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.Messageable.send()</span></code></a> without <a class="reference internal" href="api.html#discord.Client.allowed_mentions" title="discord.Client.allowed_mentions"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Client.allowed_mentions</span></code></a> set (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6192">GH-6192</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6458">GH-6458</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Fix user created instances of <a class="reference internal" href="api.html#discord.CustomActivity" title="discord.CustomActivity"><code class="xref py py-class docutils literal notranslate"><span class="pre">CustomActivity</span></code></a> triggering an error (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4049">GH-4049</a>)</dt><dd><ul>
|
||
<li><p>Note that currently, bot users still cannot set a custom activity due to a Discord limitation.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Fix <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#ZeroDivisionError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ZeroDivisionError</span></code></a> being raised from <a class="reference internal" href="api.html#discord.VoiceClient.average_latency" title="discord.VoiceClient.average_latency"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceClient.average_latency</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6430">GH-6430</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6436">GH-6436</a>)</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.User.public_flags" title="discord.User.public_flags"><code class="xref py py-attr docutils literal notranslate"><span class="pre">User.public_flags</span></code></a> not updating upon edit (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6315">GH-6315</a>)</p></li>
|
||
<li><p>Fix <code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.call</span></code> sometimes causing attribute errors (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6390">GH-6390</a>)</p></li>
|
||
<li><p>Fix issue resending a file during request retries on newer versions of <code class="docutils literal notranslate"><span class="pre">aiohttp</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6531">GH-6531</a>)</p></li>
|
||
<li><p>Raise an error when <code class="docutils literal notranslate"><span class="pre">user_ids</span></code> is empty in <a class="reference internal" href="api.html#discord.Guild.query_members" title="discord.Guild.query_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.query_members()</span></code></a></p></li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">__str__</span></code> magic method raising when a <a class="reference internal" href="api.html#discord.Guild" title="discord.Guild"><code class="xref py py-class docutils literal notranslate"><span class="pre">Guild</span></code></a> is unavailable.</p></li>
|
||
<li><p>Fix potential <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#AttributeError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">AttributeError</span></code></a> when accessing <a class="reference internal" href="api.html#discord.VoiceChannel.members" title="discord.VoiceChannel.members"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceChannel.members</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6602">GH-6602</a>)</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Embed" title="discord.Embed"><code class="xref py py-class docutils literal notranslate"><span class="pre">Embed</span></code></a> constructor parameters now implicitly convert to <a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6574">GH-6574</a>)</p></li>
|
||
<li><p>Ensure <code class="docutils literal notranslate"><span class="pre">discord</span></code> package is only run if executed as a script (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6483">GH-6483</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix irrelevant commands potentially being unloaded during cog unload due to failure.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix attribute errors when setting a cog to <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.HelpCommand" title="discord.ext.commands.HelpCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">HelpCommand</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5154">GH-5154</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Context.invoked_with" title="discord.ext.commands.Context.invoked_with"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Context.invoked_with</span></code></a> being improperly reassigned during a <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Context.reinvoke" title="discord.ext.commands.Context.reinvoke"><code class="xref py py-meth docutils literal notranslate"><span class="pre">reinvoke()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6451">GH-6451</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6462">GH-6462</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Remove duplicates from <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.HelpCommand.get_bot_mapping" title="discord.ext.commands.HelpCommand.get_bot_mapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">HelpCommand.get_bot_mapping</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6316">GH-6316</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Properly handle positional-only parameters in bot command signatures (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6431">GH-6431</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Group signatures now properly show up in <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.signature" title="discord.ext.commands.Command.signature"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Command.signature</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6529">GH-6529</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6530">GH-6530</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="miscellaneous">
|
||
<h3>Miscellaneous<a class="headerlink" href="#miscellaneous" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>User endpoints and all userbot related functionality has been deprecated and will be removed in the next major version of the library.</p></li>
|
||
<li><p><code class="xref py py-class docutils literal notranslate"><span class="pre">Permission</span></code> class methods were updated to match the UI of the Discord client (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6476">GH-6476</a>)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">_</span></code> and <code class="docutils literal notranslate"><span class="pre">-</span></code> characters are now stripped when making a new cog using the <code class="docutils literal notranslate"><span class="pre">discord</span></code> package (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6313">GH-6313</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-6-0">
|
||
<span id="vp1p6p0"></span><h2>v1.6.0<a class="headerlink" href="#v1-6-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This version comes with support for replies and stickers.</p>
|
||
<section id="id6">
|
||
<h3>New Features<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><dl class="simple">
|
||
<dt>An entirely redesigned documentation. This was the cumulation of multiple months of effort.</dt><dd><ul>
|
||
<li><p>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.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for <code class="xref py py-meth docutils literal notranslate"><span class="pre">AppInfo.icon_url_as()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">AppInfo.cover_image_url_as()</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5888">GH-5888</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Colour.random" title="discord.Colour.random"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Colour.random()</span></code></a> to get a random colour (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6067">GH-6067</a>)</p></li>
|
||
<li><p>Add support for stickers via <a class="reference internal" href="api.html#discord.Sticker" title="discord.Sticker"><code class="xref py py-class docutils literal notranslate"><span class="pre">Sticker</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5946">GH-5946</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for replying via <a class="reference internal" href="api.html#discord.Message.reply" title="discord.Message.reply"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.reply()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6061">GH-6061</a>)</dt><dd><ul>
|
||
<li><p>This also comes with the <a class="reference internal" href="api.html#discord.AllowedMentions.replied_user" title="discord.AllowedMentions.replied_user"><code class="xref py py-attr docutils literal notranslate"><span class="pre">AllowedMentions.replied_user</span></code></a> setting.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.abc.Messageable.send" title="discord.abc.Messageable.send"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.Messageable.send()</span></code></a> can now accept a <a class="reference internal" href="api.html#discord.MessageReference" title="discord.MessageReference"><code class="xref py py-class docutils literal notranslate"><span class="pre">MessageReference</span></code></a>.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.MessageReference" title="discord.MessageReference"><code class="xref py py-class docutils literal notranslate"><span class="pre">MessageReference</span></code></a> can now be constructed by users.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Message.to_reference" title="discord.Message.to_reference"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.to_reference()</span></code></a> can now convert a message to a <a class="reference internal" href="api.html#discord.MessageReference" title="discord.MessageReference"><code class="xref py py-class docutils literal notranslate"><span class="pre">MessageReference</span></code></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for getting the replied to resolved message through <a class="reference internal" href="api.html#discord.MessageReference.resolved" title="discord.MessageReference.resolved"><code class="xref py py-attr docutils literal notranslate"><span class="pre">MessageReference.resolved</span></code></a>.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for role tags.</dt><dd><ul>
|
||
<li><p><a class="reference internal" href="api.html#discord.Guild.premium_subscriber_role" title="discord.Guild.premium_subscriber_role"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.premium_subscriber_role</span></code></a> to get the “Nitro Booster” role (if available).</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Guild.self_role" title="discord.Guild.self_role"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.self_role</span></code></a> to get the bot’s own role (if available).</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Role.tags" title="discord.Role.tags"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Role.tags</span></code></a> to get the role’s tags.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Role.is_premium_subscriber" title="discord.Role.is_premium_subscriber"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Role.is_premium_subscriber()</span></code></a> to check if a role is the “Nitro Booster” role.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Role.is_bot_managed" title="discord.Role.is_bot_managed"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Role.is_bot_managed()</span></code></a> to check if a role is a bot role (i.e. the automatically created role for bots).</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Role.is_integration" title="discord.Role.is_integration"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Role.is_integration()</span></code></a> to check if a role is role created by an integration.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><dl class="simple">
|
||
<dt>Add <a class="reference internal" href="api.html#discord.Client.is_ws_ratelimited" title="discord.Client.is_ws_ratelimited"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.is_ws_ratelimited()</span></code></a> to check if the websocket is rate limited.</dt><dd><ul>
|
||
<li><p><a class="reference internal" href="api.html#discord.ShardInfo.is_ws_ratelimited" title="discord.ShardInfo.is_ws_ratelimited"><code class="xref py py-meth docutils literal notranslate"><span class="pre">ShardInfo.is_ws_ratelimited()</span></code></a> is the equivalent for checking a specific shard.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for chunking an <a class="reference internal" href="api.html#discord.AsyncIterator" title="discord.AsyncIterator"><code class="xref py py-class docutils literal notranslate"><span class="pre">AsyncIterator</span></code></a> through <a class="reference internal" href="api.html#discord.AsyncIterator.chunk" title="discord.AsyncIterator.chunk"><code class="xref py py-meth docutils literal notranslate"><span class="pre">AsyncIterator.chunk()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6100">GH-6100</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6082">GH-6082</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.PartialEmoji.created_at" title="discord.PartialEmoji.created_at"><code class="xref py py-attr docutils literal notranslate"><span class="pre">PartialEmoji.created_at</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6128">GH-6128</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for editing and deleting webhook sent messages (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6058">GH-6058</a>)</dt><dd><ul>
|
||
<li><p>This adds <a class="reference internal" href="api.html#discord.WebhookMessage" title="discord.WebhookMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">WebhookMessage</span></code></a> as well to power this behaviour.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><dl class="simple">
|
||
<dt>Add <a class="reference internal" href="api.html#discord.PartialMessage" title="discord.PartialMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">PartialMessage</span></code></a> to allow working with a message via channel objects and just a message_id (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5905">GH-5905</a>)</dt><dd><ul>
|
||
<li><p>This is useful if you don’t want to incur an extra API call to fetch the message.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add <code class="xref py py-meth docutils literal notranslate"><span class="pre">Emoji.url_as()</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6162">GH-6162</a>)</p></li>
|
||
<li><p>Add support for <a class="reference internal" href="api.html#discord.Member.pending" title="discord.Member.pending"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.pending</span></code></a> for the membership gating feature.</p></li>
|
||
<li><p>Allow <code class="docutils literal notranslate"><span class="pre">colour</span></code> parameter to take <code class="docutils literal notranslate"><span class="pre">int</span></code> in <a class="reference internal" href="api.html#discord.Guild.create_role" title="discord.Guild.create_role"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.create_role()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6195">GH-6195</a>)</p></li>
|
||
<li><p>Add support for <code class="docutils literal notranslate"><span class="pre">presences</span></code> in <a class="reference internal" href="api.html#discord.Guild.query_members" title="discord.Guild.query_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.query_members()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2354">GH-2354</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add support for <code class="docutils literal notranslate"><span class="pre">description</span></code> keyword argument in <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Cog" title="discord.ext.commands.Cog"><code class="xref py py-class docutils literal notranslate"><span class="pre">commands.Cog</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6028">GH-6028</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Add support for calling the wrapped coroutine as a function via <code class="docutils literal notranslate"><span class="pre">__call__</span></code>.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id7">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Raise <a class="reference internal" href="api.html#discord.DiscordServerError" title="discord.DiscordServerError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">DiscordServerError</span></code></a> when reaching 503s repeatedly (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6044">GH-6044</a>)</p></li>
|
||
<li><p>Fix <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#AttributeError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">AttributeError</span></code></a> when <a class="reference internal" href="api.html#discord.Client.fetch_template" title="discord.Client.fetch_template"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.fetch_template()</span></code></a> is called (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5986">GH-5986</a>)</p></li>
|
||
<li><p>Fix errors when playing audio and moving to another channel (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5953">GH-5953</a>)</p></li>
|
||
<li><p>Fix <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#AttributeError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">AttributeError</span></code></a> when voice channels disconnect too fast (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6039">GH-6039</a>)</p></li>
|
||
<li><p>Fix stale <a class="reference internal" href="api.html#discord.User" title="discord.User"><code class="xref py py-class docutils literal notranslate"><span class="pre">User</span></code></a> references when the members intent is off.</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.on_user_update" title="discord.on_user_update"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_user_update()</span></code></a> not dispatching in certain cases when a member is not cached but the user somehow is.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Fix <a class="reference internal" href="api.html#discord.Message.author" title="discord.Message.author"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.author</span></code></a> being overwritten in certain cases during message update.</dt><dd><ul>
|
||
<li><p>This would previously make it so <a class="reference internal" href="api.html#discord.Message.author" title="discord.Message.author"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.author</span></code></a> is a <a class="reference internal" href="api.html#discord.User" title="discord.User"><code class="xref py py-class docutils literal notranslate"><span class="pre">User</span></code></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Fix <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#UnboundLocalError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">UnboundLocalError</span></code></a> for editing <code class="docutils literal notranslate"><span class="pre">public_updates_channel</span></code> in <a class="reference internal" href="api.html#discord.Guild.edit" title="discord.Guild.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.edit()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6093">GH-6093</a>)</p></li>
|
||
<li><p>Fix uninitialised <code class="xref py py-attr docutils literal notranslate"><span class="pre">CustomActivity.created_at</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6095">GH-6095</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Errors during cog unload no longer stops module cleanup (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6113">GH-6113</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Properly cleanup lingering commands when a conflicting alias is found when adding commands (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6217">GH-6217</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id8">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">ffmpeg</span></code> spawned processes no longer open a window in Windows (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6038">GH-6038</a>)</p></li>
|
||
<li><p>Update dependencies to allow the library to work on Python 3.9+ without requiring build tools. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5984">GH-5984</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5970">GH-5970</a>)</p></li>
|
||
<li><p>Fix docstring issue leading to a SyntaxError in 3.9 (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6153">GH-6153</a>)</p></li>
|
||
<li><p>Update Windows opus binaries from 1.2.1 to 1.3.1 (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6161">GH-6161</a>)</p></li>
|
||
<li><p>Allow <a class="reference internal" href="api.html#discord.Guild.create_role" title="discord.Guild.create_role"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.create_role()</span></code></a> to accept <a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a> as the <code class="docutils literal notranslate"><span class="pre">colour</span></code> parameter (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6195">GH-6195</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.MessageConverter" title="discord.ext.commands.MessageConverter"><code class="xref py py-class docutils literal notranslate"><span class="pre">MessageConverter</span></code></a> regex got updated to support <code class="docutils literal notranslate"><span class="pre">www.</span></code> prefixes (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6002">GH-6002</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.UserConverter" title="discord.ext.commands.UserConverter"><code class="xref py py-class docutils literal notranslate"><span class="pre">UserConverter</span></code></a> now fetches the API if an ID is passed and the user is not cached.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.max_concurrency" title="discord.ext.commands.max_concurrency"><code class="xref py py-func docutils literal notranslate"><span class="pre">max_concurrency</span></code></a> is now called before cooldowns (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/6172">GH-6172</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-5-1">
|
||
<span id="vp1p5p1"></span><h2>v1.5.1<a class="headerlink" href="#v1-5-1" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id9">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.utils.escape_markdown" title="discord.utils.escape_markdown"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.escape_markdown()</span></code></a> not escaping quotes properly (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5897">GH-5897</a>)</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Message" title="discord.Message"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message</span></code></a> not being hashable (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5901">GH-5901</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5866">GH-5866</a>)</p></li>
|
||
<li><p>Fix moving channels to the end of the channel list (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5923">GH-5923</a>)</p></li>
|
||
<li><p>Fix seemingly strange behaviour in <code class="docutils literal notranslate"><span class="pre">__eq__</span></code> for <a class="reference internal" href="api.html#discord.PermissionOverwrite" title="discord.PermissionOverwrite"><code class="xref py py-class docutils literal notranslate"><span class="pre">PermissionOverwrite</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5929">GH-5929</a>)</p></li>
|
||
<li><p>Fix aliases showing up in <code class="docutils literal notranslate"><span class="pre">__iter__</span></code> for <a class="reference internal" href="api.html#discord.Intents" title="discord.Intents"><code class="xref py py-class docutils literal notranslate"><span class="pre">Intents</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5945">GH-5945</a>)</p></li>
|
||
<li><p>Fix the bot disconnecting from voice when moving them to another channel (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5904">GH-5904</a>)</p></li>
|
||
<li><p>Fix attribute errors when chunking times out sometimes during delayed on_ready dispatching.</p></li>
|
||
<li><p>Ensure that the bot’s own member is not evicted from the cache (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5949">GH-5949</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id10">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Members are now loaded during <code class="docutils literal notranslate"><span class="pre">GUILD_MEMBER_UPDATE</span></code> events if <a class="reference internal" href="api.html#discord.MemberCacheFlags.joined" title="discord.MemberCacheFlags.joined"><code class="xref py py-attr docutils literal notranslate"><span class="pre">MemberCacheFlags.joined</span></code></a> is set. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5930">GH-5930</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.MemberConverter" title="discord.ext.commands.MemberConverter"><code class="xref py py-class docutils literal notranslate"><span class="pre">MemberConverter</span></code></a> now properly lazily fetches members if not available from cache.</dt><dd><ul>
|
||
<li><p>This is the same as having <code class="docutils literal notranslate"><span class="pre">discord.Member</span></code> as the type-hint.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Guild.chunk" title="discord.Guild.chunk"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.chunk()</span></code></a> now allows concurrent calls without spamming the gateway with requests.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-5-0">
|
||
<span id="vp1p5p0"></span><h2>v1.5.0<a class="headerlink" href="#v1-5-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This version came with forced breaking changes that Discord is requiring all bots to go through on October 7th. It is highly recommended to read the documentation on intents, <a class="reference internal" href="intents.html#intents-primer"><span class="std std-ref">A Primer to Gateway Intents</span></a>.</p>
|
||
<section id="api-changes">
|
||
<h3>API Changes<a class="headerlink" href="#api-changes" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Members and presences will no longer be retrieved due to an API change. See <a class="reference internal" href="intents.html#privileged-intents"><span class="std std-ref">Privileged Intents</span></a> for more info.</p></li>
|
||
<li><p>As a consequence, fetching offline members is disabled if the members intent is not enabled.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id11">
|
||
<h3>New Features<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Support for gateway intents, passed via <code class="docutils literal notranslate"><span class="pre">intents</span></code> in <a class="reference internal" href="api.html#discord.Client" title="discord.Client"><code class="xref py py-class docutils literal notranslate"><span class="pre">Client</span></code></a> using <a class="reference internal" href="api.html#discord.Intents" title="discord.Intents"><code class="xref py py-class docutils literal notranslate"><span class="pre">Intents</span></code></a>.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.VoiceRegion.south_korea" title="discord.VoiceRegion.south_korea"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceRegion.south_korea</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5233">GH-5233</a>)</p></li>
|
||
<li><p>Add support for <code class="docutils literal notranslate"><span class="pre">__eq__</span></code> for <a class="reference internal" href="api.html#discord.Message" title="discord.Message"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5789">GH-5789</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Colour.dark_theme" title="discord.Colour.dark_theme"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Colour.dark_theme()</span></code></a> factory method (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/1584">GH-1584</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.AllowedMentions.none" title="discord.AllowedMentions.none"><code class="xref py py-meth docutils literal notranslate"><span class="pre">AllowedMentions.none()</span></code></a> and <a class="reference internal" href="api.html#discord.AllowedMentions.all" title="discord.AllowedMentions.all"><code class="xref py py-meth docutils literal notranslate"><span class="pre">AllowedMentions.all()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5785">GH-5785</a>)</p></li>
|
||
<li><p>Add more concrete exceptions for 500 class errors under <a class="reference internal" href="api.html#discord.DiscordServerError" title="discord.DiscordServerError"><code class="xref py py-class docutils literal notranslate"><span class="pre">DiscordServerError</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5797">GH-5797</a>)</p></li>
|
||
<li><p>Implement <a class="reference internal" href="api.html#discord.VoiceProtocol" title="discord.VoiceProtocol"><code class="xref py py-class docutils literal notranslate"><span class="pre">VoiceProtocol</span></code></a> to better intersect the voice flow.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.chunk" title="discord.Guild.chunk"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.chunk()</span></code></a> to fully chunk a guild.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.MemberCacheFlags" title="discord.MemberCacheFlags"><code class="xref py py-class docutils literal notranslate"><span class="pre">MemberCacheFlags</span></code></a> to better control member cache. See <a class="reference internal" href="intents.html#intents-member-cache"><span class="std std-ref">Member Cache</span></a> for more info.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for <a class="reference internal" href="api.html#discord.ActivityType.competing" title="discord.ActivityType.competing"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ActivityType.competing</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5823">GH-5823</a>)</dt><dd><ul>
|
||
<li><p>This seems currently unused API wise.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for message references, <a class="reference internal" href="api.html#discord.Message.reference" title="discord.Message.reference"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.reference</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5754">GH-5754</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5832">GH-5832</a>)</p></li>
|
||
<li><p>Add alias for <code class="xref py py-class docutils literal notranslate"><span class="pre">ColourConverter</span></code> under <code class="docutils literal notranslate"><span class="pre">ColorConverter</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5773">GH-5773</a>)</p></li>
|
||
<li><p>Add alias for <a class="reference internal" href="api.html#discord.PublicUserFlags.verified_bot_developer" title="discord.PublicUserFlags.verified_bot_developer"><code class="xref py py-attr docutils literal notranslate"><span class="pre">PublicUserFlags.verified_bot_developer</span></code></a> under <a class="reference internal" href="api.html#discord.PublicUserFlags.early_verified_bot_developer" title="discord.PublicUserFlags.early_verified_bot_developer"><code class="xref py py-attr docutils literal notranslate"><span class="pre">PublicUserFlags.early_verified_bot_developer</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5849">GH-5849</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add support for <code class="docutils literal notranslate"><span class="pre">require_var_positional</span></code> for <code class="xref py py-class docutils literal notranslate"><span class="pre">Command</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5793">GH-5793</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id12">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix issue with <a class="reference internal" href="api.html#discord.Guild.by_category" title="discord.Guild.by_category"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.by_category()</span></code></a> not showing certain channels.</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.abc.GuildChannel.permissions_synced" title="discord.abc.GuildChannel.permissions_synced"><code class="xref py py-attr docutils literal notranslate"><span class="pre">abc.GuildChannel.permissions_synced</span></code></a> always being <code class="docutils literal notranslate"><span class="pre">False</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5772">GH-5772</a>)</p></li>
|
||
<li><p>Fix handling of cloudflare bans on webhook related requests (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5221">GH-5221</a>)</p></li>
|
||
<li><p>Fix cases where a keep-alive thread would ack despite already dying (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5800">GH-5800</a>)</p></li>
|
||
<li><p>Fix cases where a <a class="reference internal" href="api.html#discord.Member" title="discord.Member"><code class="xref py py-class docutils literal notranslate"><span class="pre">Member</span></code></a> reference would be stale when cache is disabled in message events (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5819">GH-5819</a>)</p></li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">allowed_mentions</span></code> not being sent when sending a single file (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5835">GH-5835</a>)</p></li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">overwrites</span></code> being ignored in <code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.GuildChannel.edit()</span></code> if <code class="docutils literal notranslate"><span class="pre">{}</span></code> is passed (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5756">GH-5756</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5757">GH-5757</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix exceptions being raised improperly in command invoke hooks (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5799">GH-5799</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix commands not being properly ejected during errors in a cog injection (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5804">GH-5804</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix cooldown timing ignoring edited timestamps.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Fix tasks extending the next iteration on handled exceptions (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5762">GH-5762</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5763">GH-5763</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id13">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Webhook requests are now logged (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5798">GH-5798</a>)</p></li>
|
||
<li><p>Remove caching layer from <a class="reference internal" href="api.html#discord.AutoShardedClient.shards" title="discord.AutoShardedClient.shards"><code class="xref py py-attr docutils literal notranslate"><span class="pre">AutoShardedClient.shards</span></code></a>. This was causing issues if queried before launching shards.</p></li>
|
||
<li><p>Gateway rate limits are now handled.</p></li>
|
||
<li><p>Warnings logged due to missed caches are now changed to DEBUG log level.</p></li>
|
||
<li><p>Some strings are now explicitly interned to reduce memory usage.</p></li>
|
||
<li><p>Usage of namedtuples has been reduced to avoid potential breaking changes in the future (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5834">GH-5834</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] All <code class="xref py py-class docutils literal notranslate"><span class="pre">BadArgument</span></code> exceptions from the built-in converters now raise concrete exceptions to better tell them apart (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5748">GH-5748</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Lazily fetch the event loop to prevent surprises when changing event loop policy (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5808">GH-5808</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-4-2">
|
||
<span id="vp1p4p2"></span><h2>v1.4.2<a class="headerlink" href="#v1-4-2" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is a maintenance release with backports from <a class="reference internal" href="#vp1p5p0"><span class="std std-ref">v1.5.0</span></a>.</p>
|
||
<section id="id14">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix issue with <a class="reference internal" href="api.html#discord.Guild.by_category" title="discord.Guild.by_category"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.by_category()</span></code></a> not showing certain channels.</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.abc.GuildChannel.permissions_synced" title="discord.abc.GuildChannel.permissions_synced"><code class="xref py py-attr docutils literal notranslate"><span class="pre">abc.GuildChannel.permissions_synced</span></code></a> always being <code class="docutils literal notranslate"><span class="pre">False</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5772">GH-5772</a>)</p></li>
|
||
<li><p>Fix handling of cloudflare bans on webhook related requests (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5221">GH-5221</a>)</p></li>
|
||
<li><p>Fix cases where a keep-alive thread would ack despite already dying (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5800">GH-5800</a>)</p></li>
|
||
<li><p>Fix cases where a <a class="reference internal" href="api.html#discord.Member" title="discord.Member"><code class="xref py py-class docutils literal notranslate"><span class="pre">Member</span></code></a> reference would be stale when cache is disabled in message events (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5819">GH-5819</a>)</p></li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">allowed_mentions</span></code> not being sent when sending a single file (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5835">GH-5835</a>)</p></li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">overwrites</span></code> being ignored in <code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.GuildChannel.edit()</span></code> if <code class="docutils literal notranslate"><span class="pre">{}</span></code> is passed (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5756">GH-5756</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5757">GH-5757</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix exceptions being raised improperly in command invoke hooks (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5799">GH-5799</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix commands not being properly ejected during errors in a cog injection (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5804">GH-5804</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix cooldown timing ignoring edited timestamps.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Fix tasks extending the next iteration on handled exceptions (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5762">GH-5762</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5763">GH-5763</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id15">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Remove caching layer from <a class="reference internal" href="api.html#discord.AutoShardedClient.shards" title="discord.AutoShardedClient.shards"><code class="xref py py-attr docutils literal notranslate"><span class="pre">AutoShardedClient.shards</span></code></a>. This was causing issues if queried before launching shards.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Lazily fetch the event loop to prevent surprises when changing event loop policy (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5808">GH-5808</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-4-1">
|
||
<span id="vp1p4p1"></span><h2>v1.4.1<a class="headerlink" href="#v1-4-1" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id16">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Properly terminate the connection when <a class="reference internal" href="api.html#discord.Client.close" title="discord.Client.close"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.close()</span></code></a> is called (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5207">GH-5207</a>)</p></li>
|
||
<li><p>Fix error being raised when clearing embed author or image when it was already cleared (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5210">GH-5210</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5212">GH-5212</a>)</p></li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">__path__</span></code> to allow editable extensions (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5213">GH-5213</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-4-0">
|
||
<span id="vp1p4p0"></span><h2>v1.4.0<a class="headerlink" href="#v1-4-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>Another version with a long development time. Features like Intents are slated to be released in a v1.5 release. Thank you for your patience!</p>
|
||
<section id="id17">
|
||
<h3>New Features<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><dl class="simple">
|
||
<dt>Add support for <a class="reference internal" href="api.html#discord.AllowedMentions" title="discord.AllowedMentions"><code class="xref py py-class docutils literal notranslate"><span class="pre">AllowedMentions</span></code></a> to have more control over what gets mentioned.</dt><dd><ul>
|
||
<li><p>This can be set globally through <a class="reference internal" href="api.html#discord.Client.allowed_mentions" title="discord.Client.allowed_mentions"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Client.allowed_mentions</span></code></a></p></li>
|
||
<li><p>This can also be set on a per message basis via <a class="reference internal" href="api.html#discord.abc.Messageable.send" title="discord.abc.Messageable.send"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.Messageable.send()</span></code></a></p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><dl class="simple">
|
||
<dt><a class="reference internal" href="api.html#discord.AutoShardedClient" title="discord.AutoShardedClient"><code class="xref py py-class docutils literal notranslate"><span class="pre">AutoShardedClient</span></code></a> has been completely redesigned from the ground up to better suit multi-process clusters (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2654">GH-2654</a>)</dt><dd><ul>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.ShardInfo" title="discord.ShardInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">ShardInfo</span></code></a> which allows fetching specific information about a shard.</p></li>
|
||
<li><p>The <a class="reference internal" href="api.html#discord.ShardInfo" title="discord.ShardInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">ShardInfo</span></code></a> allows for reconnecting and disconnecting of a specific shard as well.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.AutoShardedClient.get_shard" title="discord.AutoShardedClient.get_shard"><code class="xref py py-meth docutils literal notranslate"><span class="pre">AutoShardedClient.get_shard()</span></code></a> and <a class="reference internal" href="api.html#discord.AutoShardedClient.shards" title="discord.AutoShardedClient.shards"><code class="xref py py-attr docutils literal notranslate"><span class="pre">AutoShardedClient.shards</span></code></a> to get information about shards.</p></li>
|
||
<li><p>Rework the entire connection flow to better facilitate the <code class="docutils literal notranslate"><span class="pre">IDENTIFY</span></code> rate limits.</p></li>
|
||
<li><p>Add a hook <a class="reference internal" href="api.html#discord.Client.before_identify_hook" title="discord.Client.before_identify_hook"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.before_identify_hook()</span></code></a> to have better control over what happens before an <code class="docutils literal notranslate"><span class="pre">IDENTIFY</span></code> is done.</p></li>
|
||
<li><p>Add more shard related events such as <a class="reference internal" href="api.html#discord.on_shard_connect" title="discord.on_shard_connect"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_shard_connect()</span></code></a>, <a class="reference internal" href="api.html#discord.on_shard_disconnect" title="discord.on_shard_disconnect"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_shard_disconnect()</span></code></a> and <a class="reference internal" href="api.html#discord.on_shard_resumed" title="discord.on_shard_resumed"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_shard_resumed()</span></code></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for guild templates (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2652">GH-2652</a>)</dt><dd><ul>
|
||
<li><p>This adds <a class="reference internal" href="api.html#discord.Template" title="discord.Template"><code class="xref py py-class docutils literal notranslate"><span class="pre">Template</span></code></a> to read a template’s information.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Client.fetch_template" title="discord.Client.fetch_template"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.fetch_template()</span></code></a> can be used to fetch a template’s information from the API.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Client.create_guild" title="discord.Client.create_guild"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.create_guild()</span></code></a> can now take an optional template to base the creation from.</p></li>
|
||
<li><p>Note that fetching a guild’s template is currently restricted for bot accounts.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for guild integrations (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2051">GH-2051</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/1083">GH-1083</a>)</dt><dd><ul>
|
||
<li><p><a class="reference internal" href="api.html#discord.Integration" title="discord.Integration"><code class="xref py py-class docutils literal notranslate"><span class="pre">Integration</span></code></a> is used to read integration information.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.IntegrationAccount" title="discord.IntegrationAccount"><code class="xref py py-class docutils literal notranslate"><span class="pre">IntegrationAccount</span></code></a> is used to read integration account information.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Guild.integrations" title="discord.Guild.integrations"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.integrations()</span></code></a> will fetch all integrations in a guild.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Guild.create_integration" title="discord.Guild.create_integration"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.create_integration()</span></code></a> will create an integration.</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Integration.edit()</span></code> will edit an existing integration.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Integration.delete" title="discord.Integration.delete"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Integration.delete()</span></code></a> will delete an integration.</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Integration.sync()</span></code> will sync an integration.</p></li>
|
||
<li><p>There is currently no support in the audit log for this.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add an alias for <code class="xref py py-attr docutils literal notranslate"><span class="pre">VerificationLevel.extreme</span></code> under <code class="xref py py-attr docutils literal notranslate"><span class="pre">VerificationLevel.very_high</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2650">GH-2650</a>)</p></li>
|
||
<li><p>Add various grey to gray aliases for <a class="reference internal" href="api.html#discord.Colour" title="discord.Colour"><code class="xref py py-class docutils literal notranslate"><span class="pre">Colour</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5130">GH-5130</a>)</p></li>
|
||
<li><p>Added <a class="reference internal" href="api.html#discord.VoiceClient.latency" title="discord.VoiceClient.latency"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceClient.latency</span></code></a> and <a class="reference internal" href="api.html#discord.VoiceClient.average_latency" title="discord.VoiceClient.average_latency"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceClient.average_latency</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2535">GH-2535</a>)</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">use_cached</span></code> and <code class="docutils literal notranslate"><span class="pre">spoiler</span></code> parameters to <a class="reference internal" href="api.html#discord.Attachment.to_file" title="discord.Attachment.to_file"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Attachment.to_file()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2577">GH-2577</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4095">GH-4095</a>)</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">position</span></code> parameter support to <a class="reference internal" href="api.html#discord.Guild.create_category" title="discord.Guild.create_category"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.create_category()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2623">GH-2623</a>)</p></li>
|
||
<li><p>Allow passing <code class="docutils literal notranslate"><span class="pre">int</span></code> for the colour in <a class="reference internal" href="api.html#discord.Role.edit" title="discord.Role.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Role.edit()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4057">GH-4057</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Embed.remove_author" title="discord.Embed.remove_author"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Embed.remove_author()</span></code></a> to clear author information from an embed (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4068">GH-4068</a>)</p></li>
|
||
<li><p>Add the ability to clear images and thumbnails in embeds using <a class="reference internal" href="api.html#discord.Embed.Empty" title="discord.Embed.Empty"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Embed.Empty</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4053">GH-4053</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.max_video_channel_users" title="discord.Guild.max_video_channel_users"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.max_video_channel_users</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4120">GH-4120</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.public_updates_channel" title="discord.Guild.public_updates_channel"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.public_updates_channel</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4120">GH-4120</a>)</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">guild_ready_timeout</span></code> parameter to <a class="reference internal" href="api.html#discord.Client" title="discord.Client"><code class="xref py py-class docutils literal notranslate"><span class="pre">Client</span></code></a> and subclasses to control timeouts when the <code class="docutils literal notranslate"><span class="pre">GUILD_CREATE</span></code> stream takes too long (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4112">GH-4112</a>)</p></li>
|
||
<li><p>Add support for public user flags via <a class="reference internal" href="api.html#discord.User.public_flags" title="discord.User.public_flags"><code class="xref py py-attr docutils literal notranslate"><span class="pre">User.public_flags</span></code></a> and <a class="reference internal" href="api.html#discord.PublicUserFlags" title="discord.PublicUserFlags"><code class="xref py py-class docutils literal notranslate"><span class="pre">PublicUserFlags</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/3999">GH-3999</a>)</p></li>
|
||
<li><p>Allow changing of channel types via <a class="reference internal" href="api.html#discord.TextChannel.edit" title="discord.TextChannel.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.edit()</span></code></a> to and from a news channel (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4121">GH-4121</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.edit_role_positions" title="discord.Guild.edit_role_positions"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.edit_role_positions()</span></code></a> to bulk edit role positions in a single API call (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2501">GH-2501</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2143">GH-2143</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.change_voice_state" title="discord.Guild.change_voice_state"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.change_voice_state()</span></code></a> to change your voice state in a guild (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5088">GH-5088</a>)</p></li>
|
||
<li><p>Add <code class="xref py py-meth docutils literal notranslate"><span class="pre">PartialInviteGuild.is_icon_animated()</span></code> for checking if the invite guild has animated icon (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4180">GH-4180</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4181">GH-4181</a>)</p></li>
|
||
<li><p>Add <code class="xref py py-meth docutils literal notranslate"><span class="pre">PartialInviteGuild.icon_url_as()</span></code> now supports <code class="docutils literal notranslate"><span class="pre">static_format</span></code> for consistency (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4180">GH-4180</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4181">GH-4181</a>)</p></li>
|
||
<li><p>Add support for <code class="docutils literal notranslate"><span class="pre">user_ids</span></code> in <a class="reference internal" href="api.html#discord.Guild.query_members" title="discord.Guild.query_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.query_members()</span></code></a></p></li>
|
||
<li><p>Add support for pruning members by roles in <a class="reference internal" href="api.html#discord.Guild.prune_members" title="discord.Guild.prune_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.prune_members()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4043">GH-4043</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Implement <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.before_invoke" title="discord.ext.commands.before_invoke"><code class="xref py py-func docutils literal notranslate"><span class="pre">before_invoke()</span></code></a> and <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.after_invoke" title="discord.ext.commands.after_invoke"><code class="xref py py-func docutils literal notranslate"><span class="pre">after_invoke()</span></code></a> decorators (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/1986">GH-1986</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2502">GH-2502</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add a way to retrieve <code class="docutils literal notranslate"><span class="pre">retry_after</span></code> from a cooldown in a command via <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.get_cooldown_retry_after" title="discord.ext.commands.Command.get_cooldown_retry_after"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Command.get_cooldown_retry_after</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5195">GH-5195</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add a way to dynamically add and remove checks from a <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.HelpCommand" title="discord.ext.commands.HelpCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">HelpCommand</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5197">GH-5197</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Add <a class="reference internal" href="ext/tasks/index.html#discord.ext.tasks.Loop.is_running" title="discord.ext.tasks.Loop.is_running"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Loop.is_running</span></code></a> method to the task objects (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2540">GH-2540</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Allow usage of custom error handlers similar to the command extensions to tasks using <a class="reference internal" href="ext/tasks/index.html#discord.ext.tasks.Loop.error" title="discord.ext.tasks.Loop.error"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Loop.error</span></code></a> decorator (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2621">GH-2621</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id18">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix issue with <a class="reference internal" href="api.html#discord.PartialEmoji.url" title="discord.PartialEmoji.url"><code class="xref py py-attr docutils literal notranslate"><span class="pre">PartialEmoji.url</span></code></a> reads leading to a failure (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4015">GH-4015</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4016">GH-4016</a>)</p></li>
|
||
<li><p>Allow <a class="reference internal" href="api.html#discord.abc.Messageable.history" title="discord.abc.Messageable.history"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.Messageable.history()</span></code></a> to take a limit of <code class="docutils literal notranslate"><span class="pre">1</span></code> even if <code class="docutils literal notranslate"><span class="pre">around</span></code> is passed (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4019">GH-4019</a>)</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Guild.member_count" title="discord.Guild.member_count"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.member_count</span></code></a> not updating in certain cases when a member has left the guild (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4021">GH-4021</a>)</p></li>
|
||
<li><p>Fix the type of <a class="reference internal" href="api.html#discord.Object.id" title="discord.Object.id"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Object.id</span></code></a> not being validated. For backwards compatibility <code class="docutils literal notranslate"><span class="pre">str</span></code> is still allowed but is converted to <code class="docutils literal notranslate"><span class="pre">int</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4002">GH-4002</a>)</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Guild.edit" title="discord.Guild.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.edit()</span></code></a> not allowing editing of notification settings (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4074">GH-4074</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4047">GH-4047</a>)</p></li>
|
||
<li><p>Fix crash when the guild widget contains channels that aren’t in the payload (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4114">GH-4114</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4115">GH-4115</a>)</p></li>
|
||
<li><p>Close ffmpeg stdin handling from spawned processes with <a class="reference internal" href="api.html#discord.FFmpegOpusAudio" title="discord.FFmpegOpusAudio"><code class="xref py py-class docutils literal notranslate"><span class="pre">FFmpegOpusAudio</span></code></a> and <a class="reference internal" href="api.html#discord.FFmpegPCMAudio" title="discord.FFmpegPCMAudio"><code class="xref py py-class docutils literal notranslate"><span class="pre">FFmpegPCMAudio</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4036">GH-4036</a>)</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.utils.escape_markdown" title="discord.utils.escape_markdown"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.escape_markdown()</span></code></a> not escaping masked links (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4206">GH-4206</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4207">GH-4207</a>)</p></li>
|
||
<li><p>Fix reconnect loop due to failed handshake on region change (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4210">GH-4210</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/3996">GH-3996</a>)</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Guild.by_category" title="discord.Guild.by_category"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.by_category()</span></code></a> not returning empty categories (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4186">GH-4186</a>)</p></li>
|
||
<li><p>Fix certain JPEG images not being identified as JPEG (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5143">GH-5143</a>)</p></li>
|
||
<li><p>Fix a crash when an incomplete guild object is used when fetching reaction information (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5181">GH-5181</a>)</p></li>
|
||
<li><p>Fix a timeout issue when fetching members using <a class="reference internal" href="api.html#discord.Guild.query_members" title="discord.Guild.query_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.query_members()</span></code></a></p></li>
|
||
<li><p>Fix an issue with domain resolution in voice (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5188">GH-5188</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5191">GH-5191</a>)</p></li>
|
||
<li><p>Fix an issue where <a class="reference internal" href="api.html#discord.PartialEmoji.id" title="discord.PartialEmoji.id"><code class="xref py py-attr docutils literal notranslate"><span class="pre">PartialEmoji.id</span></code></a> could be a string (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4153">GH-4153</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4152">GH-4152</a>)</p></li>
|
||
<li><p>Fix regression where <a class="reference internal" href="api.html#discord.Member.activities" title="discord.Member.activities"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.activities</span></code></a> would not clear.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] A <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#TypeError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a> is now raised when <a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Optional" title="(in Python v3.9)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">typing.Optional</span></code></a> is used within <code class="xref py py-data docutils literal notranslate"><span class="pre">commands.Greedy</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2253">GH-2253</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5068">GH-5068</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Bot.walk_commands" title="discord.ext.commands.Bot.walk_commands"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Bot.walk_commands</span></code></a> no longer yields duplicate commands due to aliases (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2591">GH-2591</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix regex characters not being escaped in <code class="xref py py-attr docutils literal notranslate"><span class="pre">HelpCommand.clean_prefix</span></code> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4058">GH-4058</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4071">GH-4071</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Bot.get_command" title="discord.ext.commands.Bot.get_command"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Bot.get_command</span></code></a> from raising errors when a name only has whitespace (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5124">GH-5124</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix issue with <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Context.subcommand_passed" title="discord.ext.commands.Context.subcommand_passed"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Context.subcommand_passed</span></code></a> not functioning as expected (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5198">GH-5198</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Task objects are no longer stored globally so two class instances can now start two separate tasks (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2294">GH-2294</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Allow cancelling the loop within <a class="reference internal" href="ext/tasks/index.html#discord.ext.tasks.Loop.before_loop" title="discord.ext.tasks.Loop.before_loop"><code class="xref py py-meth docutils literal notranslate"><span class="pre">before_loop</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4082">GH-4082</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id19">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>The <a class="reference internal" href="api.html#discord.Member.roles" title="discord.Member.roles"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.roles</span></code></a> cache introduced in v1.3 was reverted due to issues caused (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4087">GH-4087</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4157">GH-4157</a>)</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Webhook" title="discord.Webhook"><code class="xref py py-class docutils literal notranslate"><span class="pre">Webhook</span></code></a> objects are now comparable and hashable (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4182">GH-4182</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Some more API requests got a <code class="docutils literal notranslate"><span class="pre">reason</span></code> parameter for audit logs (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5086">GH-5086</a>)</dt><dd><ul>
|
||
<li><p><a class="reference internal" href="api.html#discord.TextChannel.follow" title="discord.TextChannel.follow"><code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.follow()</span></code></a></p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Message.pin" title="discord.Message.pin"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.pin()</span></code></a> and <a class="reference internal" href="api.html#discord.Message.unpin" title="discord.Message.unpin"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.unpin()</span></code></a></p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Webhook.delete" title="discord.Webhook.delete"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Webhook.delete()</span></code></a> and <a class="reference internal" href="api.html#discord.Webhook.edit" title="discord.Webhook.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Webhook.edit()</span></code></a></p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>For performance reasons <code class="docutils literal notranslate"><span class="pre">websockets</span></code> has been dropped in favour of <code class="docutils literal notranslate"><span class="pre">aiohttp.ws</span></code>.</p></li>
|
||
<li><p>The blocking logging message now shows the stack trace of where the main thread was blocking</p></li>
|
||
<li><p>The domain name was changed from <code class="docutils literal notranslate"><span class="pre">discordapp.com</span></code> to <code class="docutils literal notranslate"><span class="pre">discord.com</span></code> to prepare for the required domain migration</p></li>
|
||
<li><p>Reduce memory usage when reconnecting due to stale references being held by the message cache (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5133">GH-5133</a>)</p></li>
|
||
<li><p>Optimize <a class="reference internal" href="api.html#discord.abc.GuildChannel.permissions_for" title="discord.abc.GuildChannel.permissions_for"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.GuildChannel.permissions_for()</span></code></a> by not creating as many temporary objects (20-32% savings).</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Raise <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.CommandRegistrationError" title="discord.ext.commands.CommandRegistrationError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">CommandRegistrationError</span></code></a> instead of <a class="reference internal" href="api.html#discord.ClientException" title="discord.ClientException"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ClientException</span></code></a> when a duplicate error is registered (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/4217">GH-4217</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] No longer handle <a class="reference internal" href="api.html#discord.HTTPException" title="discord.HTTPException"><code class="xref py py-exc docutils literal notranslate"><span class="pre">HTTPException</span></code></a> by default in the task reconnect loop (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5193">GH-5193</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-3-4">
|
||
<span id="vp1p3p4"></span><h2>v1.3.4<a class="headerlink" href="#v1-3-4" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id20">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix an issue with channel overwrites causing multiple issues including crashes (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/5109">GH-5109</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-3-3">
|
||
<span id="vp1p3p3"></span><h2>v1.3.3<a class="headerlink" href="#v1-3-3" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id21">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id21" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><dl class="simple">
|
||
<dt>Change default WS close to 4000 instead of 1000.</dt><dd><ul>
|
||
<li><p>The previous close code caused sessions to be invalidated at a higher frequency than desired.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">None</span></code> appearing in <code class="docutils literal notranslate"><span class="pre">Member.activities</span></code>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2619">GH-2619</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-3-2">
|
||
<span id="vp1p3p2"></span><h2>v1.3.2<a class="headerlink" href="#v1-3-2" title="Permalink to this headline">¶</a></h2>
|
||
<p>Another minor bug fix release.</p>
|
||
<section id="id22">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id22" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Higher the wait time during the <code class="docutils literal notranslate"><span class="pre">GUILD_CREATE</span></code> stream before <code class="docutils literal notranslate"><span class="pre">on_ready</span></code> is fired for <a class="reference internal" href="api.html#discord.AutoShardedClient" title="discord.AutoShardedClient"><code class="xref py py-class docutils literal notranslate"><span class="pre">AutoShardedClient</span></code></a>.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.on_voice_state_update" title="discord.on_voice_state_update"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_voice_state_update()</span></code></a> now uses the inner <code class="docutils literal notranslate"><span class="pre">member</span></code> payload which should make it more reliable.</p></li>
|
||
<li><p>Fix various Cloudflare handling errors (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2572">GH-2572</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2544">GH-2544</a>)</p></li>
|
||
<li><p>Fix crashes if <a class="reference internal" href="api.html#discord.Message.guild" title="discord.Message.guild"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.guild</span></code></a> is <a class="reference internal" href="api.html#discord.Object" title="discord.Object"><code class="xref py py-class docutils literal notranslate"><span class="pre">Object</span></code></a> instead of <a class="reference internal" href="api.html#discord.Guild" title="discord.Guild"><code class="xref py py-class docutils literal notranslate"><span class="pre">Guild</span></code></a>.</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Webhook.send" title="discord.Webhook.send"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Webhook.send()</span></code></a> returning an empty string instead of <code class="docutils literal notranslate"><span class="pre">None</span></code> when <code class="docutils literal notranslate"><span class="pre">wait=False</span></code>.</p></li>
|
||
<li><p>Fix invalid format specifier in webhook state (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2570">GH-2570</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Passing invalid permissions to permission related checks now raises <code class="docutils literal notranslate"><span class="pre">TypeError</span></code>.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-3-1">
|
||
<span id="vp1p3p1"></span><h2>v1.3.1<a class="headerlink" href="#v1-3-1" title="Permalink to this headline">¶</a></h2>
|
||
<p>Minor bug fix release.</p>
|
||
<section id="id23">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id23" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix fetching invites in guilds that the user is not in.</p></li>
|
||
<li><p>Fix the channel returned from <a class="reference internal" href="api.html#discord.Client.fetch_channel" title="discord.Client.fetch_channel"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.fetch_channel()</span></code></a> raising when sending messages. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2531">GH-2531</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id24">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id24" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix compatibility warnings when using the Python 3.9 alpha.</p></li>
|
||
<li><p>Change the unknown event logging from WARNING to DEBUG to reduce noise.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-3-0">
|
||
<span id="vp1p3p0"></span><h2>v1.3.0<a class="headerlink" href="#v1-3-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This version comes with a lot of bug fixes and new features. It’s been in development for a lot longer than was anticipated!</p>
|
||
<section id="id25">
|
||
<h3>New Features<a class="headerlink" href="#id25" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.fetch_members" title="discord.Guild.fetch_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.fetch_members()</span></code></a> to fetch members from the HTTP API. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2204">GH-2204</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.fetch_roles" title="discord.Guild.fetch_roles"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.fetch_roles()</span></code></a> to fetch roles from the HTTP API. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2208">GH-2208</a>)</p></li>
|
||
<li><p>Add support for teams via <a class="reference internal" href="api.html#discord.Team" title="discord.Team"><code class="xref py py-class docutils literal notranslate"><span class="pre">Team</span></code></a> when fetching with <a class="reference internal" href="api.html#discord.Client.application_info" title="discord.Client.application_info"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.application_info()</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2239">GH-2239</a>)</p></li>
|
||
<li><p>Add support for suppressing embeds via <a class="reference internal" href="api.html#discord.Message.edit" title="discord.Message.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.edit()</span></code></a></p></li>
|
||
<li><p>Add support for guild subscriptions. See the <a class="reference internal" href="api.html#discord.Client" title="discord.Client"><code class="xref py py-class docutils literal notranslate"><span class="pre">Client</span></code></a> documentation for more details.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.VoiceChannel.voice_states" title="discord.VoiceChannel.voice_states"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceChannel.voice_states</span></code></a> to get voice states without relying on member cache.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.query_members" title="discord.Guild.query_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.query_members()</span></code></a> to request members from the gateway.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.FFmpegOpusAudio" title="discord.FFmpegOpusAudio"><code class="xref py py-class docutils literal notranslate"><span class="pre">FFmpegOpusAudio</span></code></a> and other voice improvements. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2258">GH-2258</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.RawMessageUpdateEvent.channel_id" title="discord.RawMessageUpdateEvent.channel_id"><code class="xref py py-attr docutils literal notranslate"><span class="pre">RawMessageUpdateEvent.channel_id</span></code></a> for retrieving channel IDs during raw message updates. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2301">GH-2301</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.RawReactionActionEvent.event_type" title="discord.RawReactionActionEvent.event_type"><code class="xref py py-attr docutils literal notranslate"><span class="pre">RawReactionActionEvent.event_type</span></code></a> to disambiguate between reaction addition and removal in reaction events.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.abc.GuildChannel.permissions_synced" title="discord.abc.GuildChannel.permissions_synced"><code class="xref py py-attr docutils literal notranslate"><span class="pre">abc.GuildChannel.permissions_synced</span></code></a> to query whether permissions are synced with the category. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2300">GH-2300</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2324">GH-2324</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.MessageType.channel_follow_add" title="discord.MessageType.channel_follow_add"><code class="xref py py-attr docutils literal notranslate"><span class="pre">MessageType.channel_follow_add</span></code></a> message type for announcement channels being followed. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2314">GH-2314</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Message.is_system" title="discord.Message.is_system"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.is_system()</span></code></a> to allow for quickly filtering through system messages.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.VoiceState.self_stream" title="discord.VoiceState.self_stream"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceState.self_stream</span></code></a> to indicate whether someone is streaming via Go Live. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2343">GH-2343</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Emoji.is_usable" title="discord.Emoji.is_usable"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Emoji.is_usable()</span></code></a> to check if the client user can use an emoji. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2349">GH-2349</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.VoiceRegion.europe" title="discord.VoiceRegion.europe"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceRegion.europe</span></code></a> and <a class="reference internal" href="api.html#discord.VoiceRegion.dubai" title="discord.VoiceRegion.dubai"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceRegion.dubai</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2358">GH-2358</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2490">GH-2490</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.TextChannel.follow" title="discord.TextChannel.follow"><code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.follow()</span></code></a> to follow a news channel. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2367">GH-2367</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Permissions.view_guild_insights" title="discord.Permissions.view_guild_insights"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.view_guild_insights</span></code></a> permission. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2415">GH-2415</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for new audit log types. See <a class="reference internal" href="api.html#discord-api-audit-logs"><span class="std std-ref">Audit Log Data</span></a> for more information. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2427">GH-2427</a>)</dt><dd><ul>
|
||
<li><p>Note that integration support is not finalized.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Webhook.type" title="discord.Webhook.type"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Webhook.type</span></code></a> to query the type of webhook (<a class="reference internal" href="api.html#discord.WebhookType" title="discord.WebhookType"><code class="xref py py-class docutils literal notranslate"><span class="pre">WebhookType</span></code></a>). (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2441">GH-2441</a>)</p></li>
|
||
<li><p>Allow bulk editing of channel overwrites through <code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.GuildChannel.edit()</span></code>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2198">GH-2198</a>)</p></li>
|
||
<li><p>Add <code class="xref py py-class docutils literal notranslate"><span class="pre">Activity.created_at</span></code> to see when an activity was started. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2446">GH-2446</a>)</p></li>
|
||
<li><p>Add support for <code class="docutils literal notranslate"><span class="pre">xsalsa20_poly1305_lite</span></code> encryption mode for voice. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2463">GH-2463</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.RawReactionActionEvent.member" title="discord.RawReactionActionEvent.member"><code class="xref py py-attr docutils literal notranslate"><span class="pre">RawReactionActionEvent.member</span></code></a> to get the member who did the reaction. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2443">GH-2443</a>)</p></li>
|
||
<li><p>Add support for new YouTube streaming via <a class="reference internal" href="api.html#discord.Streaming.platform" title="discord.Streaming.platform"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Streaming.platform</span></code></a> and <a class="reference internal" href="api.html#discord.Streaming.game" title="discord.Streaming.game"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Streaming.game</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2445">GH-2445</a>)</p></li>
|
||
<li><p>Add <code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.discovery_splash_url</span></code> to get the discovery splash image asset. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2482">GH-2482</a>)</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add <a class="reference internal" href="api.html#discord.Guild.rules_channel" title="discord.Guild.rules_channel"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.rules_channel</span></code></a> to get the rules channel of public guilds. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2482">GH-2482</a>)</dt><dd><ul>
|
||
<li><p>It should be noted that this feature is restricted to those who are either in Server Discovery or planning to be there.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for message flags via <a class="reference internal" href="api.html#discord.Message.flags" title="discord.Message.flags"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.flags</span></code></a> and <a class="reference internal" href="api.html#discord.MessageFlags" title="discord.MessageFlags"><code class="xref py py-class docutils literal notranslate"><span class="pre">MessageFlags</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2433">GH-2433</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.User.system" title="discord.User.system"><code class="xref py py-attr docutils literal notranslate"><span class="pre">User.system</span></code></a> and <code class="xref py py-attr docutils literal notranslate"><span class="pre">Profile.system</span></code> to know whether a user is an official Discord Trust and Safety account.</p></li>
|
||
<li><p>Add <code class="xref py py-attr docutils literal notranslate"><span class="pre">Profile.team_user</span></code> to check whether a user is a member of a team.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Attachment.to_file" title="discord.Attachment.to_file"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Attachment.to_file()</span></code></a> to easily convert attachments to <a class="reference internal" href="api.html#discord.File" title="discord.File"><code class="xref py py-class docutils literal notranslate"><span class="pre">File</span></code></a> for sending.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add certain aliases to <a class="reference internal" href="api.html#discord.Permissions" title="discord.Permissions"><code class="xref py py-class docutils literal notranslate"><span class="pre">Permissions</span></code></a> to match the UI better. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2496">GH-2496</a>)</dt><dd><ul>
|
||
<li><p><a class="reference internal" href="api.html#discord.Permissions.manage_permissions" title="discord.Permissions.manage_permissions"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.manage_permissions</span></code></a></p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Permissions.view_channel" title="discord.Permissions.view_channel"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.view_channel</span></code></a></p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Permissions.use_external_emojis" title="discord.Permissions.use_external_emojis"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.use_external_emojis</span></code></a></p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for passing keyword arguments when creating <a class="reference internal" href="api.html#discord.Permissions" title="discord.Permissions"><code class="xref py py-class docutils literal notranslate"><span class="pre">Permissions</span></code></a>.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for custom activities via <a class="reference internal" href="api.html#discord.CustomActivity" title="discord.CustomActivity"><code class="xref py py-class docutils literal notranslate"><span class="pre">CustomActivity</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2400">GH-2400</a>)</dt><dd><ul>
|
||
<li><p>Note that as of now, bots cannot send custom activities yet.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add support for <a class="reference internal" href="api.html#discord.on_invite_create" title="discord.on_invite_create"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_invite_create()</span></code></a> and <a class="reference internal" href="api.html#discord.on_invite_delete" title="discord.on_invite_delete"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_invite_delete()</span></code></a> events.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for clearing a specific reaction emoji from a message.</dt><dd><ul>
|
||
<li><p><a class="reference internal" href="api.html#discord.Message.clear_reaction" title="discord.Message.clear_reaction"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.clear_reaction()</span></code></a> and <a class="reference internal" href="api.html#discord.Reaction.clear" title="discord.Reaction.clear"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Reaction.clear()</span></code></a> methods.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.on_raw_reaction_clear_emoji" title="discord.on_raw_reaction_clear_emoji"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_raw_reaction_clear_emoji()</span></code></a> and <a class="reference internal" href="api.html#discord.on_reaction_clear_emoji" title="discord.on_reaction_clear_emoji"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_reaction_clear_emoji()</span></code></a> events.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.utils.sleep_until" title="discord.utils.sleep_until"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.sleep_until()</span></code></a> helper to sleep until a specific datetime. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2517">GH-2517</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2519">GH-2519</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add support for teams and <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Bot.owner_ids" title="discord.ext.commands.Bot.owner_ids"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Bot.owner_ids</span></code></a> to have multiple bot owners. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2239">GH-2239</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add new <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.BucketType.role" title="discord.ext.commands.BucketType.role"><code class="xref py py-attr docutils literal notranslate"><span class="pre">BucketType.role</span></code></a> bucket type. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2201">GH-2201</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Expose <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.cog" title="discord.ext.commands.Command.cog"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Command.cog</span></code></a> property publicly. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2360">GH-2360</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add non-decorator interface for adding checks to commands via <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.add_check" title="discord.ext.commands.Command.add_check"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Command.add_check</span></code></a> and <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.remove_check" title="discord.ext.commands.Command.remove_check"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Command.remove_check</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2411">GH-2411</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.has_guild_permissions" title="discord.ext.commands.has_guild_permissions"><code class="xref py py-func docutils literal notranslate"><span class="pre">has_guild_permissions</span></code></a> check. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2460">GH-2460</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.bot_has_guild_permissions" title="discord.ext.commands.bot_has_guild_permissions"><code class="xref py py-func docutils literal notranslate"><span class="pre">bot_has_guild_permissions</span></code></a> check. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2460">GH-2460</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add <code class="docutils literal notranslate"><span class="pre">predicate</span></code> attribute to checks decorated with <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.check" title="discord.ext.commands.check"><code class="xref py py-func docutils literal notranslate"><span class="pre">check()</span></code></a>.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.check_any" title="discord.ext.commands.check_any"><code class="xref py py-func docutils literal notranslate"><span class="pre">check_any()</span></code></a> check to logical OR multiple checks.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.max_concurrency" title="discord.ext.commands.max_concurrency"><code class="xref py py-func docutils literal notranslate"><span class="pre">max_concurrency()</span></code></a> to allow only a certain amount of users to use a command concurrently before waiting or erroring.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Add support for calling a <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command" title="discord.ext.commands.Command"><code class="xref py py-class docutils literal notranslate"><span class="pre">Command</span></code></a> as a regular function.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] <a class="reference internal" href="ext/tasks/index.html#discord.ext.tasks.Loop.add_exception_type" title="discord.ext.tasks.Loop.add_exception_type"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Loop.add_exception_type</span></code></a> now allows multiple exceptions to be set. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2333">GH-2333</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Add <a class="reference internal" href="ext/tasks/index.html#discord.ext.tasks.Loop.next_iteration" title="discord.ext.tasks.Loop.next_iteration"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Loop.next_iteration</span></code></a> property. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2305">GH-2305</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id26">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id26" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix issue with permission resolution sometimes failing for guilds with no owner.</p></li>
|
||
<li><p>Tokens are now stripped upon use. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2135">GH-2135</a>)</p></li>
|
||
<li><p>Passing in a <code class="docutils literal notranslate"><span class="pre">name</span></code> is no longer required for <a class="reference internal" href="api.html#discord.Emoji.edit" title="discord.Emoji.edit"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Emoji.edit()</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2368">GH-2368</a>)</p></li>
|
||
<li><p>Fix issue with webhooks not re-raising after retries have run out. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2272">GH-2272</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2380">GH-2380</a>)</p></li>
|
||
<li><p>Fix mismatch in URL handling in <a class="reference internal" href="api.html#discord.utils.escape_markdown" title="discord.utils.escape_markdown"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.escape_markdown()</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2420">GH-2420</a>)</p></li>
|
||
<li><p>Fix issue with ports being read in little endian when they should be big endian in voice connections. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2470">GH-2470</a>)</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.Member.mentioned_in" title="discord.Member.mentioned_in"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Member.mentioned_in()</span></code></a> not taking into consideration the message’s guild.</p></li>
|
||
<li><p>Fix bug with moving channels when there are gaps in positions due to channel deletion and creation.</p></li>
|
||
<li><p>Fix <a class="reference internal" href="api.html#discord.on_shard_ready" title="discord.on_shard_ready"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_shard_ready()</span></code></a> not triggering when <code class="docutils literal notranslate"><span class="pre">fetch_offline_members</span></code> is disabled. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2504">GH-2504</a>)</p></li>
|
||
<li><p>Fix issue with large sharded bots taking too long to actually dispatch <a class="reference internal" href="api.html#discord.on_ready" title="discord.on_ready"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_ready()</span></code></a>.</p></li>
|
||
<li><p>Fix issue with fetching group DM based invites in <a class="reference internal" href="api.html#discord.Client.fetch_invite" title="discord.Client.fetch_invite"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.fetch_invite()</span></code></a>.</p></li>
|
||
<li><p>Fix out of order files being sent in webhooks when there are 10 files.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Extensions that fail internally due to ImportError will no longer raise <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.ExtensionNotFound" title="discord.ext.commands.ExtensionNotFound"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ExtensionNotFound</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2244">GH-2244</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2275">GH-2275</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2291">GH-2291</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Updating the <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Paginator.suffix" title="discord.ext.commands.Paginator.suffix"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Paginator.suffix</span></code></a> will not cause out of date calculations. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2251">GH-2251</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Allow converters from custom extension packages. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2369">GH-2369</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2374">GH-2374</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix issue with paginator prefix being <code class="docutils literal notranslate"><span class="pre">None</span></code> causing empty pages. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2471">GH-2471</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Greedy" title="discord.ext.commands.Greedy"><code class="xref py py-class docutils literal notranslate"><span class="pre">Greedy</span></code></a> now ignores parsing errors rather than propagating them.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.can_run" title="discord.ext.commands.Command.can_run"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Command.can_run</span></code></a> now checks whether a command is disabled.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <code class="xref py py-attr docutils literal notranslate"><span class="pre">HelpCommand.clean_prefix</span></code> now takes into consideration nickname mentions. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2489">GH-2489</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Context.send_help" title="discord.ext.commands.Context.send_help"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Context.send_help</span></code></a> now properly propagates to the <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.HelpCommand.on_help_command_error" title="discord.ext.commands.HelpCommand.on_help_command_error"><code class="xref py py-meth docutils literal notranslate"><span class="pre">HelpCommand.on_help_command_error</span></code></a> handler.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id27">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id27" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>The library now fully supports Python 3.8 without warnings.</p></li>
|
||
<li><p>Bump the dependency of <code class="docutils literal notranslate"><span class="pre">websockets</span></code> to 8.0 for those who can use it. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2453">GH-2453</a>)</p></li>
|
||
<li><p>Due to Discord providing <a class="reference internal" href="api.html#discord.Member" title="discord.Member"><code class="xref py py-class docutils literal notranslate"><span class="pre">Member</span></code></a> data in mentions, users will now be upgraded to <a class="reference internal" href="api.html#discord.Member" title="discord.Member"><code class="xref py py-class docutils literal notranslate"><span class="pre">Member</span></code></a> more often if mentioned.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.utils.escape_markdown" title="discord.utils.escape_markdown"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.escape_markdown()</span></code></a> now properly escapes new quote markdown.</p></li>
|
||
<li><p>The message cache can now be disabled by passing <code class="docutils literal notranslate"><span class="pre">None</span></code> to <code class="docutils literal notranslate"><span class="pre">max_messages</span></code> in <a class="reference internal" href="api.html#discord.Client" title="discord.Client"><code class="xref py py-class docutils literal notranslate"><span class="pre">Client</span></code></a>.</p></li>
|
||
<li><p>The default message cache size has changed from 5000 to 1000 to accommodate small bots.</p></li>
|
||
<li><p>Lower memory usage by only creating certain objects as needed in <a class="reference internal" href="api.html#discord.Role" title="discord.Role"><code class="xref py py-class docutils literal notranslate"><span class="pre">Role</span></code></a>.</p></li>
|
||
<li><p>There is now a sleep of 5 seconds before re-IDENTIFYing during a reconnect to prevent long loops of session invalidation.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>The rate limiting code now uses millisecond precision to have more granular rate limit handling.</dt><dd><ul>
|
||
<li><p>Along with that, the rate limiting code now uses Discord’s response to wait. If you need to use the system clock again for whatever reason, consider passing <code class="docutils literal notranslate"><span class="pre">assume_synced_clock</span></code> in <a class="reference internal" href="api.html#discord.Client" title="discord.Client"><code class="xref py py-class docutils literal notranslate"><span class="pre">Client</span></code></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>The performance of <a class="reference internal" href="api.html#discord.Guild.default_role" title="discord.Guild.default_role"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.default_role</span></code></a> has been improved from O(N) to O(1). (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2375">GH-2375</a>)</p></li>
|
||
<li><p>The performance of <a class="reference internal" href="api.html#discord.Member.roles" title="discord.Member.roles"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.roles</span></code></a> has improved due to usage of caching to avoid surprising performance traps.</p></li>
|
||
<li><p>The GC is manually triggered during things that cause large deallocations (such as guild removal) to prevent memory fragmentation.</p></li>
|
||
<li><p>There have been many changes to the documentation for fixes both for usability, correctness, and to fix some linter errors. Thanks to everyone who contributed to those.</p></li>
|
||
<li><p>The loading of the opus module has been delayed which would make the result of <a class="reference internal" href="api.html#discord.opus.is_loaded" title="discord.opus.is_loaded"><code class="xref py py-func docutils literal notranslate"><span class="pre">opus.is_loaded()</span></code></a> somewhat surprising.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Usernames prefixed with @ inside DMs will properly convert using the <a class="reference internal" href="api.html#discord.User" title="discord.User"><code class="xref py py-class docutils literal notranslate"><span class="pre">User</span></code></a> converter. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2498">GH-2498</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] The task sleeping time will now take into consideration the amount of time the task body has taken before sleeping. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2516">GH-2516</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-2-5">
|
||
<span id="vp1p2p5"></span><h2>v1.2.5<a class="headerlink" href="#v1-2-5" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id28">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id28" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix a bug that caused crashes due to missing <code class="docutils literal notranslate"><span class="pre">animated</span></code> field in Emoji structures in reactions.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-2-4">
|
||
<span id="vp1p2p4"></span><h2>v1.2.4<a class="headerlink" href="#v1-2-4" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id29">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id29" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix a regression when <a class="reference internal" href="api.html#discord.Message.channel" title="discord.Message.channel"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.channel</span></code></a> would be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p></li>
|
||
<li><p>Fix a regression where <a class="reference internal" href="api.html#discord.Message.edited_at" title="discord.Message.edited_at"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.edited_at</span></code></a> would not update during edits.</p></li>
|
||
<li><p>Fix a crash that would trigger during message updates (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2265">GH-2265</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2287">GH-2287</a>).</p></li>
|
||
<li><p>Fix a bug when <a class="reference internal" href="api.html#discord.VoiceChannel.connect" title="discord.VoiceChannel.connect"><code class="xref py py-meth docutils literal notranslate"><span class="pre">VoiceChannel.connect()</span></code></a> would not return (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2274">GH-2274</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2372">GH-2372</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2373">GH-2373</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2377">GH-2377</a>).</p></li>
|
||
<li><p>Fix a crash relating to token-less webhooks (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2364">GH-2364</a>).</p></li>
|
||
<li><p>Fix issue where <a class="reference internal" href="api.html#discord.Guild.premium_subscription_count" title="discord.Guild.premium_subscription_count"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.premium_subscription_count</span></code></a> would be <code class="docutils literal notranslate"><span class="pre">None</span></code> due to a Discord bug. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2331">GH-2331</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2376">GH-2376</a>).</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-2-3">
|
||
<span id="vp1p2p3"></span><h2>v1.2.3<a class="headerlink" href="#v1-2-3" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id30">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id30" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix an AttributeError when accessing <a class="reference internal" href="api.html#discord.Member.premium_since" title="discord.Member.premium_since"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.premium_since</span></code></a> in <a class="reference internal" href="api.html#discord.on_member_update" title="discord.on_member_update"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_member_update()</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2213">GH-2213</a>)</p></li>
|
||
<li><p>Handle <a class="reference external" href="https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.CancelledError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">asyncio.CancelledError</span></code></a> in <a class="reference internal" href="api.html#discord.abc.Messageable.typing" title="discord.abc.Messageable.typing"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.Messageable.typing()</span></code></a> context manager. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2218">GH-2218</a>)</p></li>
|
||
<li><p>Raise the max encoder bitrate to 512kbps to account for nitro boosting. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2232">GH-2232</a>)</p></li>
|
||
<li><p>Properly propagate exceptions in <a class="reference internal" href="api.html#discord.Client.run" title="discord.Client.run"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.run()</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2237">GH-2237</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Ensure cooldowns are properly copied when used in cog level <code class="docutils literal notranslate"><span class="pre">command_attrs</span></code>.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-2-2">
|
||
<span id="vp1p2p2"></span><h2>v1.2.2<a class="headerlink" href="#v1-2-2" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id31">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id31" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Audit log related attribute access have been fixed to not error out when they shouldn’t have.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-2-1">
|
||
<span id="vp1p2p1"></span><h2>v1.2.1<a class="headerlink" href="#v1-2-1" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id32">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id32" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="xref py py-attr docutils literal notranslate"><span class="pre">User.avatar_url</span></code> and related attributes no longer raise an error.</p></li>
|
||
<li><p>More compatibility shims with the <code class="docutils literal notranslate"><span class="pre">enum.Enum</span></code> code.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-2-0">
|
||
<span id="vp1p2p0"></span><h2>v1.2.0<a class="headerlink" href="#v1-2-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This update mainly brings performance improvements and various nitro boosting attributes (referred to in the API as “premium guilds”).</p>
|
||
<section id="id33">
|
||
<h3>New Features<a class="headerlink" href="#id33" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.premium_tier" title="discord.Guild.premium_tier"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.premium_tier</span></code></a> to query the guild’s current nitro boost level.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.emoji_limit" title="discord.Guild.emoji_limit"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.emoji_limit</span></code></a>, <a class="reference internal" href="api.html#discord.Guild.bitrate_limit" title="discord.Guild.bitrate_limit"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.bitrate_limit</span></code></a>, <a class="reference internal" href="api.html#discord.Guild.filesize_limit" title="discord.Guild.filesize_limit"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.filesize_limit</span></code></a> to query the new limits of a guild when taking into consideration boosting.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.premium_subscription_count" title="discord.Guild.premium_subscription_count"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.premium_subscription_count</span></code></a> to query how many members are boosting a guild.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Member.premium_since" title="discord.Member.premium_since"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.premium_since</span></code></a> to query since when a member has boosted a guild.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.premium_subscribers" title="discord.Guild.premium_subscribers"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.premium_subscribers</span></code></a> to query all the members currently boosting the guild.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add <a class="reference internal" href="api.html#discord.Guild.system_channel_flags" title="discord.Guild.system_channel_flags"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.system_channel_flags</span></code></a> to query the settings for a guild’s <a class="reference internal" href="api.html#discord.Guild.system_channel" title="discord.Guild.system_channel"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.system_channel</span></code></a>.</dt><dd><ul>
|
||
<li><p>This includes a new type named <a class="reference internal" href="api.html#discord.SystemChannelFlags" title="discord.SystemChannelFlags"><code class="xref py py-class docutils literal notranslate"><span class="pre">SystemChannelFlags</span></code></a></p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Emoji.available" title="discord.Emoji.available"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Emoji.available</span></code></a> to query if an emoji can be used (within the guild or otherwise).</p></li>
|
||
<li><p>Add support for animated icons in <code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.icon_url_as()</span></code> and <code class="xref py py-attr docutils literal notranslate"><span class="pre">Guild.icon_url</span></code>.</p></li>
|
||
<li><p>Add <code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.is_icon_animated()</span></code>.</p></li>
|
||
<li><p>Add support for the various new <a class="reference internal" href="api.html#discord.MessageType" title="discord.MessageType"><code class="xref py py-class docutils literal notranslate"><span class="pre">MessageType</span></code></a> involving nitro boosting.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.VoiceRegion.india" title="discord.VoiceRegion.india"><code class="xref py py-attr docutils literal notranslate"><span class="pre">VoiceRegion.india</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2145">GH-2145</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Embed.insert_field_at" title="discord.Embed.insert_field_at"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Embed.insert_field_at()</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2178">GH-2178</a>)</p></li>
|
||
<li><p>Add a <code class="docutils literal notranslate"><span class="pre">type</span></code> attribute for all channels to their appropriate <a class="reference internal" href="api.html#discord.ChannelType" title="discord.ChannelType"><code class="xref py py-class docutils literal notranslate"><span class="pre">ChannelType</span></code></a>. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2185">GH-2185</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Client.fetch_channel" title="discord.Client.fetch_channel"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.fetch_channel()</span></code></a> to fetch a channel by ID via HTTP. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2169">GH-2169</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Guild.fetch_channels" title="discord.Guild.fetch_channels"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.fetch_channels()</span></code></a> to fetch all channels via HTTP. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2169">GH-2169</a>)</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Add <a class="reference internal" href="ext/tasks/index.html#discord.ext.tasks.Loop.stop" title="discord.ext.tasks.Loop.stop"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Loop.stop</span></code></a> to gracefully stop a task rather than cancelling.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Add <a class="reference internal" href="ext/tasks/index.html#discord.ext.tasks.Loop.failed" title="discord.ext.tasks.Loop.failed"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Loop.failed</span></code></a> to query if a task had failed somehow.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Add <a class="reference internal" href="ext/tasks/index.html#discord.ext.tasks.Loop.change_interval" title="discord.ext.tasks.Loop.change_interval"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Loop.change_interval</span></code></a> to change the sleep interval at runtime (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2158">GH-2158</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2162">GH-2162</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id34">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id34" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix internal error when using <a class="reference internal" href="api.html#discord.Guild.prune_members" title="discord.Guild.prune_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.prune_members()</span></code></a>.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/commands/index.html#discord-ext-commands"><span class="std std-ref">ext.commands</span></a>] Fix <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.invoked_subcommand" title="discord.ext.commands.Command.invoked_subcommand"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Command.invoked_subcommand</span></code></a> being invalid in many cases.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Reset iteration count when the loop terminates and is restarted.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] The decorator interface now works as expected when stacking (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2154">GH-2154</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id35">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id35" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><dl class="simple">
|
||
<dt>Improve performance of all Enum related code significantly.</dt><dd><ul>
|
||
<li><p>This was done by replacing the <code class="docutils literal notranslate"><span class="pre">enum.Enum</span></code> code with an API compatible one.</p></li>
|
||
<li><p>This should not be a breaking change for most users due to duck-typing.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Improve performance of message creation by about 1.5x.</p></li>
|
||
<li><p>Improve performance of message editing by about 1.5-4x depending on payload size.</p></li>
|
||
<li><p>Improve performance of attribute access on <a class="reference internal" href="api.html#discord.Member" title="discord.Member"><code class="xref py py-class docutils literal notranslate"><span class="pre">Member</span></code></a> about by 2x.</p></li>
|
||
<li><p>Improve performance of <a class="reference internal" href="api.html#discord.utils.get" title="discord.utils.get"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.get()</span></code></a> by around 4-6x depending on usage.</p></li>
|
||
<li><p>Improve performance of event parsing lookup by around 2.5x.</p></li>
|
||
<li><p>Keyword arguments in <a class="reference internal" href="api.html#discord.Client.start" title="discord.Client.start"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.start()</span></code></a> and <a class="reference internal" href="api.html#discord.Client.run" title="discord.Client.run"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.run()</span></code></a> are now validated (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/953">GH-953</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2170">GH-2170</a>)</p></li>
|
||
<li><p>The Discord error code is now shown in the exception message for <a class="reference internal" href="api.html#discord.HTTPException" title="discord.HTTPException"><code class="xref py py-exc docutils literal notranslate"><span class="pre">HTTPException</span></code></a>.</p></li>
|
||
<li><p>Internal tasks launched by the library will now have their own custom <code class="docutils literal notranslate"><span class="pre">__repr__</span></code>.</p></li>
|
||
<li><p>All public facing types should now have a proper and more detailed <code class="docutils literal notranslate"><span class="pre">__repr__</span></code>.</p></li>
|
||
<li><p>[<a class="reference internal" href="ext/tasks/index.html#discord-ext-tasks"><span class="std std-ref">ext.tasks</span></a>] Errors are now logged via the standard <a class="reference external" href="https://docs.python.org/3/library/logging.html#module-logging" title="(in Python v3.9)"><code class="docutils literal notranslate"><span class="pre">logging</span></code></a> module.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-1-1">
|
||
<span id="vp1p1p1"></span><h2>v1.1.1<a class="headerlink" href="#v1-1-1" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id36">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id36" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Webhooks do not overwrite data on retrying their HTTP requests (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2140">GH-2140</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id37">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id37" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Add back signal handling to <a class="reference internal" href="api.html#discord.Client.run" title="discord.Client.run"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.run()</span></code></a> due to issues some users had with proper cleanup.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-1-0">
|
||
<span id="vp1p1p0"></span><h2>v1.1.0<a class="headerlink" href="#v1-1-0" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id38">
|
||
<h3>New Features<a class="headerlink" href="#id38" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><dl class="simple">
|
||
<dt><strong>There is a new extension dedicated to making background tasks easier.</strong></dt><dd><ul>
|
||
<li><p>You can check the documentation here: <a class="reference internal" href="ext/tasks/index.html#ext-tasks-api"><span class="std std-ref">API Reference</span></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Permissions.stream" title="discord.Permissions.stream"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.stream</span></code></a> permission. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2077">GH-2077</a>)</p></li>
|
||
<li><p>Add equality comparison and hash support to <a class="reference internal" href="api.html#discord.Asset" title="discord.Asset"><code class="xref py py-class docutils literal notranslate"><span class="pre">Asset</span></code></a></p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">compute_prune_members</span></code> parameter to <a class="reference internal" href="api.html#discord.Guild.prune_members" title="discord.Guild.prune_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Guild.prune_members()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2085">GH-2085</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Client.cached_messages" title="discord.Client.cached_messages"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Client.cached_messages</span></code></a> attribute to fetch the message cache (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2086">GH-2086</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.abc.GuildChannel.clone" title="discord.abc.GuildChannel.clone"><code class="xref py py-meth docutils literal notranslate"><span class="pre">abc.GuildChannel.clone()</span></code></a> to clone a guild channel. (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2093">GH-2093</a>)</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">delay</span></code> keyword-only argument to <a class="reference internal" href="api.html#discord.Message.delete" title="discord.Message.delete"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.delete()</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2094">GH-2094</a>)</p></li>
|
||
<li><p>Add support for <code class="docutils literal notranslate"><span class="pre"><:name:id></span></code> when adding reactions (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2095">GH-2095</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Asset.read" title="discord.Asset.read"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Asset.read()</span></code></a> to fetch the bytes content of an asset (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2107">GH-2107</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Attachment.read" title="discord.Attachment.read"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Attachment.read()</span></code></a> to fetch the bytes content of an attachment (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2118">GH-2118</a>)</p></li>
|
||
<li><p>Add support for voice kicking by passing <code class="docutils literal notranslate"><span class="pre">None</span></code> to <a class="reference internal" href="api.html#discord.Member.move_to" title="discord.Member.move_to"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Member.move_to()</span></code></a>.</p></li>
|
||
</ul>
|
||
<section id="discord-ext-commands">
|
||
<h4><code class="docutils literal notranslate"><span class="pre">discord.ext.commands</span></code><a class="headerlink" href="#discord-ext-commands" title="Permalink to this headline">¶</a></h4>
|
||
<ul class="simple">
|
||
<li><p>Add new <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.dm_only" title="discord.ext.commands.dm_only"><code class="xref py py-func docutils literal notranslate"><span class="pre">dm_only()</span></code></a> check.</p></li>
|
||
<li><p>Support callable converters in <code class="xref py py-data docutils literal notranslate"><span class="pre">Greedy</span></code></p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add new <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.MessageConverter" title="discord.ext.commands.MessageConverter"><code class="xref py py-class docutils literal notranslate"><span class="pre">MessageConverter</span></code></a>.</dt><dd><ul>
|
||
<li><p>This allows you to use <a class="reference internal" href="api.html#discord.Message" title="discord.Message"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message</span></code></a> as a type hint in functions.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Allow passing <code class="docutils literal notranslate"><span class="pre">cls</span></code> in the <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.group" title="discord.ext.commands.group"><code class="xref py py-func docutils literal notranslate"><span class="pre">group()</span></code></a> decorator (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2061">GH-2061</a>)</p></li>
|
||
<li><p>Add <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.Command.parents" title="discord.ext.commands.Command.parents"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Command.parents</span></code></a> to fetch the parents of a command (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2104">GH-2104</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="id39">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id39" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#AttributeError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">AttributeError</span></code></a> when using <code class="docutils literal notranslate"><span class="pre">__repr__</span></code> on <a class="reference internal" href="api.html#discord.Widget" title="discord.Widget"><code class="xref py py-class docutils literal notranslate"><span class="pre">Widget</span></code></a>.</p></li>
|
||
<li><p>Fix issue with <a class="reference internal" href="api.html#discord.abc.GuildChannel.overwrites" title="discord.abc.GuildChannel.overwrites"><code class="xref py py-attr docutils literal notranslate"><span class="pre">abc.GuildChannel.overwrites</span></code></a> returning <code class="docutils literal notranslate"><span class="pre">None</span></code> for keys.</p></li>
|
||
<li><p>Remove incorrect legacy NSFW checks in e.g. <a class="reference internal" href="api.html#discord.TextChannel.is_nsfw" title="discord.TextChannel.is_nsfw"><code class="xref py py-meth docutils literal notranslate"><span class="pre">TextChannel.is_nsfw()</span></code></a>.</p></li>
|
||
<li><p>Fix <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#UnboundLocalError" title="(in Python v3.9)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">UnboundLocalError</span></code></a> when <code class="xref py py-class docutils literal notranslate"><span class="pre">RequestsWebhookAdapter</span></code> raises an error.</p></li>
|
||
<li><p>Fix bug where updating your own user did not update your member instances.</p></li>
|
||
<li><p>Tighten constraints of <code class="docutils literal notranslate"><span class="pre">__eq__</span></code> in <a class="reference internal" href="api.html#discord.Spotify" title="discord.Spotify"><code class="xref py py-class docutils literal notranslate"><span class="pre">Spotify</span></code></a> objects (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2113">GH-2113</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2117">GH-2117</a>)</p></li>
|
||
</ul>
|
||
<section id="id40">
|
||
<h4><code class="docutils literal notranslate"><span class="pre">discord.ext.commands</span></code><a class="headerlink" href="#id40" title="Permalink to this headline">¶</a></h4>
|
||
<ul class="simple">
|
||
<li><p>Fix lambda converters in a non-module context (e.g. <code class="docutils literal notranslate"><span class="pre">eval</span></code>).</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Use message creation time for reference time when computing cooldowns.</dt><dd><ul>
|
||
<li><p>This prevents cooldowns from triggering during e.g. a RESUME session.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
<li><p>Fix the default <code class="xref py py-func docutils literal notranslate"><span class="pre">on_command_error()</span></code> to work with new-style cogs (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2094">GH-2094</a>)</p></li>
|
||
<li><p>DM channels are now recognised as NSFW in <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.is_nsfw" title="discord.ext.commands.is_nsfw"><code class="xref py py-func docutils literal notranslate"><span class="pre">is_nsfw()</span></code></a> check.</p></li>
|
||
<li><p>Fix race condition with help commands (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2123">GH-2123</a>)</p></li>
|
||
<li><p>Fix cog descriptions not showing in <a class="reference internal" href="ext/commands/api.html#discord.ext.commands.MinimalHelpCommand" title="discord.ext.commands.MinimalHelpCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MinimalHelpCommand</span></code></a> (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2139">GH-2139</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="id41">
|
||
<h3>Miscellaneous<a class="headerlink" href="#id41" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Improve the performance of internal enum creation in the library by about 5x.</p></li>
|
||
<li><p>Make the output of <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">-m</span> <span class="pre">discord</span> <span class="pre">--version</span></code> a bit more useful.</p></li>
|
||
<li><p>The loop cleanup facility has been rewritten again.</p></li>
|
||
<li><p>The signal handling in <a class="reference internal" href="api.html#discord.Client.run" title="discord.Client.run"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.run()</span></code></a> has been removed.</p></li>
|
||
</ul>
|
||
<section id="id42">
|
||
<h4><code class="docutils literal notranslate"><span class="pre">discord.ext.commands</span></code><a class="headerlink" href="#id42" title="Permalink to this headline">¶</a></h4>
|
||
<ul class="simple">
|
||
<li><p>Custom exception classes are now used for all default checks in the library (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2101">GH-2101</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
<section id="v1-0-1">
|
||
<span id="vp1p0p1"></span><h2>v1.0.1<a class="headerlink" href="#v1-0-1" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id43">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id43" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix issue with speaking state being cast to <code class="docutils literal notranslate"><span class="pre">int</span></code> when it was invalid.</p></li>
|
||
<li><p>Fix some issues with loop cleanup that some users experienced on Linux machines.</p></li>
|
||
<li><p>Fix voice handshake race condition (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2056">GH-2056</a>, <a class="reference external" href="https://github.com/Rapptz/discord.py/issues/2063">GH-2063</a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v1-0-0">
|
||
<span id="vp1p0p0"></span><h2>v1.0.0<a class="headerlink" href="#v1-0-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>The changeset for this version are too big to be listed here, for more information please
|
||
see <a class="reference internal" href="migrating.html#migrating-1-0"><span class="std std-ref">the migrating page</span></a>.</p>
|
||
</section>
|
||
<section id="v0-16-6">
|
||
<span id="vp0p16p6"></span><h2>v0.16.6<a class="headerlink" href="#v0-16-6" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id44">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id44" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix issue with <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.create_server()</span></code> that made it stop working.</p></li>
|
||
<li><p>Fix main thread being blocked upon calling <code class="docutils literal notranslate"><span class="pre">StreamPlayer.stop</span></code>.</p></li>
|
||
<li><p>Handle HEARTBEAT_ACK and resume gracefully when it occurs.</p></li>
|
||
<li><p>Fix race condition when pre-emptively rate limiting that caused releasing an already released lock.</p></li>
|
||
<li><p>Fix invalid state errors when immediately cancelling a coroutine.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-16-1">
|
||
<span id="vp0p16p1"></span><h2>v0.16.1<a class="headerlink" href="#v0-16-1" title="Permalink to this headline">¶</a></h2>
|
||
<p>This release is just a bug fix release with some better rate limit implementation.</p>
|
||
<section id="id45">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id45" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Servers are now properly chunked for user bots.</p></li>
|
||
<li><p>The CDN URL is now used instead of the API URL for assets.</p></li>
|
||
<li><p>Rate limit implementation now tries to use header information if possible.</p></li>
|
||
<li><p>Event loop is now properly propagated (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/420">GH-420</a>)</p></li>
|
||
<li><p>Allow falsey values in <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.send_message()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.send_file()</span></code>.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-16-0">
|
||
<span id="vp0p16p0"></span><h2>v0.16.0<a class="headerlink" href="#v0-16-0" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id46">
|
||
<h3>New Features<a class="headerlink" href="#id46" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Add <code class="xref py py-attr docutils literal notranslate"><span class="pre">Channel.overwrites</span></code> to get all the permission overwrites of a channel.</p></li>
|
||
<li><p>Add <code class="xref py py-attr docutils literal notranslate"><span class="pre">Server.features</span></code> to get information about partnered servers.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id47">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id47" title="Permalink to this headline">¶</a></h3>
|
||
<ul>
|
||
<li><p>Timeout when waiting for offline members while triggering <a class="reference internal" href="api.html#discord.on_ready" title="discord.on_ready"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_ready()</span></code></a>.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>The fact that we did not timeout caused a gigantic memory leak in the library that caused
|
||
thousands of duplicate <a class="reference internal" href="api.html#discord.Member" title="discord.Member"><code class="xref py py-class docutils literal notranslate"><span class="pre">Member</span></code></a> instances causing big memory spikes.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Discard null sequences in the gateway.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>The fact these were not discarded meant that <a class="reference internal" href="api.html#discord.on_ready" title="discord.on_ready"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_ready()</span></code></a> kept being called instead of
|
||
<a class="reference internal" href="api.html#discord.on_resumed" title="discord.on_resumed"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_resumed()</span></code></a>. Since this has been corrected, in most cases <a class="reference internal" href="api.html#discord.on_ready" title="discord.on_ready"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_ready()</span></code></a> will be
|
||
called once or twice with <a class="reference internal" href="api.html#discord.on_resumed" title="discord.on_resumed"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_resumed()</span></code></a> being called much more often.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-15-1">
|
||
<span id="vp0p15p1"></span><h2>v0.15.1<a class="headerlink" href="#v0-15-1" title="Permalink to this headline">¶</a></h2>
|
||
<ul class="simple">
|
||
<li><p>Fix crash on duplicate or out of order reactions.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="v0-15-0">
|
||
<span id="vp0p15p0"></span><h2>v0.15.0<a class="headerlink" href="#v0-15-0" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id48">
|
||
<h3>New Features<a class="headerlink" href="#id48" title="Permalink to this headline">¶</a></h3>
|
||
<ul>
|
||
<li><p>Rich Embeds for messages are now supported.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>To do so, create your own <a class="reference internal" href="api.html#discord.Embed" title="discord.Embed"><code class="xref py py-class docutils literal notranslate"><span class="pre">Embed</span></code></a> and pass the instance to the <code class="docutils literal notranslate"><span class="pre">embed</span></code> keyword argument to <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.send_message()</span></code> or <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.edit_message()</span></code>.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.clear_reactions()</span></code> to remove all reactions from a message.</p></li>
|
||
<li><p>Add support for MESSAGE_REACTION_REMOVE_ALL event, under <a class="reference internal" href="api.html#discord.on_reaction_clear" title="discord.on_reaction_clear"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_reaction_clear()</span></code></a>.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Permissions.update" title="discord.Permissions.update"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Permissions.update()</span></code></a> and <a class="reference internal" href="api.html#discord.PermissionOverwrite.update" title="discord.PermissionOverwrite.update"><code class="xref py py-meth docutils literal notranslate"><span class="pre">PermissionOverwrite.update()</span></code></a> for bulk permission updates.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>This allows you to use e.g. <code class="docutils literal notranslate"><span class="pre">p.update(read_messages=True,</span> <span class="pre">send_messages=False)</span></code> in a single line.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.PermissionOverwrite.is_empty" title="discord.PermissionOverwrite.is_empty"><code class="xref py py-meth docutils literal notranslate"><span class="pre">PermissionOverwrite.is_empty()</span></code></a> to check if the overwrite is empty (i.e. has no overwrites set explicitly as true or false).</p></li>
|
||
</ul>
|
||
<p>For the command extension, the following changed:</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Context</span></code> is no longer slotted to facilitate setting dynamic attributes.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-14-3">
|
||
<span id="vp0p14p3"></span><h2>v0.14.3<a class="headerlink" href="#v0-14-3" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id49">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id49" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix crash when dealing with MESSAGE_REACTION_REMOVE</p></li>
|
||
<li><p>Fix incorrect buckets for reactions.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-14-2">
|
||
<span id="v0p14p2"></span><h2>v0.14.2<a class="headerlink" href="#v0-14-2" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id50">
|
||
<h3>New Features<a class="headerlink" href="#id50" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><dl class="simple">
|
||
<dt><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.wait_for_reaction()</span></code> now returns a namedtuple with <code class="docutils literal notranslate"><span class="pre">reaction</span></code> and <code class="docutils literal notranslate"><span class="pre">user</span></code> attributes.</dt><dd><ul>
|
||
<li><p>This is for better support in the case that <code class="docutils literal notranslate"><span class="pre">None</span></code> is returned since tuple unpacking can lead to issues.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
<section id="id51">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id51" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix bug that disallowed <code class="docutils literal notranslate"><span class="pre">None</span></code> to be passed for <code class="docutils literal notranslate"><span class="pre">emoji</span></code> parameter in <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.wait_for_reaction()</span></code>.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-14-1">
|
||
<span id="v0p14p1"></span><h2>v0.14.1<a class="headerlink" href="#v0-14-1" title="Permalink to this headline">¶</a></h2>
|
||
<section id="id52">
|
||
<h3>Bug fixes<a class="headerlink" href="#id52" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><dl class="simple">
|
||
<dt>Fix bug with <cite>Reaction</cite> not being visible at import.</dt><dd><ul>
|
||
<li><p>This was also breaking the documentation.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-14-0">
|
||
<span id="v0p14p0"></span><h2>v0.14.0<a class="headerlink" href="#v0-14-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This update adds new API features and a couple of bug fixes.</p>
|
||
<section id="id53">
|
||
<h3>New Features<a class="headerlink" href="#id53" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Add support for Manage Webhooks permission under <a class="reference internal" href="api.html#discord.Permissions.manage_webhooks" title="discord.Permissions.manage_webhooks"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.manage_webhooks</span></code></a></p></li>
|
||
<li><p>Add support for <code class="docutils literal notranslate"><span class="pre">around</span></code> argument in 3.5+ <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.logs_from()</span></code>.</p></li>
|
||
<li><dl class="simple">
|
||
<dt>Add support for reactions.</dt><dd><ul>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.add_reaction()</span></code> to add a reactions</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.remove_reaction()</span></code> to remove a reaction.</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.get_reaction_users()</span></code> to get the users that reacted to a message.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Permissions.add_reactions" title="discord.Permissions.add_reactions"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.add_reactions</span></code></a> permission bit support.</p></li>
|
||
<li><p>Two new events, <a class="reference internal" href="api.html#discord.on_reaction_add" title="discord.on_reaction_add"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_reaction_add()</span></code></a> and <a class="reference internal" href="api.html#discord.on_reaction_remove" title="discord.on_reaction_remove"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_reaction_remove()</span></code></a>.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Message.reactions" title="discord.Message.reactions"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.reactions</span></code></a> to get reactions from a message.</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.wait_for_reaction()</span></code> to wait for a reaction from a user.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
<section id="id54">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id54" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix bug with Paginator still allowing lines that are too long.</p></li>
|
||
<li><p>Fix the <a class="reference internal" href="api.html#discord.Permissions.manage_emojis" title="discord.Permissions.manage_emojis"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.manage_emojis</span></code></a> bit being incorrect.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-13-0">
|
||
<span id="v0p13p0"></span><h2>v0.13.0<a class="headerlink" href="#v0-13-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is a backwards compatible update with new features.</p>
|
||
<section id="id55">
|
||
<h3>New Features<a class="headerlink" href="#id55" title="Permalink to this headline">¶</a></h3>
|
||
<ul>
|
||
<li><p>Add the ability to manage emojis.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.create_custom_emoji()</span></code> to create new emoji.</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.edit_custom_emoji()</span></code> to edit an old emoji.</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.delete_custom_emoji()</span></code> to delete a custom emoji.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add new <a class="reference internal" href="api.html#discord.Permissions.manage_emojis" title="discord.Permissions.manage_emojis"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.manage_emojis</span></code></a> toggle.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>This applies for <a class="reference internal" href="api.html#discord.PermissionOverwrite" title="discord.PermissionOverwrite"><code class="xref py py-class docutils literal notranslate"><span class="pre">PermissionOverwrite</span></code></a> as well.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add new statuses for <a class="reference internal" href="api.html#discord.Status" title="discord.Status"><code class="xref py py-class docutils literal notranslate"><span class="pre">Status</span></code></a>.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p><a class="reference internal" href="api.html#discord.Status.dnd" title="discord.Status.dnd"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Status.dnd</span></code></a> (aliased with <a class="reference internal" href="api.html#discord.Status.do_not_disturb" title="discord.Status.do_not_disturb"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Status.do_not_disturb</span></code></a>) for Do Not Disturb.</p></li>
|
||
<li><p><a class="reference internal" href="api.html#discord.Status.invisible" title="discord.Status.invisible"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Status.invisible</span></code></a> for setting your status to invisible (please see the docs for a caveat).</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Deprecate <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.change_status()</span></code></p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>Use <a class="reference internal" href="api.html#discord.Client.change_presence" title="discord.Client.change_presence"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.change_presence()</span></code></a> instead for better more up to date functionality.</p></li>
|
||
<li><p>This method is subject for removal in a future API version.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Client.change_presence" title="discord.Client.change_presence"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.change_presence()</span></code></a> for changing your status with the new Discord API change.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>This is the only method that allows changing your status to invisible or do not disturb.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
<section id="id56">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id56" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Paginator pages do not exceed their max_size anymore (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/340">GH-340</a>)</p></li>
|
||
<li><p>Do Not Disturb users no longer show up offline due to the new <a class="reference internal" href="api.html#discord.Status" title="discord.Status"><code class="xref py py-class docutils literal notranslate"><span class="pre">Status</span></code></a> changes.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-12-0">
|
||
<span id="v0p12p0"></span><h2>v0.12.0<a class="headerlink" href="#v0-12-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is a bug fix update that also comes with new features.</p>
|
||
<section id="id57">
|
||
<h3>New Features<a class="headerlink" href="#id57" title="Permalink to this headline">¶</a></h3>
|
||
<ul>
|
||
<li><p>Add custom emoji support.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>Adds a new class to represent a custom Emoji named <a class="reference internal" href="api.html#discord.Emoji" title="discord.Emoji"><code class="xref py py-class docutils literal notranslate"><span class="pre">Emoji</span></code></a></p></li>
|
||
<li><p>Adds a utility generator function, <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.get_all_emojis()</span></code>.</p></li>
|
||
<li><p>Adds a list of emojis on a server, <code class="xref py py-attr docutils literal notranslate"><span class="pre">Server.emojis</span></code>.</p></li>
|
||
<li><p>Adds a new event, <code class="xref py py-func docutils literal notranslate"><span class="pre">on_server_emojis_update()</span></code>.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add new server regions to <code class="xref py py-class docutils literal notranslate"><span class="pre">ServerRegion</span></code></p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p><code class="xref py py-attr docutils literal notranslate"><span class="pre">ServerRegion.eu_central</span></code> and <code class="xref py py-attr docutils literal notranslate"><span class="pre">ServerRegion.eu_west</span></code>.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add support for new pinned system message under <a class="reference internal" href="api.html#discord.MessageType.pins_add" title="discord.MessageType.pins_add"><code class="xref py py-attr docutils literal notranslate"><span class="pre">MessageType.pins_add</span></code></a>.</p></li>
|
||
<li><p>Add order comparisons for <a class="reference internal" href="api.html#discord.Role" title="discord.Role"><code class="xref py py-class docutils literal notranslate"><span class="pre">Role</span></code></a> to allow it to be compared with regards to hierarchy.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>This means that you can now do <code class="docutils literal notranslate"><span class="pre">role_a</span> <span class="pre">></span> <span class="pre">role_b</span></code> etc to check if <code class="docutils literal notranslate"><span class="pre">role_b</span></code> is lower in the hierarchy.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add <code class="xref py py-attr docutils literal notranslate"><span class="pre">Server.role_hierarchy</span></code> to get the server’s role hierarchy.</p></li>
|
||
<li><p>Add <code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.server_permissions</span></code> to get a member’s server permissions without their channel specific overwrites.</p></li>
|
||
<li><p>Add <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.get_user_info()</span></code> to retrieve a user’s info from their ID.</p></li>
|
||
<li><p>Add a new <code class="docutils literal notranslate"><span class="pre">Player</span></code> property, <code class="docutils literal notranslate"><span class="pre">Player.error</span></code> to fetch the error that stopped the player.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>To help with this change, a player’s <code class="docutils literal notranslate"><span class="pre">after</span></code> function can now take a single parameter denoting the current player.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add support for server verification levels.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>Adds a new enum called <a class="reference internal" href="api.html#discord.VerificationLevel" title="discord.VerificationLevel"><code class="xref py py-class docutils literal notranslate"><span class="pre">VerificationLevel</span></code></a>.</p></li>
|
||
<li><p>This enum can be used in <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.edit_server()</span></code> under the <code class="docutils literal notranslate"><span class="pre">verification_level</span></code> keyword argument.</p></li>
|
||
<li><p>Adds a new attribute in the server, <code class="xref py py-attr docutils literal notranslate"><span class="pre">Server.verification_level</span></code>.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
<li><p>Add <code class="xref py py-attr docutils literal notranslate"><span class="pre">Server.voice_client</span></code> shortcut property for <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.voice_client_in()</span></code>.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>This is technically old (was added in v0.10.0) but was undocumented until v0.12.0.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
<p>For the command extension, the following are new:</p>
|
||
<ul class="simple">
|
||
<li><p>Add custom emoji converter.</p></li>
|
||
<li><p>All default converters that can take IDs can now convert via ID.</p></li>
|
||
<li><p>Add coroutine support for <code class="docutils literal notranslate"><span class="pre">Bot.command_prefix</span></code>.</p></li>
|
||
<li><p>Add a method to reset command cooldown.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id58">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id58" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix bug that caused the library to not work with the latest <code class="docutils literal notranslate"><span class="pre">websockets</span></code> library.</p></li>
|
||
<li><p>Fix bug that leaked keep alive threads (<a class="reference external" href="https://github.com/Rapptz/discord.py/issues/309">GH-309</a>)</p></li>
|
||
<li><p>Fix bug that disallowed <code class="xref py py-class docutils literal notranslate"><span class="pre">ServerRegion</span></code> from being used in <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.edit_server()</span></code>.</p></li>
|
||
<li><p>Fix bug in <code class="xref py py-meth docutils literal notranslate"><span class="pre">Channel.permissions_for()</span></code> that caused permission resolution to happen out of order.</p></li>
|
||
<li><p>Fix bug in <a class="reference internal" href="api.html#discord.Member.top_role" title="discord.Member.top_role"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.top_role</span></code></a> that did not account for same-position roles.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-11-0">
|
||
<span id="v0p11p0"></span><h2>v0.11.0<a class="headerlink" href="#v0-11-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is a minor bug fix update that comes with a gateway update (v5 -> v6).</p>
|
||
<section id="id59">
|
||
<h3>Breaking Changes<a class="headerlink" href="#id59" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Permissions.change_nicknames</span></code> has been renamed to <a class="reference internal" href="api.html#discord.Permissions.change_nickname" title="discord.Permissions.change_nickname"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.change_nickname</span></code></a> to match the UI.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id60">
|
||
<h3>New Features<a class="headerlink" href="#id60" title="Permalink to this headline">¶</a></h3>
|
||
<ul>
|
||
<li><p>Add the ability to prune members via <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.prune_members()</span></code>.</p></li>
|
||
<li><p>Switch the websocket gateway version to v6 from v5. This allows the library to work with group DMs and 1-on-1 calls.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.AppInfo.owner" title="discord.AppInfo.owner"><code class="xref py py-attr docutils literal notranslate"><span class="pre">AppInfo.owner</span></code></a> attribute.</p></li>
|
||
<li><p>Add <code class="xref py py-class docutils literal notranslate"><span class="pre">CallMessage</span></code> for group voice call messages.</p></li>
|
||
<li><p>Add <code class="xref py py-class docutils literal notranslate"><span class="pre">GroupCall</span></code> for group voice call information.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Message.system_content" title="discord.Message.system_content"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.system_content</span></code></a> to get the system message.</p></li>
|
||
<li><p>Add the remaining VIP servers and the Brazil servers into <code class="xref py py-class docutils literal notranslate"><span class="pre">ServerRegion</span></code> enum.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">stderr</span></code> argument to <code class="xref py py-meth docutils literal notranslate"><span class="pre">VoiceClient.create_ffmpeg_player()</span></code> to redirect stderr.</p></li>
|
||
<li><p>The library now handles implicit permission resolution in <code class="xref py py-meth docutils literal notranslate"><span class="pre">Channel.permissions_for()</span></code>.</p></li>
|
||
<li><p>Add <code class="xref py py-attr docutils literal notranslate"><span class="pre">Server.mfa_level</span></code> to query a server’s 2FA requirement.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Permissions.external_emojis" title="discord.Permissions.external_emojis"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Permissions.external_emojis</span></code></a> permission.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Member.voice" title="discord.Member.voice"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Member.voice</span></code></a> attribute that refers to a <a class="reference internal" href="api.html#discord.VoiceState" title="discord.VoiceState"><code class="xref py py-class docutils literal notranslate"><span class="pre">VoiceState</span></code></a>.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>For backwards compatibility, the member object will have properties mirroring the old behaviour.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
<p>For the command extension, the following are new:</p>
|
||
<ul class="simple">
|
||
<li><p>Command cooldown system with the <code class="docutils literal notranslate"><span class="pre">cooldown</span></code> decorator.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">UserInputError</span></code> exception for the hierarchy for user input related errors.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id61">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id61" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="xref py py-attr docutils literal notranslate"><span class="pre">Client.email</span></code> is now saved when using a token for user accounts.</p></li>
|
||
<li><p>Fix issue when removing roles out of order.</p></li>
|
||
<li><p>Fix bug where discriminators would not update.</p></li>
|
||
<li><p>Handle cases where <code class="docutils literal notranslate"><span class="pre">HEARTBEAT</span></code> opcode is received. This caused bots to disconnect seemingly randomly.</p></li>
|
||
</ul>
|
||
<p>For the command extension, the following bug fixes apply:</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Bot.check</span></code> decorator is actually a decorator not requiring parentheses.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Bot.remove_command</span></code> and <code class="docutils literal notranslate"><span class="pre">Group.remove_command</span></code> no longer throw if the command doesn’t exist.</p></li>
|
||
<li><p>Command names are no longer forced to be <code class="docutils literal notranslate"><span class="pre">lower()</span></code>.</p></li>
|
||
<li><p>Fix a bug where Member and User converters failed to work in private message contexts.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">HelpFormatter</span></code> now ignores hidden commands when deciding the maximum width.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="v0-10-0">
|
||
<span id="v0p10p0"></span><h2>v0.10.0<a class="headerlink" href="#v0-10-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>For breaking changes, see <a class="reference internal" href="migrating_to_async.html#migrating-to-async"><span class="std std-ref">Migrating to v0.10.0</span></a>. 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.</p>
|
||
<section id="id62">
|
||
<h3>New Features<a class="headerlink" href="#id62" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>The library is now fully <code class="docutils literal notranslate"><span class="pre">asyncio</span></code> compatible, allowing you to write non-blocking code a lot more easily.</p></li>
|
||
<li><p>The library now fully handles 429s and unconditionally retries on 502s.</p></li>
|
||
<li><p>A new command extension module was added but is currently undocumented. Figuring it out is left as an exercise to the reader.</p></li>
|
||
<li><p>Two new exception types, <a class="reference internal" href="api.html#discord.Forbidden" title="discord.Forbidden"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Forbidden</span></code></a> and <a class="reference internal" href="api.html#discord.NotFound" title="discord.NotFound"><code class="xref py py-exc docutils literal notranslate"><span class="pre">NotFound</span></code></a> to denote permission errors or 404 errors.</p></li>
|
||
<li><p>Added <a class="reference internal" href="api.html#discord.Client.delete_invite" title="discord.Client.delete_invite"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.delete_invite()</span></code></a> to revoke invites.</p></li>
|
||
<li><p>Added support for sending voice. Check <a class="reference internal" href="api.html#discord.VoiceClient" title="discord.VoiceClient"><code class="xref py py-class docutils literal notranslate"><span class="pre">VoiceClient</span></code></a> for more details.</p></li>
|
||
<li><p>Added <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.wait_for_message()</span></code> coroutine to aid with follow up commands.</p></li>
|
||
<li><p>Added <a class="reference internal" href="api.html#discord.version_info" title="discord.version_info"><code class="xref py py-data docutils literal notranslate"><span class="pre">version_info</span></code></a> named tuple to check version info of the library.</p></li>
|
||
<li><p>Login credentials are now cached to have a faster login experience. You can disable this by passing in <code class="docutils literal notranslate"><span class="pre">cache_auth=False</span></code>
|
||
when constructing a <a class="reference internal" href="api.html#discord.Client" title="discord.Client"><code class="xref py py-class docutils literal notranslate"><span class="pre">Client</span></code></a>.</p></li>
|
||
<li><p>New utility function, <a class="reference internal" href="api.html#discord.utils.get" title="discord.utils.get"><code class="xref py py-func docutils literal notranslate"><span class="pre">discord.utils.get()</span></code></a> to simplify retrieval of items based on attributes.</p></li>
|
||
<li><p>All data classes now support <code class="docutils literal notranslate"><span class="pre">!=</span></code>, <code class="docutils literal notranslate"><span class="pre">==</span></code>, <code class="docutils literal notranslate"><span class="pre">hash(obj)</span></code> and <code class="docutils literal notranslate"><span class="pre">str(obj)</span></code>.</p></li>
|
||
<li><p>Added <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.get_bans()</span></code> to get banned members from a server.</p></li>
|
||
<li><p>Added <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.invites_from()</span></code> to get currently active invites in a server.</p></li>
|
||
<li><p>Added <code class="xref py py-attr docutils literal notranslate"><span class="pre">Server.me</span></code> attribute to get the <a class="reference internal" href="api.html#discord.Member" title="discord.Member"><code class="xref py py-class docutils literal notranslate"><span class="pre">Member</span></code></a> version of <a class="reference internal" href="api.html#discord.Client.user" title="discord.Client.user"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Client.user</span></code></a>.</p></li>
|
||
<li><p>Most data classes now support a <code class="docutils literal notranslate"><span class="pre">hash(obj)</span></code> function to allow you to use them in <code class="docutils literal notranslate"><span class="pre">set</span></code> or <code class="docutils literal notranslate"><span class="pre">dict</span></code> classes or subclasses.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Message.clean_content" title="discord.Message.clean_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Message.clean_content()</span></code></a> to get a text version of the content with the user and channel mentioned changed into their names.</p></li>
|
||
<li><p>Added a way to remove the messages of the user that just got banned in <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.ban()</span></code>.</p></li>
|
||
<li><p>Added <a class="reference internal" href="api.html#discord.Client.wait_until_ready" title="discord.Client.wait_until_ready"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.wait_until_ready()</span></code></a> to facilitate easy creation of tasks that require the client cache to be ready.</p></li>
|
||
<li><p>Added <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.wait_until_login()</span></code> to facilitate easy creation of tasks that require the client to be logged in.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Game" title="discord.Game"><code class="xref py py-class docutils literal notranslate"><span class="pre">discord.Game</span></code></a> to represent any game with custom text to send to <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.change_status()</span></code>.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.Message.nonce" title="discord.Message.nonce"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.nonce</span></code></a> attribute.</p></li>
|
||
<li><p>Add <code class="xref py py-meth docutils literal notranslate"><span class="pre">Member.permissions_in()</span></code> as another way of doing <code class="xref py py-meth docutils literal notranslate"><span class="pre">Channel.permissions_for()</span></code>.</p></li>
|
||
<li><p>Add <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.move_member()</span></code> to move a member to another voice channel.</p></li>
|
||
<li><p>You can now create a server via <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.create_server()</span></code>.</p></li>
|
||
<li><p>Added <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.edit_server()</span></code> to edit existing servers.</p></li>
|
||
<li><p>Added <code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.server_voice_state()</span></code> to server mute or server deafen a member.</p></li>
|
||
<li><p>If you are being rate limited, the library will now handle it for you.</p></li>
|
||
<li><p>Add <a class="reference internal" href="api.html#discord.on_member_ban" title="discord.on_member_ban"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_member_ban()</span></code></a> and <a class="reference internal" href="api.html#discord.on_member_unban" title="discord.on_member_unban"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_member_unban()</span></code></a> events that trigger when a member is banned/unbanned.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="performance-improvements">
|
||
<h3>Performance Improvements<a class="headerlink" href="#performance-improvements" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>All data classes now use <code class="docutils literal notranslate"><span class="pre">__slots__</span></code> which greatly reduce the memory usage of things kept in cache.</p></li>
|
||
<li><p>Due to the usage of <code class="docutils literal notranslate"><span class="pre">asyncio</span></code>, the CPU usage of the library has gone down significantly.</p></li>
|
||
<li><p>A lot of the internal cache lists were changed into dictionaries to change the <code class="docutils literal notranslate"><span class="pre">O(n)</span></code> lookup into <code class="docutils literal notranslate"><span class="pre">O(1)</span></code>.</p></li>
|
||
<li><p>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.</p></li>
|
||
<li><p>While minor, change regex from <code class="docutils literal notranslate"><span class="pre">\d+</span></code> to <code class="docutils literal notranslate"><span class="pre">[0-9]+</span></code> to avoid unnecessary unicode character lookups.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id63">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id63" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Fix bug where guilds being updated did not edit the items in cache.</p></li>
|
||
<li><p>Fix bug where <code class="docutils literal notranslate"><span class="pre">member.roles</span></code> were empty upon joining instead of having the <code class="docutils literal notranslate"><span class="pre">@everyone</span></code> role.</p></li>
|
||
<li><p>Fix bug where <code class="xref py py-meth docutils literal notranslate"><span class="pre">Role.is_everyone()</span></code> was not being set properly when the role was being edited.</p></li>
|
||
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.logs_from()</span></code> now handles cases where limit > 100 to sidestep the discord API limitation.</p></li>
|
||
<li><p>Fix bug where a role being deleted would trigger a <code class="docutils literal notranslate"><span class="pre">ValueError</span></code>.</p></li>
|
||
<li><p>Fix bug where <a class="reference internal" href="api.html#discord.Permissions.kick_members" title="discord.Permissions.kick_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Permissions.kick_members()</span></code></a> and <a class="reference internal" href="api.html#discord.Permissions.ban_members" title="discord.Permissions.ban_members"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Permissions.ban_members()</span></code></a> were flipped.</p></li>
|
||
<li><p>Mentions are now triggered normally. This was changed due to the way discord handles it internally.</p></li>
|
||
<li><p>Fix issue when a <a class="reference internal" href="api.html#discord.Message" title="discord.Message"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message</span></code></a> would attempt to upgrade a <code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.server</span></code> when the channel is
|
||
a <a class="reference internal" href="api.html#discord.Object" title="discord.Object"><code class="xref py py-class docutils literal notranslate"><span class="pre">Object</span></code></a>.</p></li>
|
||
<li><p>Unavailable servers were not being added into cache, this has been corrected.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</main>
|
||
<footer class="grid-item">
|
||
© Copyright 2015-present, Rapptz.
|
||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.2.0.
|
||
</footer>
|
||
</div>
|
||
|
||
<div id="settings" class="modal" onclick="if (event.target == this){ settingsModal.close(); }" hidden>
|
||
<div class="modal-content">
|
||
<span class="close" onclick="settingsModal.close();" title="Close">
|
||
<span class="material-icons">close</span>
|
||
</span>
|
||
<h1>Settings</h1>
|
||
|
||
<h2>Font</h2>
|
||
<div class="setting">
|
||
<h3>Use a serif font:
|
||
<label class="toggle"
|
||
title="Use a serif font? Your system font will be used, falling back to serif.">
|
||
<input type="checkbox" name="useSerifFont" onclick="updateSetting(this);">
|
||
<span class="toggle-slider"></span>
|
||
</label>
|
||
</h3>
|
||
</div>
|
||
|
||
<h2>Theme</h2>
|
||
<div class="setting">
|
||
<h3>
|
||
<label class="toggle" title="Set your theme based on your system preferences">
|
||
<input type="radio" name="setTheme" onclick="updateSetting(this);" value="automatic" checked>
|
||
</label>
|
||
Automatic
|
||
</h3>
|
||
<h3>
|
||
<label class="toggle" title="Set your theme to light theme">
|
||
<input type="radio" name="setTheme" onclick="updateSetting(this);" value="light">
|
||
</label>
|
||
Light
|
||
</h3>
|
||
<h3>
|
||
<label class="toggle" title="Set your theme to dark theme">
|
||
<input type="radio" name="setTheme" onclick="updateSetting(this);" value="dark">
|
||
</label>
|
||
Dark
|
||
</h3>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div id="to-top" onclick="scrollToTop()" hidden>
|
||
<span><span class="material-icons">arrow_upward</span> to top</span>
|
||
</div>
|
||
|
||
</body>
|
||
</html> |