704 lines
59 KiB
HTML
704 lines
59 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>discord.ext.tasks – asyncio.Task helpers</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="API Reference" href="../../api.html" />
|
||
<link rel="prev" title="API Reference" href="../commands/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="../../index.html">discord</option>
|
||
<option value="../commands/index.html" >discord.ext.commands</option>
|
||
<option value="#" selected>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="#"><code class="docutils literal notranslate"><span class="pre">discord.ext.tasks</span></code> – asyncio.Task helpers</a><ul>
|
||
<li><a class="reference internal" href="#recipes">Recipes</a></li>
|
||
<li><a class="reference internal" href="#api-reference">API Reference</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</aside>
|
||
<main class="grid-item" role="main">
|
||
|
||
<section id="discord-ext-tasks-asyncio-task-helpers">
|
||
<span id="discord-ext-tasks"></span><h1><code class="docutils literal notranslate"><span class="pre">discord.ext.tasks</span></code> – asyncio.Task helpers<a class="headerlink" href="#discord-ext-tasks-asyncio-task-helpers" title="Permalink to this headline">¶</a></h1>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 1.1.0.</span></p>
|
||
</div>
|
||
<p>One of the most common operations when making a bot is having a loop run in the background at a specified interval. This pattern is very common but has a lot of things you need to look out for:</p>
|
||
<ul class="simple">
|
||
<li><p>How do I 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>?</p></li>
|
||
<li><p>What do I do if the internet goes out?</p></li>
|
||
<li><p>What is the maximum number of seconds I can sleep anyway?</p></li>
|
||
</ul>
|
||
<p>The goal of this discord.py extension is to abstract all these worries away from you.</p>
|
||
<section id="recipes">
|
||
<h2>Recipes<a class="headerlink" href="#recipes" title="Permalink to this headline">¶</a></h2>
|
||
<p>A simple background task in a <a class="reference internal" href="../commands/api.html#discord.ext.commands.Cog" title="discord.ext.commands.Cog"><code class="xref py py-class docutils literal notranslate"><span class="pre">Cog</span></code></a>:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">discord.ext</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">commands</span>
|
||
|
||
<span class="k">class</span> <span class="nc">MyCog</span><span class="p">(</span><span class="n">commands</span><span class="o">.</span><span class="n">Cog</span><span class="p">):</span>
|
||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">printer</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||
|
||
<span class="k">def</span> <span class="nf">cog_unload</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">printer</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
|
||
|
||
<span class="nd">@tasks</span><span class="o">.</span><span class="n">loop</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mf">5.0</span><span class="p">)</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">printer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Adding an exception to handle during reconnect:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">asyncpg</span>
|
||
<span class="kn">from</span> <span class="nn">discord.ext</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">commands</span>
|
||
|
||
<span class="k">class</span> <span class="nc">MyCog</span><span class="p">(</span><span class="n">commands</span><span class="o">.</span><span class="n">Cog</span><span class="p">):</span>
|
||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bot</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">bot</span> <span class="o">=</span> <span class="n">bot</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">batch_update</span><span class="o">.</span><span class="n">add_exception_type</span><span class="p">(</span><span class="n">asyncpg</span><span class="o">.</span><span class="n">PostgresConnectionError</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">batch_update</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||
|
||
<span class="k">def</span> <span class="nf">cog_unload</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">batch_update</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
|
||
|
||
<span class="nd">@tasks</span><span class="o">.</span><span class="n">loop</span><span class="p">(</span><span class="n">minutes</span><span class="o">=</span><span class="mf">5.0</span><span class="p">)</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">batch_update</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="k">async</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">bot</span><span class="o">.</span><span class="n">pool</span><span class="o">.</span><span class="n">acquire</span><span class="p">()</span> <span class="k">as</span> <span class="n">con</span><span class="p">:</span>
|
||
<span class="c1"># batch update here...</span>
|
||
<span class="k">pass</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Looping a certain amount of times before exiting:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">discord.ext</span> <span class="kn">import</span> <span class="n">tasks</span>
|
||
|
||
<span class="nd">@tasks</span><span class="o">.</span><span class="n">loop</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mf">5.0</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">slow_count</span><span class="p">():</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="n">slow_count</span><span class="o">.</span><span class="n">current_loop</span><span class="p">)</span>
|
||
|
||
<span class="nd">@slow_count</span><span class="o">.</span><span class="n">after_loop</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">after_slow_count</span><span class="p">():</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s1">'done!'</span><span class="p">)</span>
|
||
|
||
<span class="n">slow_count</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Waiting until the bot is ready before the loop starts:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">discord.ext</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">commands</span>
|
||
|
||
<span class="k">class</span> <span class="nc">MyCog</span><span class="p">(</span><span class="n">commands</span><span class="o">.</span><span class="n">Cog</span><span class="p">):</span>
|
||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bot</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">bot</span> <span class="o">=</span> <span class="n">bot</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">printer</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||
|
||
<span class="k">def</span> <span class="nf">cog_unload</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">printer</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
|
||
|
||
<span class="nd">@tasks</span><span class="o">.</span><span class="n">loop</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mf">5.0</span><span class="p">)</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">printer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
|
||
<span class="nd">@printer</span><span class="o">.</span><span class="n">before_loop</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">before_printer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s1">'waiting...'</span><span class="p">)</span>
|
||
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">bot</span><span class="o">.</span><span class="n">wait_until_ready</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Doing something during cancellation:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">discord.ext</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">commands</span>
|
||
<span class="kn">import</span> <span class="nn">asyncio</span>
|
||
|
||
<span class="k">class</span> <span class="nc">MyCog</span><span class="p">(</span><span class="n">commands</span><span class="o">.</span><span class="n">Cog</span><span class="p">):</span>
|
||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bot</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">bot</span><span class="o">=</span> <span class="n">bot</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">_batch</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">lock</span> <span class="o">=</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">Lock</span><span class="p">()</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">bulker</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">do_bulk</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="c1"># bulk insert data here</span>
|
||
<span class="o">...</span>
|
||
|
||
<span class="nd">@tasks</span><span class="o">.</span><span class="n">loop</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mf">10.0</span><span class="p">)</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">bulker</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="k">async</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">lock</span><span class="p">:</span>
|
||
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_bulk</span><span class="p">()</span>
|
||
|
||
<span class="nd">@bulker</span><span class="o">.</span><span class="n">after_loop</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">on_bulker_cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">bulker</span><span class="o">.</span><span class="n">is_being_cancelled</span><span class="p">()</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_batch</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
|
||
<span class="c1"># if we're cancelled and we have some data left...</span>
|
||
<span class="c1"># let's insert it to our database</span>
|
||
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_bulk</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="api-reference">
|
||
<span id="ext-tasks-api"></span><h2>API Reference<a class="headerlink" href="#api-reference" title="Permalink to this headline">¶</a></h2>
|
||
<div class="py-attribute-table" data-move-to-id="discord.ext.tasks.Loop"><div class="py-attribute-table-column">
|
||
<span>
|
||
Attributes</span><ul>
|
||
<li class="py-attribute-table-entry">
|
||
<a class="reference internal" href="#discord.ext.tasks.Loop.current_loop">current_loop</a></li><li class="py-attribute-table-entry">
|
||
<a class="reference internal" href="#discord.ext.tasks.Loop.hours">hours</a></li><li class="py-attribute-table-entry">
|
||
<a class="reference internal" href="#discord.ext.tasks.Loop.minutes">minutes</a></li><li class="py-attribute-table-entry">
|
||
<a class="reference internal" href="#discord.ext.tasks.Loop.next_iteration">next_iteration</a></li><li class="py-attribute-table-entry">
|
||
<a class="reference internal" href="#discord.ext.tasks.Loop.seconds">seconds</a></li><li class="py-attribute-table-entry">
|
||
<a class="reference internal" href="#discord.ext.tasks.Loop.time">time</a></li></ul>
|
||
</div><div class="py-attribute-table-column">
|
||
<span>
|
||
Methods</span><ul>
|
||
<li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="coroutine">
|
||
async</span><a class="reference internal" href="#discord.ext.tasks.Loop.__call__">__call__</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.add_exception_type">add_exception_type</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="decorator">
|
||
@</span><a class="reference internal" href="#discord.ext.tasks.Loop.after_loop">after_loop</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="decorator">
|
||
@</span><a class="reference internal" href="#discord.ext.tasks.Loop.before_loop">before_loop</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.cancel">cancel</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.change_interval">change_interval</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.clear_exception_types">clear_exception_types</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="decorator">
|
||
@</span><a class="reference internal" href="#discord.ext.tasks.Loop.error">error</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.failed">failed</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.get_task">get_task</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.is_being_cancelled">is_being_cancelled</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.is_running">is_running</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.remove_exception_type">remove_exception_type</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.restart">restart</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.start">start</a></li><li class="py-attribute-table-entry">
|
||
<span class="py-attribute-table-badge" title="method">
|
||
def</span><a class="reference internal" href="#discord.ext.tasks.Loop.stop">stop</a></li></ul>
|
||
</div></div><dl class="py class">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop">
|
||
<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">discord.ext.tasks.</span></span><span class="sig-name descname"><span class="pre">Loop</span></span><a class="headerlink" href="#discord.ext.tasks.Loop" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>A background task helper that abstracts the loop and reconnection logic for you.</p>
|
||
<p>The main interface to create this is through <a class="reference internal" href="#discord.ext.tasks.loop" title="discord.ext.tasks.loop"><code class="xref py py-func docutils literal notranslate"><span class="pre">loop()</span></code></a>.</p>
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.after_loop">
|
||
<span class="sig-prename descclassname"><span class="pre">@</span></span><span class="sig-name descname"><span class="pre">after_loop</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.after_loop" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>A decorator that register a coroutine to be called after the loop finished running.</p>
|
||
<p>The coroutine must take no arguments (except <code class="docutils literal notranslate"><span class="pre">self</span></code> in a class context).</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>This coroutine is called even during cancellation. If it is desirable
|
||
to tell apart whether something was cancelled or not, check to see
|
||
whether <a class="reference internal" href="#discord.ext.tasks.Loop.is_being_cancelled" title="discord.ext.tasks.Loop.is_being_cancelled"><code class="xref py py-meth docutils literal notranslate"><span class="pre">is_being_cancelled()</span></code></a> is <code class="docutils literal notranslate"><span class="pre">True</span></code> or not.</p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><p><strong>coro</strong> (<a class="reference external" href="https://docs.python.org/3/library/asyncio-task.html#coroutine" title="(in Python v3.9)"><span class="xref std std-ref">coroutine</span></a>) – The coroutine to register after the loop finishes.</p>
|
||
</dd>
|
||
<dt class="field-even">Raises</dt>
|
||
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#TypeError" title="(in Python v3.9)"><strong>TypeError</strong></a> – The function was not a coroutine.</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.before_loop">
|
||
<span class="sig-prename descclassname"><span class="pre">@</span></span><span class="sig-name descname"><span class="pre">before_loop</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.before_loop" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>A decorator that registers a coroutine to be called before the loop starts running.</p>
|
||
<p>This is useful if you want to wait for some bot state before the loop starts,
|
||
such as <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">discord.Client.wait_until_ready()</span></code></a>.</p>
|
||
<p>The coroutine must take no arguments (except <code class="docutils literal notranslate"><span class="pre">self</span></code> in a class context).</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><p><strong>coro</strong> (<a class="reference external" href="https://docs.python.org/3/library/asyncio-task.html#coroutine" title="(in Python v3.9)"><span class="xref std std-ref">coroutine</span></a>) – The coroutine to register before the loop runs.</p>
|
||
</dd>
|
||
<dt class="field-even">Raises</dt>
|
||
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#TypeError" title="(in Python v3.9)"><strong>TypeError</strong></a> – The function was not a coroutine.</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.error">
|
||
<span class="sig-prename descclassname"><span class="pre">@</span></span><span class="sig-name descname"><span class="pre">error</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.error" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>A decorator that registers a coroutine to be called if the task encounters an unhandled exception.</p>
|
||
<p>The coroutine must take only one argument the exception raised (except <code class="docutils literal notranslate"><span class="pre">self</span></code> in a class context).</p>
|
||
<p>By default this prints to <a class="reference external" href="https://docs.python.org/3/library/sys.html#sys.stderr" title="(in Python v3.9)"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.stderr</span></code></a> however it could be
|
||
overridden to have a different implementation.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 1.4.</span></p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><p><strong>coro</strong> (<a class="reference external" href="https://docs.python.org/3/library/asyncio-task.html#coroutine" title="(in Python v3.9)"><span class="xref std std-ref">coroutine</span></a>) – The coroutine to register in the event of an unhandled exception.</p>
|
||
</dd>
|
||
<dt class="field-even">Raises</dt>
|
||
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#TypeError" title="(in Python v3.9)"><strong>TypeError</strong></a> – The function was not a coroutine.</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py property">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.seconds">
|
||
<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">seconds</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.seconds" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Read-only value for the number of seconds
|
||
between each iteration. <code class="docutils literal notranslate"><span class="pre">None</span></code> if an explicit <code class="docutils literal notranslate"><span class="pre">time</span></code> value was passed instead.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 2.0.</span></p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Type</dt>
|
||
<dd class="field-odd"><p>Optional[<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>]</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py property">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.minutes">
|
||
<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">minutes</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.minutes" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Read-only value for the number of minutes
|
||
between each iteration. <code class="docutils literal notranslate"><span class="pre">None</span></code> if an explicit <code class="docutils literal notranslate"><span class="pre">time</span></code> value was passed instead.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 2.0.</span></p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Type</dt>
|
||
<dd class="field-odd"><p>Optional[<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>]</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py property">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.hours">
|
||
<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">hours</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.hours" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Read-only value for the number of hours
|
||
between each iteration. <code class="docutils literal notranslate"><span class="pre">None</span></code> if an explicit <code class="docutils literal notranslate"><span class="pre">time</span></code> value was passed instead.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 2.0.</span></p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Type</dt>
|
||
<dd class="field-odd"><p>Optional[<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>]</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py property">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.time">
|
||
<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">time</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.time" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Read-only list for the exact times this loop runs at.
|
||
<code class="docutils literal notranslate"><span class="pre">None</span></code> if relative times were passed instead.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 2.0.</span></p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Type</dt>
|
||
<dd class="field-odd"><p>Optional[List[<a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.time" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.time</span></code></a>]]</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py property">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.current_loop">
|
||
<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">current_loop</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.current_loop" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>The current iteration of the loop.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Type</dt>
|
||
<dd class="field-odd"><p><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></p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py property">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.next_iteration">
|
||
<em class="property"><span class="pre">property</span> </em><span class="sig-name descname"><span class="pre">next_iteration</span></span><a class="headerlink" href="#discord.ext.tasks.Loop.next_iteration" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>When the next iteration of the loop will occur.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 1.3.</span></p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Type</dt>
|
||
<dd class="field-odd"><p>Optional[<a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.datetime" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.datetime</span></code></a>]</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.__call__">
|
||
<em class="property"><span class="pre">await</span> </em><span class="sig-name descname"><span class="pre">__call__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.__call__" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>This function is a <a class="reference external" href="https://docs.python.org/3/library/asyncio-task.html#coroutine"><em>coroutine</em></a>.</p>
|
||
<p>Calls the internal callback that the task holds.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 1.6.</span></p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>*args</strong> – The arguments to use.</p></li>
|
||
<li><p><strong>**kwargs</strong> – The keyword arguments to use.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.start">
|
||
<span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.start" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Starts the internal task in the event loop.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>*args</strong> – The arguments to use.</p></li>
|
||
<li><p><strong>**kwargs</strong> – The keyword arguments to use.</p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Raises</dt>
|
||
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#RuntimeError" title="(in Python v3.9)"><strong>RuntimeError</strong></a> – A task has already been launched and is running.</p>
|
||
</dd>
|
||
<dt class="field-odd">Returns</dt>
|
||
<dd class="field-odd"><p>The task that has been created.</p>
|
||
</dd>
|
||
<dt class="field-even">Return type</dt>
|
||
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/asyncio-task.html#asyncio.Task" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">asyncio.Task</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.stop">
|
||
<span class="sig-name descname"><span class="pre">stop</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.stop" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Gracefully stops the task from running.</p>
|
||
<p>Unlike <a class="reference internal" href="#discord.ext.tasks.Loop.cancel" title="discord.ext.tasks.Loop.cancel"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cancel()</span></code></a>, this allows the task to finish its
|
||
current iteration before gracefully exiting.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>If the internal function raises an error that can be
|
||
handled before finishing then it will retry until
|
||
it succeeds.</p>
|
||
<p>If this is undesirable, either remove the error handling
|
||
before stopping via <a class="reference internal" href="#discord.ext.tasks.Loop.clear_exception_types" title="discord.ext.tasks.Loop.clear_exception_types"><code class="xref py py-meth docutils literal notranslate"><span class="pre">clear_exception_types()</span></code></a> or
|
||
use <a class="reference internal" href="#discord.ext.tasks.Loop.cancel" title="discord.ext.tasks.Loop.cancel"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cancel()</span></code></a> instead.</p>
|
||
</div>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 1.2.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.cancel">
|
||
<span class="sig-name descname"><span class="pre">cancel</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.cancel" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Cancels the internal task, if it is running.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.restart">
|
||
<span class="sig-name descname"><span class="pre">restart</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.restart" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>A convenience method to restart the internal task.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Due to the way this function works, the task is not
|
||
returned like <a class="reference internal" href="#discord.ext.tasks.Loop.start" title="discord.ext.tasks.Loop.start"><code class="xref py py-meth docutils literal notranslate"><span class="pre">start()</span></code></a>.</p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>*args</strong> – The arguments to use.</p></li>
|
||
<li><p><strong>**kwargs</strong> – The keyword arguments to use.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.add_exception_type">
|
||
<span class="sig-name descname"><span class="pre">add_exception_type</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">exceptions</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.add_exception_type" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Adds exception types to be handled during the reconnect logic.</p>
|
||
<p>By default the exception types handled are those handled by
|
||
<a class="reference internal" href="../../api.html#discord.Client.connect" title="discord.Client.connect"><code class="xref py py-meth docutils literal notranslate"><span class="pre">discord.Client.connect()</span></code></a>, which includes a lot of internet disconnection
|
||
errors.</p>
|
||
<p>This function is useful if you’re interacting with a 3rd party library that
|
||
raises its own set of exceptions.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><p><strong>*exceptions</strong> (Type[<a class="reference external" href="https://docs.python.org/3/library/exceptions.html#BaseException" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">BaseException</span></code></a>]) – An argument list of exception classes to handle.</p>
|
||
</dd>
|
||
<dt class="field-even">Raises</dt>
|
||
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#TypeError" title="(in Python v3.9)"><strong>TypeError</strong></a> – An exception passed is either not a class or not inherited from <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#BaseException" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">BaseException</span></code></a>.</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.clear_exception_types">
|
||
<span class="sig-name descname"><span class="pre">clear_exception_types</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.clear_exception_types" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Removes all exception types that are handled.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>This operation obviously cannot be undone!</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.remove_exception_type">
|
||
<span class="sig-name descname"><span class="pre">remove_exception_type</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">exceptions</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.remove_exception_type" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Removes exception types from being handled during the reconnect logic.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><p><strong>*exceptions</strong> (Type[<a class="reference external" href="https://docs.python.org/3/library/exceptions.html#BaseException" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">BaseException</span></code></a>]) – An argument list of exception classes to handle.</p>
|
||
</dd>
|
||
<dt class="field-even">Returns</dt>
|
||
<dd class="field-even"><p>Whether all exceptions were successfully removed.</p>
|
||
</dd>
|
||
<dt class="field-odd">Return type</dt>
|
||
<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">bool</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.get_task">
|
||
<span class="sig-name descname"><span class="pre">get_task</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.get_task" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Optional[<a class="reference external" href="https://docs.python.org/3/library/asyncio-task.html#asyncio.Task" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">asyncio.Task</span></code></a>]: Fetches the internal task or <code class="docutils literal notranslate"><span class="pre">None</span></code> if there isn’t one running.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.is_being_cancelled">
|
||
<span class="sig-name descname"><span class="pre">is_being_cancelled</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.is_being_cancelled" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Whether the task is being cancelled.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.failed">
|
||
<span class="sig-name descname"><span class="pre">failed</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.failed" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">bool</span></code></a>: Whether the internal task has failed.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 1.2.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.is_running">
|
||
<span class="sig-name descname"><span class="pre">is_running</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.is_running" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">bool</span></code></a>: Check if the task is currently running.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 1.4.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.Loop.change_interval">
|
||
<span class="sig-name descname"><span class="pre">change_interval</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seconds</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">minutes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hours</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">time</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">...</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.Loop.change_interval" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Changes the interval for the sleep time.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 1.2.</span></p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>seconds</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>) – The number of seconds between every iteration.</p></li>
|
||
<li><p><strong>minutes</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>) – The number of minutes between every iteration.</p></li>
|
||
<li><p><strong>hours</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>) – The number of hours between every iteration.</p></li>
|
||
<li><p><strong>time</strong> (Union[<a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.time" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.time</span></code></a>, Sequence[<a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.time" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.time</span></code></a>]]) – <p>The exact times to run this loop at. Either a non-empty list or a single
|
||
value of <a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.time" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.time</span></code></a> should be passed.
|
||
This cannot be used in conjunction with the relative time parameters.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 2.0.</span></p>
|
||
</div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Duplicate times will be ignored, and only run once.</p>
|
||
</div>
|
||
</p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Raises</dt>
|
||
<dd class="field-even"><ul class="simple">
|
||
<li><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#ValueError" title="(in Python v3.9)"><strong>ValueError</strong></a> – An invalid value was given.</p></li>
|
||
<li><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#TypeError" title="(in Python v3.9)"><strong>TypeError</strong></a> – An invalid value for the <code class="docutils literal notranslate"><span class="pre">time</span></code> parameter was passed, or the
|
||
<code class="docutils literal notranslate"><span class="pre">time</span></code> parameter was passed in conjunction with relative time parameters.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
<dl class="py function">
|
||
<dt class="sig sig-object py" id="discord.ext.tasks.loop">
|
||
<span class="sig-prename descclassname"><span class="pre">discord.ext.tasks.</span></span><span class="sig-name descname"><span class="pre">loop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seconds</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">...</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">minutes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">...</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hours</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">...</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">time</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">...</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reconnect</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">loop</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">...</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#discord.ext.tasks.loop" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>A decorator that schedules a task in the background for you with
|
||
optional reconnect logic. The decorator returns a <a class="reference internal" href="#discord.ext.tasks.Loop" title="discord.ext.tasks.Loop"><code class="xref py py-class docutils literal notranslate"><span class="pre">Loop</span></code></a>.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters</dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>seconds</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>) – The number of seconds between every iteration.</p></li>
|
||
<li><p><strong>minutes</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>) – The number of minutes between every iteration.</p></li>
|
||
<li><p><strong>hours</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#float" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>) – The number of hours between every iteration.</p></li>
|
||
<li><p><strong>time</strong> (Union[<a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.time" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.time</span></code></a>, Sequence[<a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.time" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.time</span></code></a>]]) – <p>The exact times to run this loop at. Either a non-empty list or a single
|
||
value of <a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.time" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.time</span></code></a> should be passed. Timezones are supported.
|
||
If no timezone is given for the times, it is assumed to represent UTC time.</p>
|
||
<p>This cannot be used in conjunction with the relative time parameters.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Duplicate times will be ignored, and only run once.</p>
|
||
</div>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 2.0.</span></p>
|
||
</div>
|
||
</p></li>
|
||
<li><p><strong>count</strong> (Optional[<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>]) – The number of loops to do, <code class="docutils literal notranslate"><span class="pre">None</span></code> if it should be an
|
||
infinite loop.</p></li>
|
||
<li><p><strong>reconnect</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">bool</span></code></a>) – Whether to handle errors and restart the task
|
||
using an exponential back-off algorithm similar to the
|
||
one used in <a class="reference internal" href="../../api.html#discord.Client.connect" title="discord.Client.connect"><code class="xref py py-meth docutils literal notranslate"><span class="pre">discord.Client.connect()</span></code></a>.</p></li>
|
||
<li><p><strong>loop</strong> (<a class="reference external" href="https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractEventLoop" title="(in Python v3.9)"><code class="xref py py-class docutils literal notranslate"><span class="pre">asyncio.AbstractEventLoop</span></code></a>) – The loop to use to register the task, if not given
|
||
defaults to <a class="reference external" href="https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.get_event_loop" title="(in Python v3.9)"><code class="xref py py-func docutils literal notranslate"><span class="pre">asyncio.get_event_loop()</span></code></a>.</p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Raises</dt>
|
||
<dd class="field-even"><ul class="simple">
|
||
<li><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#ValueError" title="(in Python v3.9)"><strong>ValueError</strong></a> – An invalid value was given.</p></li>
|
||
<li><p><a class="reference external" href="https://docs.python.org/3/library/exceptions.html#TypeError" title="(in Python v3.9)"><strong>TypeError</strong></a> – The function was not a coroutine, an invalid value for the <code class="docutils literal notranslate"><span class="pre">time</span></code> parameter was passed,
|
||
or <code class="docutils literal notranslate"><span class="pre">time</span></code> parameter was passed in conjunction with relative time parameters.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</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> |