summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.doctrees/environment.picklebin2335235 -> 2346392 bytes
-rw-r--r--.doctrees/output/botcore.async_stats.doctreebin0 -> 19339 bytes
-rw-r--r--.doctrees/output/botcore.doctreebin4075 -> 57463 bytes
-rw-r--r--.doctrees/output/botcore.site_api.doctreebin66675 -> 66675 bytes
-rw-r--r--.doctrees/output/botcore.utils.caching.doctreebin16693 -> 16693 bytes
-rw-r--r--.doctrees/output/botcore.utils.channel.doctreebin18252 -> 18252 bytes
-rw-r--r--.doctrees/output/botcore.utils.doctreebin10416 -> 10374 bytes
-rw-r--r--.doctrees/output/botcore.utils.extensions.doctreebin12371 -> 0 bytes
-rw-r--r--.doctrees/output/botcore.utils.logging.doctreebin18516 -> 18516 bytes
-rw-r--r--.doctrees/output/botcore.utils.members.doctreebin17177 -> 17177 bytes
-rw-r--r--.doctrees/output/botcore.utils.regex.doctreebin7664 -> 7664 bytes
-rw-r--r--.doctrees/output/botcore.utils.scheduling.doctreebin56366 -> 56366 bytes
-rw-r--r--_sources/output/botcore.async_stats.rst.txt7
-rw-r--r--_sources/output/botcore.rst.txt1
-rw-r--r--_sources/output/botcore.utils.extensions.rst.txt7
-rw-r--r--_sources/output/botcore.utils.rst.txt1
-rw-r--r--_static/statsd_additional_objects.invbin0 -> 308 bytes
-rw-r--r--genindex.html102
-rw-r--r--index.html3
-rw-r--r--objects.invbin931 -> 1088 bytes
-rw-r--r--output/botcore.async_stats.html (renamed from output/botcore.utils.extensions.html)68
-rw-r--r--output/botcore.exts.html2
-rw-r--r--output/botcore.html166
-rw-r--r--output/botcore.site_api.html34
-rw-r--r--output/botcore.utils.caching.html10
-rw-r--r--output/botcore.utils.channel.html12
-rw-r--r--output/botcore.utils.html5
-rw-r--r--output/botcore.utils.logging.html14
-rw-r--r--output/botcore.utils.members.html6
-rw-r--r--output/botcore.utils.regex.html8
-rw-r--r--output/botcore.utils.scheduling.html26
-rw-r--r--py-modindex.html14
-rw-r--r--search.html2
-rw-r--r--searchindex.js2
34 files changed, 351 insertions, 139 deletions
diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle
index 1c5e09f7..3fe56e9f 100644
--- a/.doctrees/environment.pickle
+++ b/.doctrees/environment.pickle
Binary files differ
diff --git a/.doctrees/output/botcore.async_stats.doctree b/.doctrees/output/botcore.async_stats.doctree
new file mode 100644
index 00000000..1364d5d5
--- /dev/null
+++ b/.doctrees/output/botcore.async_stats.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.doctree b/.doctrees/output/botcore.doctree
index 47712525..a8020c42 100644
--- a/.doctrees/output/botcore.doctree
+++ b/.doctrees/output/botcore.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.site_api.doctree b/.doctrees/output/botcore.site_api.doctree
index ebddffcb..6794a846 100644
--- a/.doctrees/output/botcore.site_api.doctree
+++ b/.doctrees/output/botcore.site_api.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.utils.caching.doctree b/.doctrees/output/botcore.utils.caching.doctree
index 0f918c18..15f2f866 100644
--- a/.doctrees/output/botcore.utils.caching.doctree
+++ b/.doctrees/output/botcore.utils.caching.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.utils.channel.doctree b/.doctrees/output/botcore.utils.channel.doctree
index 052b9710..4dfde4ab 100644
--- a/.doctrees/output/botcore.utils.channel.doctree
+++ b/.doctrees/output/botcore.utils.channel.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.utils.doctree b/.doctrees/output/botcore.utils.doctree
index a51c841e..e20b5231 100644
--- a/.doctrees/output/botcore.utils.doctree
+++ b/.doctrees/output/botcore.utils.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.utils.extensions.doctree b/.doctrees/output/botcore.utils.extensions.doctree
deleted file mode 100644
index aeeb664b..00000000
--- a/.doctrees/output/botcore.utils.extensions.doctree
+++ /dev/null
Binary files differ
diff --git a/.doctrees/output/botcore.utils.logging.doctree b/.doctrees/output/botcore.utils.logging.doctree
index 02bbf350..fa2cc095 100644
--- a/.doctrees/output/botcore.utils.logging.doctree
+++ b/.doctrees/output/botcore.utils.logging.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.utils.members.doctree b/.doctrees/output/botcore.utils.members.doctree
index d636ea53..5ef3cab5 100644
--- a/.doctrees/output/botcore.utils.members.doctree
+++ b/.doctrees/output/botcore.utils.members.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.utils.regex.doctree b/.doctrees/output/botcore.utils.regex.doctree
index 6608e6ef..351cea20 100644
--- a/.doctrees/output/botcore.utils.regex.doctree
+++ b/.doctrees/output/botcore.utils.regex.doctree
Binary files differ
diff --git a/.doctrees/output/botcore.utils.scheduling.doctree b/.doctrees/output/botcore.utils.scheduling.doctree
index 726bbb88..6110e1b0 100644
--- a/.doctrees/output/botcore.utils.scheduling.doctree
+++ b/.doctrees/output/botcore.utils.scheduling.doctree
Binary files differ
diff --git a/_sources/output/botcore.async_stats.rst.txt b/_sources/output/botcore.async_stats.rst.txt
new file mode 100644
index 00000000..7fdbbbe2
--- /dev/null
+++ b/_sources/output/botcore.async_stats.rst.txt
@@ -0,0 +1,7 @@
+async\_stats
+===========================
+
+.. automodule:: botcore.async_stats
+ :members:
+ :special-members:
+ :show-inheritance:
diff --git a/_sources/output/botcore.rst.txt b/_sources/output/botcore.rst.txt
index f537106b..0a719da2 100644
--- a/_sources/output/botcore.rst.txt
+++ b/_sources/output/botcore.rst.txt
@@ -21,4 +21,5 @@ Submodules
.. toctree::
:maxdepth: 4
+ botcore.async_stats
botcore.site_api
diff --git a/_sources/output/botcore.utils.extensions.rst.txt b/_sources/output/botcore.utils.extensions.rst.txt
deleted file mode 100644
index 65c40bbf..00000000
--- a/_sources/output/botcore.utils.extensions.rst.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-extensions
-===============================
-
-.. automodule:: botcore.utils.extensions
- :members:
- :special-members:
- :show-inheritance:
diff --git a/_sources/output/botcore.utils.rst.txt b/_sources/output/botcore.utils.rst.txt
index 6c59b47f..286b55f1 100644
--- a/_sources/output/botcore.utils.rst.txt
+++ b/_sources/output/botcore.utils.rst.txt
@@ -14,7 +14,6 @@ Submodules
botcore.utils.caching
botcore.utils.channel
- botcore.utils.extensions
botcore.utils.logging
botcore.utils.members
botcore.utils.regex
diff --git a/_static/statsd_additional_objects.inv b/_static/statsd_additional_objects.inv
new file mode 100644
index 00000000..f84ab9f1
--- /dev/null
+++ b/_static/statsd_additional_objects.inv
Binary files differ
diff --git a/genindex.html b/genindex.html
index 6bf50724..8d823a06 100644
--- a/genindex.html
+++ b/genindex.html
@@ -161,13 +161,13 @@
<li class="toctree-l2 has-children"><a class="reference internal" href="output/botcore.utils.html">Utils</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="output/botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="output/botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -210,7 +210,7 @@
<section class="genindex-section">
<h1 id="index">Index</h1>
- <div class="genindex-jumpbox"><a href="#_"><strong>_</strong></a> | <a href="#A"><strong>A</strong></a> | <a href="#B"><strong>B</strong></a> | <a href="#C"><strong>C</strong></a> | <a href="#D"><strong>D</strong></a> | <a href="#F"><strong>F</strong></a> | <a href="#G"><strong>G</strong></a> | <a href="#H"><strong>H</strong></a> | <a href="#I"><strong>I</strong></a> | <a href="#M"><strong>M</strong></a> | <a href="#P"><strong>P</strong></a> | <a href="#R"><strong>R</strong></a> | <a href="#S"><strong>S</strong></a> | <a href="#T"><strong>T</strong></a> | <a href="#U"><strong>U</strong></a> | <a href="#W"><strong>W</strong></a></div>
+ <div class="genindex-jumpbox"><a href="#_"><strong>_</strong></a> | <a href="#A"><strong>A</strong></a> | <a href="#B"><strong>B</strong></a> | <a href="#C"><strong>C</strong></a> | <a href="#D"><strong>D</strong></a> | <a href="#F"><strong>F</strong></a> | <a href="#G"><strong>G</strong></a> | <a href="#H"><strong>H</strong></a> | <a href="#I"><strong>I</strong></a> | <a href="#L"><strong>L</strong></a> | <a href="#M"><strong>M</strong></a> | <a href="#O"><strong>O</strong></a> | <a href="#P"><strong>P</strong></a> | <a href="#R"><strong>R</strong></a> | <a href="#S"><strong>S</strong></a> | <a href="#T"><strong>T</strong></a> | <a href="#W"><strong>W</strong></a></div>
</section>
<section id="_" class="genindex-section">
<h2>_</h2>
@@ -225,10 +225,16 @@
<ul>
<li><a href="output/botcore.utils.caching.html#botcore.utils.caching.AsyncCache.__init__">(AsyncCache method)</a>
</li>
+ <li><a href="output/botcore.async_stats.html#botcore.async_stats.AsyncStatsClient.__init__">(AsyncStatsClient method)</a>
+</li>
+ <li><a href="output/botcore.html#botcore.BotBase.__init__">(BotBase method)</a>
+</li>
<li><a href="output/botcore.site_api.html#botcore.site_api.ResponseCodeError.__init__">(ResponseCodeError method)</a>
</li>
<li><a href="output/botcore.utils.scheduling.html#botcore.utils.scheduling.Scheduler.__init__">(Scheduler method)</a>
</li>
+ <li><a href="output/botcore.html#botcore.StartupError.__init__">(StartupError method)</a>
+</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
@@ -242,6 +248,10 @@
<h2>A</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="output/botcore.html#botcore.BotBase.add_cog">add_cog() (BotBase method)</a>
+</li>
+ <li><a href="output/botcore.html#botcore.BotBase.add_command">add_command() (BotBase method)</a>
+</li>
<li><a href="output/botcore.site_api.html#botcore.site_api.APIClient">APIClient (class in botcore.site_api)</a>
</li>
</ul></td>
@@ -250,6 +260,8 @@
</li>
<li><a href="output/botcore.utils.caching.html#botcore.utils.caching.AsyncCache">AsyncCache (class in botcore.utils.caching)</a>
</li>
+ <li><a href="output/botcore.async_stats.html#botcore.async_stats.AsyncStatsClient">AsyncStatsClient (class in botcore.async_stats)</a>
+</li>
</ul></td>
</tr></table>
</section>
@@ -258,6 +270,8 @@
<h2>B</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="output/botcore.html#botcore.BotBase">BotBase (class in botcore)</a>
+</li>
<li>
botcore
@@ -266,6 +280,13 @@
</li>
</ul></li>
<li>
+ botcore.async_stats
+
+ <ul>
+ <li><a href="output/botcore.async_stats.html#module-botcore.async_stats">module</a>
+</li>
+ </ul></li>
+ <li>
botcore.exts
<ul>
@@ -286,6 +307,8 @@
<li><a href="output/botcore.utils.html#module-botcore.utils">module</a>
</li>
</ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li>
botcore.utils.caching
@@ -300,15 +323,6 @@
<li><a href="output/botcore.utils.channel.html#module-botcore.utils.channel">module</a>
</li>
</ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
- <li>
- botcore.utils.extensions
-
- <ul>
- <li><a href="output/botcore.utils.extensions.html#module-botcore.utils.extensions">module</a>
-</li>
- </ul></li>
<li>
botcore.utils.logging
@@ -350,10 +364,20 @@
<li><a href="output/botcore.utils.scheduling.html#botcore.utils.scheduling.Scheduler.cancel_all">cancel_all() (Scheduler method)</a>
</li>
<li><a href="output/botcore.utils.caching.html#botcore.utils.caching.AsyncCache.clear">clear() (AsyncCache method)</a>
+
+ <ul>
+ <li><a href="output/botcore.html#botcore.BotBase.clear">(BotBase method)</a>
</li>
+ </ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="output/botcore.site_api.html#botcore.site_api.APIClient.close">close() (APIClient method)</a>
+
+ <ul>
+ <li><a href="output/botcore.html#botcore.BotBase.close">(BotBase method)</a>
+</li>
+ </ul></li>
+ <li><a href="output/botcore.async_stats.html#botcore.async_stats.AsyncStatsClient.create_socket">create_socket() (AsyncStatsClient method)</a>
</li>
<li><a href="output/botcore.utils.scheduling.html#botcore.utils.scheduling.create_task">create_task() (in module botcore.utils.scheduling)</a>
</li>
@@ -425,6 +449,20 @@
</tr></table>
</section>
+<section id="L" class="genindex-section">
+ <h2>L</h2>
+ <table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="output/botcore.html#botcore.BotBase.load_extensions">load_extensions() (BotBase method)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="output/botcore.html#botcore.BotBase.log_to_dev_log">log_to_dev_log() (BotBase method)</a>
+</li>
+ </ul></td>
+ </tr></table>
+</section>
+
<section id="M" class="genindex-section">
<h2>M</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
@@ -437,6 +475,8 @@
<ul>
<li><a href="output/botcore.html#module-botcore">botcore</a>
</li>
+ <li><a href="output/botcore.async_stats.html#module-botcore.async_stats">botcore.async_stats</a>
+</li>
<li><a href="output/botcore.exts.html#module-botcore.exts">botcore.exts</a>
</li>
<li><a href="output/botcore.site_api.html#module-botcore.site_api">botcore.site_api</a>
@@ -447,8 +487,6 @@
</li>
<li><a href="output/botcore.utils.channel.html#module-botcore.utils.channel">botcore.utils.channel</a>
</li>
- <li><a href="output/botcore.utils.extensions.html#module-botcore.utils.extensions">botcore.utils.extensions</a>
-</li>
<li><a href="output/botcore.utils.logging.html#module-botcore.utils.logging">botcore.utils.logging</a>
</li>
<li><a href="output/botcore.utils.members.html#module-botcore.utils.members">botcore.utils.members</a>
@@ -462,12 +500,28 @@
</tr></table>
</section>
+<section id="O" class="genindex-section">
+ <h2>O</h2>
+ <table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="output/botcore.html#botcore.BotBase.on_guild_available">on_guild_available() (BotBase method)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="output/botcore.html#botcore.BotBase.on_guild_unavailable">on_guild_unavailable() (BotBase method)</a>
+</li>
+ </ul></td>
+ </tr></table>
+</section>
+
<section id="P" class="genindex-section">
<h2>P</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="output/botcore.site_api.html#botcore.site_api.APIClient.patch">patch() (APIClient method)</a>
</li>
+ <li><a href="output/botcore.html#botcore.BotBase.ping_services">ping_services() (BotBase method)</a>
+</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="output/botcore.site_api.html#botcore.site_api.APIClient.post">post() (APIClient method)</a>
@@ -484,6 +538,8 @@
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="output/botcore.utils.regex.html#botcore.utils.regex.RAW_CODE_REGEX">RAW_CODE_REGEX (in module botcore.utils.regex)</a>
</li>
+ <li><a href="output/botcore.html#botcore.BotBase.remove_command">remove_command() (BotBase method)</a>
+</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="output/botcore.site_api.html#botcore.site_api.APIClient.request">request() (APIClient method)</a>
@@ -502,12 +558,16 @@
</li>
<li><a href="output/botcore.utils.scheduling.html#botcore.utils.scheduling.Scheduler.schedule_at">schedule_at() (Scheduler method)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="output/botcore.utils.scheduling.html#botcore.utils.scheduling.Scheduler.schedule_later">schedule_later() (Scheduler method)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="output/botcore.utils.scheduling.html#botcore.utils.scheduling.Scheduler">Scheduler (class in botcore.utils.scheduling)</a>
</li>
+ <li><a href="output/botcore.html#botcore.BotBase.setup_hook">setup_hook() (BotBase method)</a>
+</li>
+ <li><a href="output/botcore.html#botcore.StartupError">StartupError</a>
+</li>
</ul></td>
</tr></table>
</section>
@@ -522,21 +582,11 @@
</tr></table>
</section>
-<section id="U" class="genindex-section">
- <h2>U</h2>
- <table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%; vertical-align: top;"><ul>
- <li><a href="output/botcore.utils.extensions.html#botcore.utils.extensions.unqualify">unqualify() (in module botcore.utils.extensions)</a>
-</li>
- </ul></td>
- </tr></table>
-</section>
-
<section id="W" class="genindex-section">
<h2>W</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
- <li><a href="output/botcore.utils.extensions.html#botcore.utils.extensions.walk_extensions">walk_extensions() (in module botcore.utils.extensions)</a>
+ <li><a href="output/botcore.html#botcore.BotBase.wait_until_guild_available">wait_until_guild_available() (BotBase method)</a>
</li>
</ul></td>
</tr></table>
diff --git a/index.html b/index.html
index 4919700a..44dc03c3 100644
--- a/index.html
+++ b/index.html
@@ -163,13 +163,13 @@
<li class="toctree-l2 has-children"><a class="reference internal" href="output/botcore.utils.html">Utils</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="output/botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="output/botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -227,6 +227,7 @@
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="output/botcore.html#submodules">Submodules</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="output/botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.site_api.html">site_api</a></li>
</ul>
</li>
diff --git a/objects.inv b/objects.inv
index de998950..a3d8b2f3 100644
--- a/objects.inv
+++ b/objects.inv
Binary files differ
diff --git a/output/botcore.utils.extensions.html b/output/botcore.async_stats.html
index c585207d..99c54337 100644
--- a/output/botcore.utils.extensions.html
+++ b/output/botcore.async_stats.html
@@ -3,10 +3,10 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="logging" href="botcore.utils.logging.html" /><link rel="prev" title="channel" href="botcore.utils.channel.html" />
+<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="site_api" href="botcore.site_api.html" /><link rel="prev" title="scheduling" href="botcore.utils.scheduling.html" />
<link rel="shortcut icon" href="https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_full/logo_full.min.svg"/><meta name="generator" content="sphinx-4.4.0, furo 2022.02.23"/>
- <title>extensions - Bot Core v4.0.0</title>
+ <title>async_stats - Bot Core v4.0.0</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?digest=3c656993158f05539f962c5cea52a5e6c184bb8c" />
<link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?digest=25ceb02ed1c46dc30f2321ff83e92799f69dfdb9" />
@@ -160,16 +160,16 @@
<ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="botcore.html">Botcore</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="botcore.exts.html">Exts</a></li>
-<li class="toctree-l2 current has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
+<li class="toctree-l2 has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3 current current-page"><a class="current reference internal" href="#">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -209,41 +209,41 @@
</label>
</div>
<article role="main">
- <section id="module-botcore.utils.extensions">
-<span id="extensions"></span><h1>extensions<a class="headerlink" href="#module-botcore.utils.extensions" title="Permalink to this headline">#</a></h1>
-<p>Utilities for loading Discord extensions.</p>
-<dl class="py function">
-<dt class="sig sig-object py" id="botcore.utils.extensions.unqualify">
-<span class="sig-name descname"><span class="pre">unqualify</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/extensions.py#L10-L21"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.extensions.unqualify" title="Permalink to this definition">#</a></dt>
-<dd><p>Return an unqualified name given a qualified module/package <code class="docutils literal notranslate"><span class="pre">name</span></code>.</p>
+ <section id="module-botcore.async_stats">
+<span id="async-stats"></span><h1>async_stats<a class="headerlink" href="#module-botcore.async_stats" title="Permalink to this headline">#</a></h1>
+<p>An async transport method for statsd communication.</p>
+<dl class="py class">
+<dt class="sig sig-object py" id="botcore.async_stats.AsyncStatsClient">
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">AsyncStatsClient</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">loop</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">host</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'localhost'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">8125</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prefix</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/async_stats.py#L12-L55"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.async_stats.AsyncStatsClient" title="Permalink to this definition">#</a></dt>
+<dd><p>Bases: <a class="reference external" href="https://statsd.readthedocs.io/en/v3.3/reference.html#statsd.client.base.StatsClientBase" title="(in Python StatsD - Edited by Python Discord to extend statsd base objects to also allow referencing statsd.client.base.StatsClientBase v3.3)"><code class="xref py py-class docutils literal notranslate"><span class="pre">statsd.client.base.StatsClientBase</span></code></a></p>
+<p>An async implementation of <a class="reference external" href="https://statsd.readthedocs.io/en/v3.3/reference.html#statsd.client.base.StatsClientBase" title="(in Python StatsD - Edited by Python Discord to extend statsd base objects to also allow referencing statsd.client.base.StatsClientBase v3.3)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">statsd.client.base.StatsClientBase</span></code></a> that supports async stat communication.</p>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.async_stats.AsyncStatsClient.__init__">
+<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">loop</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">host</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'localhost'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">8125</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prefix</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/async_stats.py#L15-L39"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.async_stats.AsyncStatsClient.__init__" title="Permalink to this definition">#</a></dt>
+<dd><p>Create a new <a class="reference internal" href="#botcore.async_stats.AsyncStatsClient" title="botcore.async_stats.AsyncStatsClient"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AsyncStatsClient</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
-<dd class="field-odd"><p><strong>name</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>) – The module name to unqualify.</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/stdtypes.html#str" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a></p>
-</dd>
-<dt class="field-odd">Returns</dt>
-<dd class="field-odd"><p>The unqualified module name.</p>
+<dd class="field-odd"><ul class="simple">
+<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.10)"><em>asyncio.AbstractEventLoop</em></a>) – The event loop to use when creating the
+<a class="reference external" href="https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">asyncio.loop.create_datagram_endpoint</span></code></a>.</p></li>
+<li><p><strong>host</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>) – The host to connect to.</p></li>
+<li><p><strong>port</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a>) – The port to connect to.</p></li>
+<li><p><strong>prefix</strong> (<a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Optional" title="(in Python v3.10)"><code class="xref py py-data docutils literal notranslate"><span class="pre">Optional</span></code></a>[<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>]) – The prefix to use for all stats.</p></li>
+</ul>
</dd>
</dl>
</dd></dl>
-<dl class="py function">
-<dt class="sig sig-object py" id="botcore.utils.extensions.walk_extensions">
-<span class="sig-name descname"><span class="pre">walk_extensions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">module</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/extensions.py#L23-L53"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.extensions.walk_extensions" title="Permalink to this definition">#</a></dt>
-<dd><p>Yield extension names from the given module.</p>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.async_stats.AsyncStatsClient.create_socket">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create_socket</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/async_stats.py#L40-L47"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.async_stats.AsyncStatsClient.create_socket" title="Permalink to this definition">#</a></dt>
+<dd><p>Use <a class="reference external" href="https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">asyncio.loop.create_datagram_endpoint</span></code></a> from the loop given on init to create a socket.</p>
<dl class="field-list simple">
-<dt class="field-odd">Parameters</dt>
-<dd class="field-odd"><p><strong>module</strong> (<a class="reference external" href="https://docs.python.org/3/library/types.html#types.ModuleType" title="(in Python v3.10)"><em>types.ModuleType</em></a>) – The module to look for extensions in.</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/stdtypes.html#frozenset" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">frozenset</span></code></a>[<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>]</p>
-</dd>
-<dt class="field-odd">Returns</dt>
-<dd class="field-odd"><p>A set of strings that can be passed directly to <a class="reference external" href="https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Bot.load_extension" title="(in discord.py v2.0.0a)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">discord.ext.commands.Bot.load_extension</span></code></a>.</p>
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
</dd>
</dl>
</dd></dl>
+</dd></dl>
</section>
</article>
@@ -251,23 +251,23 @@
<footer>
<div class="related-pages">
- <a class="next-page" href="botcore.utils.logging.html">
+ <a class="next-page" href="botcore.site_api.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
- <div class="title">logging</div>
+ <div class="title">site_api</div>
</div>
<svg><use href="#svg-arrow-right"></use></svg>
</a>
- <a class="prev-page" href="botcore.utils.channel.html">
+ <a class="prev-page" href="botcore.utils.scheduling.html">
<svg><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
- <div class="title">channel</div>
+ <div class="title">scheduling</div>
</div>
</a>
diff --git a/output/botcore.exts.html b/output/botcore.exts.html
index cdb504a7..04c9917c 100644
--- a/output/botcore.exts.html
+++ b/output/botcore.exts.html
@@ -163,13 +163,13 @@
<li class="toctree-l2 has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
diff --git a/output/botcore.html b/output/botcore.html
index bab52adf..5b50ce0d 100644
--- a/output/botcore.html
+++ b/output/botcore.html
@@ -163,13 +163,13 @@
<li class="toctree-l2 has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -212,6 +212,168 @@
<section id="module-botcore">
<span id="botcore"></span><h1>Botcore<a class="headerlink" href="#module-botcore" title="Permalink to this headline">#</a></h1>
<p>Useful utilities and tools for Discord bot development.</p>
+<dl class="py class">
+<dt class="sig sig-object py" id="botcore.BotBase">
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">BotBase</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="n"><span class="pre">guild_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allowed_roles</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">http_session</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">redis_session</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L33-L263"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase" title="Permalink to this definition">#</a></dt>
+<dd><p>Bases: <a class="reference external" href="https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Bot" title="(in discord.py v2.0.0a)"><code class="xref py py-class docutils literal notranslate"><span class="pre">discord.ext.commands.bot.Bot</span></code></a></p>
+<p>A sub-class that implements many common features that Python Discord bots use.</p>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.__init__">
+<span class="sig-name descname"><span class="pre">__init__</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="n"><span class="pre">guild_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allowed_roles</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">http_session</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">redis_session</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L36-L86"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.__init__" title="Permalink to this definition">#</a></dt>
+<dd><p>Initialise the base bot instance.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>guild_id</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a>) – The ID of the guild use for <a class="reference internal" href="#botcore.BotBase.wait_until_guild_available" title="botcore.BotBase.wait_until_guild_available"><code class="xref py py-func docutils literal notranslate"><span class="pre">wait_until_guild_available()</span></code></a>.</p></li>
+<li><p><strong>allowed_roles</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a>) – A list of role IDs that the bot is allowed to mention.</p></li>
+<li><p><strong>http_session</strong> (<a class="reference external" href="https://docs.aiohttp.org/en/stable/client_reference.html#aiohttp.ClientSession" title="(in aiohttp v3.8)"><em>aiohttp.ClientSession</em></a>) – The session to use for the bot.</p></li>
+<li><p><strong>redis_session</strong> (<a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Optional" title="(in Python v3.10)"><code class="xref py py-data docutils literal notranslate"><span class="pre">Optional</span></code></a>[<code class="xref py py-class docutils literal notranslate"><span class="pre">RedisSession</span></code>]) – The
+<code class="docutils literal notranslate"><span class="pre">[async_rediscache.RedisSession](https://github.com/SebastiaanZ/async-rediscache#creating-a-redissession)</span></code>
+to use for the bot.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.add_cog">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">add_cog</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cog</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L140-L144"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.add_cog" title="Permalink to this definition">#</a></dt>
+<dd><p>Add the given <code class="docutils literal notranslate"><span class="pre">cog</span></code> to the bot and log the operation.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.add_command">
+<span class="sig-name descname"><span class="pre">add_command</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">command</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L145-L149"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.add_command" title="Permalink to this definition">#</a></dt>
+<dd><p>Add <code class="docutils literal notranslate"><span class="pre">command</span></code> as normal and then add its root aliases to the bot.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.clear">
+<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L165-L168"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.clear" title="Permalink to this definition">#</a></dt>
+<dd><p>Not implemented! Re-instantiate the bot instead of attempting to re-use a closed one.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.close">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L229-L263"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.close" title="Permalink to this definition">#</a></dt>
+<dd><p>Close the Discord connection, and the aiohttp session, connector, statsd client, and resolver.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.load_extensions">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">load_extensions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">module</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L112-L118"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.load_extensions" title="Permalink to this definition">#</a></dt>
+<dd><p>Load all the extensions within the given module and save them to <code class="docutils literal notranslate"><span class="pre">self.all_extensions</span></code>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.log_to_dev_log">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">log_to_dev_log</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L193-L196"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.log_to_dev_log" title="Permalink to this definition">#</a></dt>
+<dd><p>Log the given message to #dev-log.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.on_guild_available">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">on_guild_available</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">guild</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L176-L192"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.on_guild_available" title="Permalink to this definition">#</a></dt>
+<dd><p>Set the internal guild available event when self.guild_id becomes available.</p>
+<p>If the cache appears to still be empty (no members, no channels, or no roles), the event
+will not be set and <cite>guild_available_but_cache_empty</cite> event will be emitted.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.on_guild_unavailable">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">on_guild_unavailable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">guild</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L169-L175"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.on_guild_unavailable" title="Permalink to this definition">#</a></dt>
+<dd><p>Clear the internal guild available event when self.guild_id becomes unavailable.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.ping_services">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">ping_services</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L225-L228"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.ping_services" title="Permalink to this definition">#</a></dt>
+<dd><p>Ping all required services on setup to ensure they are up before starting.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.remove_command">
+<span class="sig-name descname"><span class="pre">remove_command</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L150-L164"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.remove_command" title="Permalink to this definition">#</a></dt>
+<dd><p>Remove a command/alias as normal and then remove its root aliases from the bot.</p>
+<p>Individual root aliases cannot be removed by this function.
+To remove them, either remove the entire command or manually edit <cite>bot.all_commands</cite>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Optional" title="(in Python v3.10)"><code class="xref py py-data docutils literal notranslate"><span class="pre">Optional</span></code></a>[<a class="reference external" href="https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Command" title="(in discord.py v2.0.0a)"><code class="xref py py-class docutils literal notranslate"><span class="pre">Command</span></code></a>]</p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.setup_hook">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">setup_hook</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L206-L224"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.setup_hook" title="Permalink to this definition">#</a></dt>
+<dd><p>An async init to startup generic services.</p>
+<p>Connects to statsd, and calls
+<a class="reference internal" href="botcore.async_stats.html#botcore.async_stats.AsyncStatsClient.create_socket" title="botcore.async_stats.AsyncStatsClient.create_socket"><code class="xref py py-func docutils literal notranslate"><span class="pre">AsyncStatsClient.create_socket</span></code></a>
+and <a class="reference internal" href="#botcore.BotBase.ping_services" title="botcore.BotBase.ping_services"><code class="xref py py-func docutils literal notranslate"><span class="pre">ping_services()</span></code></a>.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.BotBase.wait_until_guild_available">
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">wait_until_guild_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L197-L205"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.BotBase.wait_until_guild_available" title="Permalink to this definition">#</a></dt>
+<dd><p>Wait until the guild that matches the <code class="docutils literal notranslate"><span class="pre">guild_id</span></code> given at init is available (and the cache is ready).</p>
+<p>The on_ready event is inadequate because it only waits 2 seconds for a GUILD_CREATE
+gateway event before giving up and thus not populating the cache for unavailable guilds.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p>
+</dd>
+</dl>
+</dd></dl>
+</dd></dl>
+<dl class="py exception">
+<dt class="sig sig-object py" id="botcore.StartupError">
+<em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">StartupError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L25-L31"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.StartupError" title="Permalink to this definition">#</a></dt>
+<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#Exception" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></a></p>
+<p>Exception class for startup errors.</p>
+<dl class="py method">
+<dt class="sig sig-object py" id="botcore.StartupError.__init__">
+<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/__init__.py#L28-L31"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.StartupError.__init__" title="Permalink to this definition">#</a></dt>
+<dd></dd></dl>
+</dd></dl>
<section id="subpackages">
<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">#</a></h2>
<div class="toctree-wrapper compound">
@@ -221,7 +383,6 @@
<li class="toctree-l2"><a class="reference internal" href="botcore.utils.html#submodules">Submodules</a><ul>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
@@ -237,6 +398,7 @@
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">#</a></h2>
<div class="toctree-wrapper compound">
<ul>
+<li class="toctree-l1"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l1"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</div>
diff --git a/output/botcore.site_api.html b/output/botcore.site_api.html
index 36f452b2..c972c941 100644
--- a/output/botcore.site_api.html
+++ b/output/botcore.site_api.html
@@ -3,7 +3,7 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="prev" title="scheduling" href="botcore.utils.scheduling.html" />
+<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="prev" title="async_stats" href="botcore.async_stats.html" />
<link rel="shortcut icon" href="https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_full/logo_full.min.svg"/><meta name="generator" content="sphinx-4.4.0, furo 2022.02.23"/>
<title>site_api - Bot Core v4.0.0</title>
@@ -163,13 +163,13 @@
<li class="toctree-l2 has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">site_api</a></li>
</ul>
</li>
@@ -214,12 +214,12 @@
<p>An API wrapper around the Site API.</p>
<dl class="py class">
<dt class="sig sig-object py" id="botcore.site_api.APIClient">
-<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">APIClient</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">site_api_url</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">site_api_token</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">session_kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L42-L154"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">APIClient</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">site_api_url</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">site_api_token</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">session_kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L42-L154"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient" title="Permalink to this definition">#</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>A wrapper for the Django Site API.</p>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.__init__">
-<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">site_api_url</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">site_api_token</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">session_kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L48-L71"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.__init__" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">site_api_url</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">site_api_token</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">session_kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L48-L71"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.__init__" title="Permalink to this definition">#</a></dt>
<dd><p>Initialize a new <a class="reference internal" href="#botcore.site_api.APIClient" title="botcore.site_api.APIClient"><code class="xref py py-obj docutils literal notranslate"><span class="pre">APIClient</span></code></a> instance.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -233,7 +233,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.close">
-<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L75-L78"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.close" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L75-L78"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.close" title="Permalink to this definition">#</a></dt>
<dd><p>Close the aiohttp session.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type</dt>
@@ -243,7 +243,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.delete">
-<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">delete</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L136-L154"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.delete" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">delete</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L136-L154"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.delete" title="Permalink to this definition">#</a></dt>
<dd><p>Send a DELETE request to the site API and return the JSON response.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -263,7 +263,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.get">
-<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L120-L123"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.get" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L120-L123"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.get" title="Permalink to this definition">#</a></dt>
<dd><p>Equivalent to <a class="reference internal" href="#botcore.site_api.APIClient.request" title="botcore.site_api.APIClient.request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">APIClient.request()</span></code></a> with GET passed as the method.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type</dt>
@@ -273,7 +273,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.maybe_raise_for_status">
-<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">maybe_raise_for_status</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">should_raise</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L79-L98"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.maybe_raise_for_status" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">maybe_raise_for_status</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">should_raise</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L79-L98"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.maybe_raise_for_status" title="Permalink to this definition">#</a></dt>
<dd><p>Raise <a class="reference internal" href="#botcore.site_api.ResponseCodeError" title="botcore.site_api.ResponseCodeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ResponseCodeError</span></code></a> for non-OK response if an exception should be raised.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -292,7 +292,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.patch">
-<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">patch</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L124-L127"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.patch" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">patch</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L124-L127"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.patch" title="Permalink to this definition">#</a></dt>
<dd><p>Equivalent to <a class="reference internal" href="#botcore.site_api.APIClient.request" title="botcore.site_api.APIClient.request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">APIClient.request()</span></code></a> with PATCH passed as the method.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type</dt>
@@ -302,7 +302,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.post">
-<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">post</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L128-L131"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.post" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">post</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L128-L131"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.post" title="Permalink to this definition">#</a></dt>
<dd><p>Equivalent to <a class="reference internal" href="#botcore.site_api.APIClient.request" title="botcore.site_api.APIClient.request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">APIClient.request()</span></code></a> with POST passed as the method.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type</dt>
@@ -312,7 +312,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.put">
-<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">put</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L132-L135"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.put" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">put</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L132-L135"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.put" title="Permalink to this definition">#</a></dt>
<dd><p>Equivalent to <a class="reference internal" href="#botcore.site_api.APIClient.request" title="botcore.site_api.APIClient.request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">APIClient.request()</span></code></a> with PUT passed as the method.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type</dt>
@@ -322,7 +322,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.APIClient.request">
-<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">request</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">method</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L99-L119"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.request" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">request</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">method</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raise_for_status</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L99-L119"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.APIClient.request" title="Permalink to this definition">#</a></dt>
<dd><p>Send an HTTP request to the site API and return the JSON response.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -347,12 +347,12 @@
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="botcore.site_api.ResponseCodeError">
-<em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">ResponseCodeError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">response_json</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">response_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L14-L40"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.ResponseCodeError" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">ResponseCodeError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">response_json</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">response_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L14-L40"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.ResponseCodeError" title="Permalink to this definition">#</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#ValueError" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">ValueError</span></code></a></p>
<p>Raised in <a class="reference internal" href="#botcore.site_api.APIClient.request" title="botcore.site_api.APIClient.request"><code class="xref py py-meth docutils literal notranslate"><span class="pre">APIClient.request()</span></code></a> when a non-OK HTTP response is received.</p>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.ResponseCodeError.__init__">
-<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">response_json</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">response_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L17-L35"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.ResponseCodeError.__init__" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">response_json</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">response_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L17-L35"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.ResponseCodeError.__init__" title="Permalink to this definition">#</a></dt>
<dd><p>Initialize a new <a class="reference internal" href="#botcore.site_api.ResponseCodeError" title="botcore.site_api.ResponseCodeError"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ResponseCodeError</span></code></a> instance.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -366,7 +366,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.site_api.ResponseCodeError.__str__">
-<span class="sig-name descname"><span class="pre">__str__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/site_api.py#L36-L40"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.ResponseCodeError.__str__" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">__str__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/site_api.py#L36-L40"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.site_api.ResponseCodeError.__str__" title="Permalink to this definition">#</a></dt>
<dd><p>Return a string representation of the error.</p>
</dd></dl>
</dd></dl>
@@ -378,14 +378,14 @@
<div class="related-pages">
- <a class="prev-page" href="botcore.utils.scheduling.html">
+ <a class="prev-page" href="botcore.async_stats.html">
<svg><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
- <div class="title">scheduling</div>
+ <div class="title">async_stats</div>
</div>
</a>
diff --git a/output/botcore.utils.caching.html b/output/botcore.utils.caching.html
index 31bad895..45263628 100644
--- a/output/botcore.utils.caching.html
+++ b/output/botcore.utils.caching.html
@@ -163,13 +163,13 @@
<li class="toctree-l2 current has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l3 current current-page"><a class="current reference internal" href="#">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -214,14 +214,14 @@
<p>Utilities related to custom caches.</p>
<dl class="py class">
<dt class="sig sig-object py" id="botcore.utils.caching.AsyncCache">
-<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">AsyncCache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">max_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">128</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/caching.py#L8-L66"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.caching.AsyncCache" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">AsyncCache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">max_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">128</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/caching.py#L8-L66"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.caching.AsyncCache" title="Permalink to this definition">#</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>LRU cache implementation for coroutines.</p>
<p>Once the cache exceeds the maximum size, keys are deleted in FIFO order.</p>
<p>An offset may be optionally provided to be applied to the coroutine’s arguments when creating the cache key.</p>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.caching.AsyncCache.__call__">
-<span class="sig-name descname"><span class="pre">__call__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg_offset</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/caching.py#L27-L62"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.caching.AsyncCache.__call__" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">__call__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg_offset</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/caching.py#L27-L62"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.caching.AsyncCache.__call__" title="Permalink to this definition">#</a></dt>
<dd><p>Decorator for async cache.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -237,7 +237,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.caching.AsyncCache.__init__">
-<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">max_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">128</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/caching.py#L17-L26"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.caching.AsyncCache.__init__" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">max_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">128</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/caching.py#L17-L26"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.caching.AsyncCache.__init__" title="Permalink to this definition">#</a></dt>
<dd><p>Initialise a new <a class="reference internal" href="#botcore.utils.caching.AsyncCache" title="botcore.utils.caching.AsyncCache"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AsyncCache</span></code></a> instance.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -247,7 +247,7 @@
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.caching.AsyncCache.clear">
-<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/caching.py#L63-L66"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.caching.AsyncCache.clear" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/caching.py#L63-L66"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.caching.AsyncCache.clear" title="Permalink to this definition">#</a></dt>
<dd><p>Clear cache instance.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type</dt>
diff --git a/output/botcore.utils.channel.html b/output/botcore.utils.channel.html
index 3ae467cc..f5491b87 100644
--- a/output/botcore.utils.channel.html
+++ b/output/botcore.utils.channel.html
@@ -3,7 +3,7 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="extensions" href="botcore.utils.extensions.html" /><link rel="prev" title="caching" href="botcore.utils.caching.html" />
+<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="logging" href="botcore.utils.logging.html" /><link rel="prev" title="caching" href="botcore.utils.caching.html" />
<link rel="shortcut icon" href="https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_full/logo_full.min.svg"/><meta name="generator" content="sphinx-4.4.0, furo 2022.02.23"/>
<title>channel - Bot Core v4.0.0</title>
@@ -163,13 +163,13 @@
<li class="toctree-l2 current has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3 current current-page"><a class="current reference internal" href="#">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -214,7 +214,7 @@
<p>Useful helper functions for interacting with various discord channel objects.</p>
<dl class="py function">
<dt class="sig sig-object py" id="botcore.utils.channel.get_or_fetch_channel">
-<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_or_fetch_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">bot</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/channel.py#L25-L55"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.channel.get_or_fetch_channel" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_or_fetch_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">bot</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/channel.py#L25-L55"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.channel.get_or_fetch_channel" title="Permalink to this definition">#</a></dt>
<dd><p>Attempt to get or fetch the given <code class="docutils literal notranslate"><span class="pre">channel_id</span></code> from the bots cache, and return it.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -241,7 +241,7 @@
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="botcore.utils.channel.is_in_category">
-<span class="sig-name descname"><span class="pre">is_in_category</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">category_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/channel.py#L11-L23"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.channel.is_in_category" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">is_in_category</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">category_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/channel.py#L11-L23"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.channel.is_in_category" title="Permalink to this definition">#</a></dt>
<dd><p>Return whether the given <code class="docutils literal notranslate"><span class="pre">channel</span></code> in the the category with the id <code class="docutils literal notranslate"><span class="pre">category_id</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -265,12 +265,12 @@
<footer>
<div class="related-pages">
- <a class="next-page" href="botcore.utils.extensions.html">
+ <a class="next-page" href="botcore.utils.logging.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
- <div class="title">extensions</div>
+ <div class="title">logging</div>
</div>
<svg><use href="#svg-arrow-right"></use></svg>
</a>
diff --git a/output/botcore.utils.html b/output/botcore.utils.html
index 73efbf49..e0161ec8 100644
--- a/output/botcore.utils.html
+++ b/output/botcore.utils.html
@@ -163,13 +163,13 @@
<li class="toctree-l2 current has-children current-page"><a class="current reference internal" href="#">Utils</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -214,7 +214,7 @@
<p>Useful utilities and tools for Discord bot development.</p>
<dl class="py function">
<dt class="sig sig-object py" id="botcore.utils.apply_monkey_patches">
-<span class="sig-name descname"><span class="pre">apply_monkey_patches</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/__init__.py#L6-L20"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.apply_monkey_patches" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">apply_monkey_patches</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/__init__.py#L6-L20"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.apply_monkey_patches" title="Permalink to this definition">#</a></dt>
<dd><p>Applies all common monkey patches for our bots.</p>
<dl>
<dt>Patches <a class="reference external" href="https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Command" title="(in discord.py v2.0.0a)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">discord.ext.commands.Command</span></code></a> and <a class="reference external" href="https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Group" title="(in discord.py v2.0.0a)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">discord.ext.commands.Group</span></code></a> to support root aliases.</dt><dd><p>A <code class="docutils literal notranslate"><span class="pre">root_aliases</span></code> keyword argument is added to these two objects, which is a sequence of alias names
@@ -236,7 +236,6 @@ that will act as top-level groups rather than being aliases of the command’s g
<ul>
<li class="toctree-l1"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l1"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l1"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l1"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l1"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l1"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
diff --git a/output/botcore.utils.logging.html b/output/botcore.utils.logging.html
index 2dbc370d..ed6d0037 100644
--- a/output/botcore.utils.logging.html
+++ b/output/botcore.utils.logging.html
@@ -3,7 +3,7 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="members" href="botcore.utils.members.html" /><link rel="prev" title="extensions" href="botcore.utils.extensions.html" />
+<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="members" href="botcore.utils.members.html" /><link rel="prev" title="channel" href="botcore.utils.channel.html" />
<link rel="shortcut icon" href="https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_full/logo_full.min.svg"/><meta name="generator" content="sphinx-4.4.0, furo 2022.02.23"/>
<title>logging - Bot Core v4.0.0</title>
@@ -163,13 +163,13 @@
<li class="toctree-l2 current has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3 current current-page"><a class="current reference internal" href="#">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -214,12 +214,12 @@
<p>Common logging related functions.</p>
<dl class="py class">
<dt class="sig sig-object py" id="botcore.utils.logging.CustomLogger">
-<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">CustomLogger</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/logging.py#L14-L33"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.logging.CustomLogger" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">CustomLogger</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">level</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/logging.py#L14-L33"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.logging.CustomLogger" title="Permalink to this definition">#</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/logging.html#logging.Logger" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">logging.Logger</span></code></a></p>
<p>Custom implementation of the <a class="reference external" href="https://docs.python.org/3/library/logging.html#logging.Logger" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logging.Logger</span></code></a> class with an added <a class="reference internal" href="#botcore.utils.logging.CustomLogger.trace" title="botcore.utils.logging.CustomLogger.trace"><code class="xref py py-obj docutils literal notranslate"><span class="pre">trace</span></code></a> method.</p>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.logging.CustomLogger.trace">
-<span class="sig-name descname"><span class="pre">trace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msg</span></span></em>, <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="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/logging.py#L17-L33"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.logging.CustomLogger.trace" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">trace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msg</span></span></em>, <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="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/logging.py#L17-L33"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.logging.CustomLogger.trace" title="Permalink to this definition">#</a></dt>
<dd><p>Log the given message with the severity <code class="docutils literal notranslate"><span class="pre">"TRACE"</span></code>.</p>
<p>To pass exception information, use the keyword argument exc_info with a true value:</p>
<div class="highlight-py notranslate"><div class="highlight"><pre><span></span><span class="n">logger</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s2">"Houston, we have an </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"interesting problem"</span><span class="p">,</span> <span class="n">exc_info</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
@@ -241,7 +241,7 @@
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="botcore.utils.logging.get_logger">
-<span class="sig-name descname"><span class="pre">get_logger</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/logging.py#L35-L46"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.logging.get_logger" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">get_logger</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/logging.py#L35-L46"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.logging.get_logger" title="Permalink to this definition">#</a></dt>
<dd><p>Utility to make mypy recognise that logger is of type <a class="reference internal" href="#botcore.utils.logging.CustomLogger" title="botcore.utils.logging.CustomLogger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CustomLogger</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -271,14 +271,14 @@
</div>
<svg><use href="#svg-arrow-right"></use></svg>
</a>
- <a class="prev-page" href="botcore.utils.extensions.html">
+ <a class="prev-page" href="botcore.utils.channel.html">
<svg><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
- <div class="title">extensions</div>
+ <div class="title">channel</div>
</div>
</a>
diff --git a/output/botcore.utils.members.html b/output/botcore.utils.members.html
index 47b0886e..99432c18 100644
--- a/output/botcore.utils.members.html
+++ b/output/botcore.utils.members.html
@@ -163,13 +163,13 @@
<li class="toctree-l2 current has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3 current current-page"><a class="current reference internal" href="#">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -214,7 +214,7 @@
<p>Useful helper functions for interactin with <a class="reference external" href="https://discordpy.readthedocs.io/en/master/api.html#discord.Member" title="(in discord.py v2.0.0a)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">discord.Member</span></code></a> objects.</p>
<dl class="py function">
<dt class="sig sig-object py" id="botcore.utils.members.get_or_fetch_member">
-<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_or_fetch_member</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">guild</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">member_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/members.py#L12-L29"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.members.get_or_fetch_member" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_or_fetch_member</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">guild</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">member_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/members.py#L12-L29"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.members.get_or_fetch_member" title="Permalink to this definition">#</a></dt>
<dd><p>Attempt to get a member from cache; on failure fetch from the API.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type</dt>
@@ -227,7 +227,7 @@
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="botcore.utils.members.handle_role_change">
-<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">handle_role_change</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">member</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">coro</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">role</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/members.py#L31-L57"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.members.handle_role_change" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">handle_role_change</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">member</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">coro</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">role</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/members.py#L31-L57"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.members.handle_role_change" title="Permalink to this definition">#</a></dt>
<dd><p>Await the given <code class="docutils literal notranslate"><span class="pre">coro</span></code> with <code class="docutils literal notranslate"><span class="pre">member</span></code> as the sole argument.</p>
<p>Handle errors that we expect to be raised from
<a class="reference external" href="https://discordpy.readthedocs.io/en/master/api.html#discord.Member.add_roles" title="(in discord.py v2.0.0a)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">discord.Member.add_roles</span></code></a> and <a class="reference external" href="https://discordpy.readthedocs.io/en/master/api.html#discord.Member.remove_roles" title="(in discord.py v2.0.0a)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">discord.Member.remove_roles</span></code></a>.</p>
diff --git a/output/botcore.utils.regex.html b/output/botcore.utils.regex.html
index bc2b4fde..6c925b04 100644
--- a/output/botcore.utils.regex.html
+++ b/output/botcore.utils.regex.html
@@ -163,13 +163,13 @@
<li class="toctree-l2 current has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3 current current-page"><a class="current reference internal" href="#">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -214,21 +214,21 @@
<p>Common regular expressions.</p>
<dl class="py data">
<dt class="sig sig-object py" id="botcore.utils.regex.DISCORD_INVITE">
-<span class="sig-name descname"><span class="pre">DISCORD_INVITE</span></span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/regex.py#L5-L16"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.regex.DISCORD_INVITE" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">DISCORD_INVITE</span></span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/regex.py#L5-L16"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.regex.DISCORD_INVITE" title="Permalink to this definition">#</a></dt>
<dd><p>Regex for Discord server invites.</p>
<dl class="field-list simple">
</dl>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="botcore.utils.regex.FORMATTED_CODE_REGEX">
-<span class="sig-name descname"><span class="pre">FORMATTED_CODE_REGEX</span></span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/regex.py#L23-L31"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.regex.FORMATTED_CODE_REGEX" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">FORMATTED_CODE_REGEX</span></span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/regex.py#L23-L31"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.regex.FORMATTED_CODE_REGEX" title="Permalink to this definition">#</a></dt>
<dd><p>Regex for formatted code, using Discord’s code blocks.</p>
<dl class="field-list simple">
</dl>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="botcore.utils.regex.RAW_CODE_REGEX">
-<span class="sig-name descname"><span class="pre">RAW_CODE_REGEX</span></span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/regex.py#L38-L43"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.regex.RAW_CODE_REGEX" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">RAW_CODE_REGEX</span></span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/regex.py#L38-L43"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.regex.RAW_CODE_REGEX" title="Permalink to this definition">#</a></dt>
<dd><p>Regex for raw code, <em>not</em> using Discord’s code blocks.</p>
<dl class="field-list simple">
</dl>
diff --git a/output/botcore.utils.scheduling.html b/output/botcore.utils.scheduling.html
index c2747347..ad77877b 100644
--- a/output/botcore.utils.scheduling.html
+++ b/output/botcore.utils.scheduling.html
@@ -3,7 +3,7 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
-<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="site_api" href="botcore.site_api.html" /><link rel="prev" title="regex" href="botcore.utils.regex.html" />
+<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="async_stats" href="botcore.async_stats.html" /><link rel="prev" title="regex" href="botcore.utils.regex.html" />
<link rel="shortcut icon" href="https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_full/logo_full.min.svg"/><meta name="generator" content="sphinx-4.4.0, furo 2022.02.23"/>
<title>scheduling - Bot Core v4.0.0</title>
@@ -163,13 +163,13 @@
<li class="toctree-l2 current has-children"><a class="reference internal" href="botcore.utils.html">Utils</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3 current current-page"><a class="current reference internal" href="#">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -214,7 +214,7 @@
<p>Generic python scheduler.</p>
<dl class="py class">
<dt class="sig sig-object py" id="botcore.utils.scheduling.Scheduler">
-<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">Scheduler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L13-L209"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler" title="Permalink to this definition">#</a></dt>
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">Scheduler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L13-L209"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler" title="Permalink to this definition">#</a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.10)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>Schedule the execution of coroutines and keep track of them.</p>
<p>When instantiating a <a class="reference internal" href="#botcore.utils.scheduling.Scheduler" title="botcore.utils.scheduling.Scheduler"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Scheduler</span></code></a>, a name must be provided. This name is used to distinguish the
@@ -228,7 +228,7 @@ the same ID used to schedule it.</p>
<p>Any exception raised in a scheduled task is logged when the task is done.</p>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.scheduling.Scheduler.__contains__">
-<span class="sig-name descname"><span class="pre">__contains__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L43-L54"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.__contains__" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">__contains__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L43-L54"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.__contains__" title="Permalink to this definition">#</a></dt>
<dd><p>Return <a class="reference external" href="https://docs.python.org/3/library/constants.html#True" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">True</span></code></a> if a task with the given <code class="docutils literal notranslate"><span class="pre">task_id</span></code> is currently scheduled.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -244,7 +244,7 @@ the same ID used to schedule it.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.scheduling.Scheduler.__init__">
-<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L31-L42"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.__init__" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L31-L42"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.__init__" title="Permalink to this definition">#</a></dt>
<dd><p>Initialize a new <a class="reference internal" href="#botcore.utils.scheduling.Scheduler" title="botcore.utils.scheduling.Scheduler"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Scheduler</span></code></a> instance.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -254,7 +254,7 @@ the same ID used to schedule it.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.scheduling.Scheduler.cancel">
-<span class="sig-name descname"><span class="pre">cancel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L125-L142"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.cancel" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">cancel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L125-L142"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.cancel" title="Permalink to this definition">#</a></dt>
<dd><p>Unschedule the task identified by <code class="docutils literal notranslate"><span class="pre">task_id</span></code>. Log a warning if the task doesn’t exist.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@@ -267,7 +267,7 @@ the same ID used to schedule it.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.scheduling.Scheduler.cancel_all">
-<span class="sig-name descname"><span class="pre">cancel_all</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L143-L149"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.cancel_all" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">cancel_all</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L143-L149"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.cancel_all" title="Permalink to this definition">#</a></dt>
<dd><p>Unschedule all known tasks.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type</dt>
@@ -277,7 +277,7 @@ the same ID used to schedule it.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.scheduling.Scheduler.schedule">
-<span class="sig-name descname"><span class="pre">schedule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">coroutine</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L55-L81"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.schedule" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">schedule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">coroutine</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L55-L81"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.schedule" title="Permalink to this definition">#</a></dt>
<dd><p>Schedule the execution of a <code class="docutils literal notranslate"><span class="pre">coroutine</span></code>.</p>
<p>If a task with <code class="docutils literal notranslate"><span class="pre">task_id</span></code> already exists, close <code class="docutils literal notranslate"><span class="pre">coroutine</span></code> instead of scheduling it. This
prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-used elsewhere.</p>
@@ -295,7 +295,7 @@ prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.scheduling.Scheduler.schedule_at">
-<span class="sig-name descname"><span class="pre">schedule_at</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">time</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">coroutine</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L82-L105"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.schedule_at" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">schedule_at</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">time</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">coroutine</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L82-L105"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.schedule_at" title="Permalink to this definition">#</a></dt>
<dd><p>Schedule <code class="docutils literal notranslate"><span class="pre">coroutine</span></code> to be executed at the given <code class="docutils literal notranslate"><span class="pre">time</span></code>.</p>
<p>If <code class="docutils literal notranslate"><span class="pre">time</span></code> is timezone aware, then use that timezone to calculate now() when subtracting.
If <code class="docutils literal notranslate"><span class="pre">time</span></code> is naïve, then use UTC.</p>
@@ -317,7 +317,7 @@ prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="botcore.utils.scheduling.Scheduler.schedule_later">
-<span class="sig-name descname"><span class="pre">schedule_later</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">delay</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">coroutine</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L106-L124"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.schedule_later" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">schedule_later</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">delay</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">task_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">coroutine</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L106-L124"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.Scheduler.schedule_later" title="Permalink to this definition">#</a></dt>
<dd><p>Schedule <code class="docutils literal notranslate"><span class="pre">coroutine</span></code> to be executed after <code class="docutils literal notranslate"><span class="pre">delay</span></code> seconds.</p>
<p>If a task with <code class="docutils literal notranslate"><span class="pre">task_id</span></code> already exists, close <code class="docutils literal notranslate"><span class="pre">coroutine</span></code> instead of scheduling it. This
prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-used elsewhere.</p>
@@ -337,7 +337,7 @@ prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="botcore.utils.scheduling.create_task">
-<span class="sig-name descname"><span class="pre">create_task</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">coro</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">suppressed_exceptions</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">event_loop</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/bc0a470dcd99007581975f23efabbda9266dac9d/botcore/utils/scheduling.py#L211-L239"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.create_task" title="Permalink to this definition">#</a></dt>
+<span class="sig-name descname"><span class="pre">create_task</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">coro</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">suppressed_exceptions</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">event_loop</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="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/python-discord/bot-core/blob/765284a5e436f7786619a5ba4c312d75df5e9dee/botcore/utils/scheduling.py#L211-L239"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#botcore.utils.scheduling.create_task" title="Permalink to this definition">#</a></dt>
<dd><p>Wrapper for creating an <a class="reference external" href="https://docs.python.org/3/library/asyncio-task.html#asyncio.Task" title="(in Python v3.10)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">asyncio.Task</span></code></a> which logs exceptions raised in the task.</p>
<p>If the <code class="docutils literal notranslate"><span class="pre">event_loop</span></code> kwarg is provided, the task is created from that event loop,
otherwise the running loop is used.</p>
@@ -365,12 +365,12 @@ otherwise the running loop is used.</p>
<footer>
<div class="related-pages">
- <a class="next-page" href="botcore.site_api.html">
+ <a class="next-page" href="botcore.async_stats.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
- <div class="title">site_api</div>
+ <div class="title">async_stats</div>
</div>
<svg><use href="#svg-arrow-right"></use></svg>
</a>
diff --git a/py-modindex.html b/py-modindex.html
index 67dc1e12..024664d3 100644
--- a/py-modindex.html
+++ b/py-modindex.html
@@ -161,13 +161,13 @@
<li class="toctree-l2 has-children"><a class="reference internal" href="output/botcore.utils.html">Utils</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="output/botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="output/botcore.site_api.html">site_api</a></li>
</ul>
</li>
@@ -229,37 +229,37 @@
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
- <a href="output/botcore.exts.html#module-botcore.exts"><code class="xref">botcore.exts</code></a></td><td>
+ <a href="output/botcore.async_stats.html#module-botcore.async_stats"><code class="xref">botcore.async_stats</code></a></td><td>
<em></em></td>
</tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
- <a href="output/botcore.site_api.html#module-botcore.site_api"><code class="xref">botcore.site_api</code></a></td><td>
+ <a href="output/botcore.exts.html#module-botcore.exts"><code class="xref">botcore.exts</code></a></td><td>
<em></em></td>
</tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
- <a href="output/botcore.utils.html#module-botcore.utils"><code class="xref">botcore.utils</code></a></td><td>
+ <a href="output/botcore.site_api.html#module-botcore.site_api"><code class="xref">botcore.site_api</code></a></td><td>
<em></em></td>
</tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
- <a href="output/botcore.utils.caching.html#module-botcore.utils.caching"><code class="xref">botcore.utils.caching</code></a></td><td>
+ <a href="output/botcore.utils.html#module-botcore.utils"><code class="xref">botcore.utils</code></a></td><td>
<em></em></td>
</tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
- <a href="output/botcore.utils.channel.html#module-botcore.utils.channel"><code class="xref">botcore.utils.channel</code></a></td><td>
+ <a href="output/botcore.utils.caching.html#module-botcore.utils.caching"><code class="xref">botcore.utils.caching</code></a></td><td>
<em></em></td>
</tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
- <a href="output/botcore.utils.extensions.html#module-botcore.utils.extensions"><code class="xref">botcore.utils.extensions</code></a></td><td>
+ <a href="output/botcore.utils.channel.html#module-botcore.utils.channel"><code class="xref">botcore.utils.channel</code></a></td><td>
<em></em></td>
</tr>
<tr class="cg-1">
diff --git a/search.html b/search.html
index f0b07f51..c4ca6c5e 100644
--- a/search.html
+++ b/search.html
@@ -160,13 +160,13 @@
<li class="toctree-l2 has-children"><a class="reference internal" href="output/botcore.utils.html">Utils</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle child pages in navigation</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.caching.html">caching</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.channel.html">channel</a></li>
-<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.extensions.html">extensions</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.logging.html">logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.members.html">members</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.regex.html">regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="output/botcore.utils.scheduling.html">scheduling</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal" href="output/botcore.async_stats.html">async_stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="output/botcore.site_api.html">site_api</a></li>
</ul>
</li>
diff --git a/searchindex.js b/searchindex.js
index c96d7c72..6a4f450a 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["index","output/botcore","output/botcore.exts","output/botcore.site_api","output/botcore.utils","output/botcore.utils.caching","output/botcore.utils.channel","output/botcore.utils.extensions","output/botcore.utils.logging","output/botcore.utils.members","output/botcore.utils.regex","output/botcore.utils.scheduling"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,sphinx:56},filenames:["index.rst","output/botcore.rst","output/botcore.exts.rst","output/botcore.site_api.rst","output/botcore.utils.rst","output/botcore.utils.caching.rst","output/botcore.utils.channel.rst","output/botcore.utils.extensions.rst","output/botcore.utils.logging.rst","output/botcore.utils.members.rst","output/botcore.utils.regex.rst","output/botcore.utils.scheduling.rst"],objects:{"":[[1,0,0,"-","botcore"]],"botcore.site_api":[[3,1,1,"","APIClient"],[3,3,1,"","ResponseCodeError"]],"botcore.site_api.APIClient":[[3,2,1,"","__init__"],[3,2,1,"","close"],[3,2,1,"","delete"],[3,2,1,"","get"],[3,2,1,"","maybe_raise_for_status"],[3,2,1,"","patch"],[3,2,1,"","post"],[3,2,1,"","put"],[3,2,1,"","request"]],"botcore.site_api.ResponseCodeError":[[3,2,1,"","__init__"],[3,2,1,"","__str__"]],"botcore.utils":[[4,4,1,"","apply_monkey_patches"],[5,0,0,"-","caching"],[6,0,0,"-","channel"],[7,0,0,"-","extensions"],[8,0,0,"-","logging"],[9,0,0,"-","members"],[10,0,0,"-","regex"],[11,0,0,"-","scheduling"]],"botcore.utils.caching":[[5,1,1,"","AsyncCache"]],"botcore.utils.caching.AsyncCache":[[5,2,1,"","__call__"],[5,2,1,"","__init__"],[5,2,1,"","clear"]],"botcore.utils.channel":[[6,4,1,"","get_or_fetch_channel"],[6,4,1,"","is_in_category"]],"botcore.utils.extensions":[[7,4,1,"","unqualify"],[7,4,1,"","walk_extensions"]],"botcore.utils.logging":[[8,1,1,"","CustomLogger"],[8,4,1,"","get_logger"]],"botcore.utils.logging.CustomLogger":[[8,2,1,"","trace"]],"botcore.utils.members":[[9,4,1,"","get_or_fetch_member"],[9,4,1,"","handle_role_change"]],"botcore.utils.regex":[[10,5,1,"","DISCORD_INVITE"],[10,5,1,"","FORMATTED_CODE_REGEX"],[10,5,1,"","RAW_CODE_REGEX"]],"botcore.utils.scheduling":[[11,1,1,"","Scheduler"],[11,4,1,"","create_task"]],"botcore.utils.scheduling.Scheduler":[[11,2,1,"","__contains__"],[11,2,1,"","__init__"],[11,2,1,"","cancel"],[11,2,1,"","cancel_all"],[11,2,1,"","schedule"],[11,2,1,"","schedule_at"],[11,2,1,"","schedule_later"]],botcore:[[2,0,0,"-","exts"],[3,0,0,"-","site_api"],[4,0,0,"-","utils"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","exception","Python exception"],"4":["py","function","Python function"],"5":["py","data","Python data"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:exception","4":"py:function","5":"py:data"},terms:{"0":[5,8],"1":8,"128":5,"204":3,"403":4,"class":[3,5,8,11],"do":6,"float":11,"function":[5,6,8,9,11],"int":[5,6,11],"long":11,"na\u00efv":11,"new":[3,5,11],"return":[3,4,5,6,7,8,9,11],"true":[3,8,11],A:[3,4,5,6,7,11],If:[3,11],It:4,No:3,The:[3,5,6,7,8,9,11],To:8,__call__:5,__contains__:11,__init__:[3,5,11],__str__:3,abstracteventloop:11,act:4,ad:[4,8],add_rol:9,after:11,aiohttp:3,alia:4,alias:4,all:[4,11],alreadi:11,also:4,an:[3,4,5,6,7,8,11],ani:[3,11],api:[3,9],apicli:3,appli:[4,5],apply_monkey_patch:4,ar:5,arg:8,arg_offset:5,argument:[3,4,5,8,9],around:3,async:[3,5,6,9],asynccach:5,asyncio:11,attempt:[6,9],attribut:4,authent:3,await:[9,11],awar:11,base:[3,5,8,11],befor:11,being:4,block:10,bool:[3,6,11],bot:[1,4,6,7],botcor:0,cach:[1,4,6,9],calcul:11,call:11,callabl:[5,9],can:[7,11],cancel:11,cancel_al:11,categori:6,category_id:6,caus:4,changelog:0,channel:[1,4],channel_id:6,check:[3,6,11],clear:5,clientrespons:3,clientsess:3,close:[3,11],cloudflar:4,code:10,cog:2,command:[4,6,7],common:[4,8,10],constructor:3,contain:11,content:3,coro:[9,11],coroutin:[5,9,11],could:9,creat:[5,11],create_task:11,current:11,custom:[5,8],customlogg:8,datetim:11,decor:5,delai:11,delet:[3,5],depend:6,develop:[1,4],dict:3,directli:7,discord:[1,2,4,6,7,9,10],discord_invit:10,distinguish:11,django:3,doesn:11,don:11,done:11,elsewher:11,endpoint:3,equival:3,error:[3,4,9],event:11,event_loop:11,exc_info:8,exce:5,except:[3,8,11],execut:11,exist:11,expect:9,express:10,ext:[0,1,4,6,7],extens:[1,4],extra:3,fail:6,failur:9,fetch:[6,9],fifo:5,forbidden:6,format:10,formatted_code_regex:10,found:[9,11],from:[3,4,6,7,9,11],frozenset:7,futur:11,gener:11,get:[3,6,9],get_logg:8,get_or_fetch_channel:6,get_or_fetch_memb:9,given:[6,7,8,9,11],group:4,guild:9,guildchannel:6,ha:4,handl:[9,11],handle_role_chang:9,hashabl:11,have:[6,8],heavi:4,helper:[6,9],houston:8,how:[5,11],http:3,httpexcept:6,id:[6,11],identifi:11,ignor:4,immedi:11,implement:[5,8],index:0,indic:9,inform:[0,8],initi:[3,11],initialis:5,instanc:[3,5,6,8,11],instanti:11,instead:11,intend:9,interact:6,interactin:9,interest:8,intern:4,invalid:6,invaliddata:6,invit:10,is_in_categori:6,item:5,json:3,keep:11,kei:5,keyword:[3,4,8],known:11,kwarg:[3,8,11],level:[4,8],ll:11,load:[4,7],load_extens:7,log:[1,4,11],logger:8,look:[7,11],loop:11,lru:5,mai:5,make:8,mani:5,max_siz:5,maximum:5,maybe_raise_for_statu:3,member:[1,4],member_id:9,messag:[8,11],method:[3,4,8],modul:[7,11],moduletyp:7,monkei:4,msg:8,must:11,mypi:8,name:[4,7,8,11],namespac:11,non:3,none:[3,4,5,8,9,11],notfound:6,now:11,object:[3,4,5,6,9,11],offset:5,ok:3,onc:5,oper:11,option:[3,5,8,9],order:[5,11],other:11,otherwis:11,our:4,packag:7,page:0,paramet:[3,5,6,7,8,9,11],pass:[3,7,8,9,11],past:11,patch:[3,4],permiss:6,posit:5,post:3,prematur:11,prevent:11,problem:8,provid:[5,11],put:3,python:11,qualifi:7,rais:[3,6,9,11],raise_for_statu:3,rather:4,raw:10,raw_code_regex:10,re:11,receiv:[3,6],recognis:8,regex:[1,4],regular:10,relat:[5,8],remove_rol:9,represent:3,request:3,request_text:3,requir:11,respons:3,response_json:3,response_text:3,responsecodeerror:3,result:11,retriev:6,reusabl:2,role:9,root:4,root_alias:4,rout:4,run:11,s:[4,5,8,10,11],same:11,schedul:[1,4],schedule_at:11,schedule_lat:11,search:0,second:11,send:3,send_typ:4,sequenc:4,server:10,session:3,session_kwarg:3,set:7,sever:8,should:3,should_rais:3,site:3,site_api:[0,1],site_api_token:3,site_api_url:3,size:5,so:4,sole:9,sourc:[3,4,5,6,7,8,9,10,11],start:11,store:[4,5],str:[3,7,8,11],string:[3,7],submodul:0,subpackag:0,subtract:11,suggest:11,support:[4,11],suppressed_except:11,t:11,target:5,task:11,task_id:11,text:3,textchannel:6,than:4,them:11,thi:[4,6,9,11],thrown:4,time:11,timezon:11,token:3,tool:[1,4],top:4,trace:8,track:11,tupl:11,two:4,type:[3,4,5,6,7,8,9,11],unawait:11,under:4,union:11,uniqu:11,unknown:6,unqualifi:7,unschedul:11,url:3,us:[1,3,4,6,8,9,10,11],utc:11,util:[0,1,5,7,8],valu:8,valueerror:3,variou:6,wa:[6,11],wait:11,walk_extens:7,warn:11,we:[8,9],when:[3,4,5,11],whether:[3,6],which:[4,11],worker:4,wrap:[5,11],wrapper:[3,11],yield:7,you:6},titles:["Bot Core Project Documentation","Botcore","Exts","site_api","Utils","caching","channel","extensions","logging","members","regex","scheduling"],titleterms:{bot:0,botcor:1,cach:5,channel:6,core:0,document:0,ext:2,extens:7,extra:0,log:8,member:9,modul:0,other:0,project:0,refer:0,regex:10,schedul:11,site_api:3,submodul:[1,4],subpackag:1,util:4}}) \ No newline at end of file
+Search.setIndex({docnames:["index","output/botcore","output/botcore.async_stats","output/botcore.exts","output/botcore.site_api","output/botcore.utils","output/botcore.utils.caching","output/botcore.utils.channel","output/botcore.utils.logging","output/botcore.utils.members","output/botcore.utils.regex","output/botcore.utils.scheduling"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,sphinx:56},filenames:["index.rst","output/botcore.rst","output/botcore.async_stats.rst","output/botcore.exts.rst","output/botcore.site_api.rst","output/botcore.utils.rst","output/botcore.utils.caching.rst","output/botcore.utils.channel.rst","output/botcore.utils.logging.rst","output/botcore.utils.members.rst","output/botcore.utils.regex.rst","output/botcore.utils.scheduling.rst"],objects:{"":[[1,0,0,"-","botcore"]],"botcore.BotBase":[[1,2,1,"","__init__"],[1,2,1,"","add_cog"],[1,2,1,"","add_command"],[1,2,1,"","clear"],[1,2,1,"","close"],[1,2,1,"","load_extensions"],[1,2,1,"","log_to_dev_log"],[1,2,1,"","on_guild_available"],[1,2,1,"","on_guild_unavailable"],[1,2,1,"","ping_services"],[1,2,1,"","remove_command"],[1,2,1,"","setup_hook"],[1,2,1,"","wait_until_guild_available"]],"botcore.StartupError":[[1,2,1,"","__init__"]],"botcore.async_stats":[[2,1,1,"","AsyncStatsClient"]],"botcore.async_stats.AsyncStatsClient":[[2,2,1,"","__init__"],[2,2,1,"","create_socket"]],"botcore.site_api":[[4,1,1,"","APIClient"],[4,3,1,"","ResponseCodeError"]],"botcore.site_api.APIClient":[[4,2,1,"","__init__"],[4,2,1,"","close"],[4,2,1,"","delete"],[4,2,1,"","get"],[4,2,1,"","maybe_raise_for_status"],[4,2,1,"","patch"],[4,2,1,"","post"],[4,2,1,"","put"],[4,2,1,"","request"]],"botcore.site_api.ResponseCodeError":[[4,2,1,"","__init__"],[4,2,1,"","__str__"]],"botcore.utils":[[5,4,1,"","apply_monkey_patches"],[6,0,0,"-","caching"],[7,0,0,"-","channel"],[8,0,0,"-","logging"],[9,0,0,"-","members"],[10,0,0,"-","regex"],[11,0,0,"-","scheduling"]],"botcore.utils.caching":[[6,1,1,"","AsyncCache"]],"botcore.utils.caching.AsyncCache":[[6,2,1,"","__call__"],[6,2,1,"","__init__"],[6,2,1,"","clear"]],"botcore.utils.channel":[[7,4,1,"","get_or_fetch_channel"],[7,4,1,"","is_in_category"]],"botcore.utils.logging":[[8,1,1,"","CustomLogger"],[8,4,1,"","get_logger"]],"botcore.utils.logging.CustomLogger":[[8,2,1,"","trace"]],"botcore.utils.members":[[9,4,1,"","get_or_fetch_member"],[9,4,1,"","handle_role_change"]],"botcore.utils.regex":[[10,5,1,"","DISCORD_INVITE"],[10,5,1,"","FORMATTED_CODE_REGEX"],[10,5,1,"","RAW_CODE_REGEX"]],"botcore.utils.scheduling":[[11,1,1,"","Scheduler"],[11,4,1,"","create_task"]],"botcore.utils.scheduling.Scheduler":[[11,2,1,"","__contains__"],[11,2,1,"","__init__"],[11,2,1,"","cancel"],[11,2,1,"","cancel_all"],[11,2,1,"","schedule"],[11,2,1,"","schedule_at"],[11,2,1,"","schedule_later"]],botcore:[[1,1,1,"","BotBase"],[1,3,1,"","StartupError"],[2,0,0,"-","async_stats"],[3,0,0,"-","exts"],[4,0,0,"-","site_api"],[5,0,0,"-","utils"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","exception","Python exception"],"4":["py","function","Python function"],"5":["py","data","Python data"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:exception","4":"py:function","5":"py:data"},terms:{"0":[6,8],"1":8,"128":6,"2":1,"204":4,"403":5,"8125":2,"class":[1,2,4,6,8,11],"do":7,"float":11,"function":[1,6,7,8,9,11],"int":[1,2,6,7,11],"long":11,"na\u00efv":11,"new":[2,4,6,11],"return":[1,2,4,5,6,7,8,9,11],"true":[4,8,11],A:[1,4,5,6,7,11],If:[1,4,11],It:5,No:4,Not:1,The:[1,2,4,6,7,8,9,11],To:[1,8],__call__:6,__contains__:11,__init__:[1,2,4,6,11],__str__:4,abstracteventloop:[2,11],act:5,ad:[5,8],add:1,add_cog:1,add_command:1,add_rol:9,after:11,aiohttp:[1,4],alia:[1,5],alias:[1,5],all:[1,2,5,11],all_command:1,all_extens:1,allow:1,allowed_rol:1,alreadi:11,also:5,an:[1,2,4,5,6,7,8,11],ani:[4,11],api:[4,9],apicli:4,appear:1,appli:[5,6],apply_monkey_patch:5,ar:[1,6],arg:[1,8],arg_offset:6,argument:[4,5,6,8,9],around:4,async:[1,2,4,6,7,9],async_rediscach:1,async_stat:[0,1],asynccach:6,asyncio:[2,11],asyncstatscli:[1,2],attempt:[1,7,9],attribut:5,authent:4,avail:1,await:[9,11],awar:11,base:[1,2,4,6,8,11],becaus:1,becom:1,befor:[1,11],being:5,block:10,bool:[4,7,11],bot:[1,5,7],botbas:1,botcor:0,cach:[1,5,7,9],calcul:11,call:[1,11],callabl:[6,9],can:11,cancel:11,cancel_al:11,cannot:1,categori:7,category_id:7,caus:5,changelog:0,channel:[1,5],channel_id:7,check:[4,7,11],clear:[1,6],client:[1,2],clientrespons:4,clientsess:[1,4],close:[1,4,11],cloudflar:5,code:10,cog:[1,3],com:1,command:[1,5,7],common:[1,5,8,10],commun:2,connect:[1,2],connector:1,constructor:4,contain:11,content:4,coro:[9,11],coroutin:[6,9,11],could:9,creat:[1,2,6,11],create_datagram_endpoint:2,create_socket:[1,2],create_task:11,current:11,custom:[6,8],customlogg:8,datetim:11,decor:6,delai:11,delet:[4,6],depend:7,dev:1,develop:[1,5],dict:4,discord:[1,3,5,7,9,10],discord_invit:10,distinguish:11,django:4,doesn:11,don:11,done:11,edit:1,either:1,elsewher:11,emit:1,empti:1,endpoint:4,ensur:1,entir:1,equival:4,error:[1,4,5,9],event:[1,2,11],event_loop:11,exc_info:8,exce:6,except:[1,4,8,11],execut:11,exist:11,expect:9,express:10,ext:[0,1,5,7],extens:1,extra:4,fail:7,failur:9,featur:1,fetch:[7,9],fifo:6,forbidden:7,format:10,formatted_code_regex:10,found:[9,11],from:[1,2,4,5,7,9,11],futur:11,gatewai:1,gener:[1,11],get:[4,7,9],get_logg:8,get_or_fetch_channel:7,get_or_fetch_memb:9,github:1,give:1,given:[1,2,7,8,9,11],group:5,guild:[1,9],guild_available_but_cache_empti:1,guild_creat:1,guild_id:1,guildchannel:7,ha:5,handl:[9,11],handle_role_chang:9,hashabl:11,have:[7,8],heavi:5,helper:[7,9],host:2,houston:8,how:[6,11],http:[1,4],http_session:1,httpexcept:7,id:[1,7,11],identifi:11,ignor:5,immedi:11,implement:[1,2,6,8],inadequ:1,index:0,indic:9,individu:1,inform:[0,8],init:[1,2],initi:[4,11],initialis:[1,6],instanc:[1,4,6,7,8,11],instanti:[1,11],instead:[1,11],intend:9,interact:7,interactin:9,interest:8,intern:[1,5],invalid:7,invaliddata:7,invit:10,is_in_categori:7,item:6,its:1,json:4,keep:11,kei:6,keyword:[4,5,8],known:11,kwarg:[1,4,8,11],level:[5,8],list:1,ll:11,load:[1,5],load_extens:1,localhost:2,log:[1,5,11],log_to_dev_log:1,logger:8,look:11,loop:[2,11],lru:6,mai:6,make:8,mani:[1,6],manual:1,match:1,max_siz:6,maximum:6,maybe_raise_for_statu:4,member:[1,5],member_id:9,mention:1,messag:[1,8,11],method:[2,4,5,8],modul:[1,11],monkei:5,msg:8,must:11,mypi:8,name:[1,5,8,11],namespac:11,non:4,none:[1,2,4,5,6,8,9,11],normal:1,notfound:7,now:11,object:[4,5,6,7,9,11],offset:6,ok:4,on_guild_avail:1,on_guild_unavail:1,on_readi:1,onc:6,one:1,onli:1,oper:[1,11],option:[1,2,4,6,8,9],order:[6,11],other:11,otherwis:11,our:5,page:0,paramet:[1,2,4,6,7,8,9,11],pass:[4,8,9,11],past:11,patch:[4,5],permiss:7,ping:1,ping_servic:1,popul:1,port:2,posit:6,post:4,prefix:2,prematur:11,prevent:11,problem:8,provid:[6,11],put:4,python:[1,11],rais:[4,7,9,11],raise_for_statu:4,rather:5,raw:10,raw_code_regex:10,re:[1,11],readi:1,receiv:[4,7],recognis:8,redis_sess:1,rediscach:1,redissess:1,regex:[1,5],regular:10,relat:[6,8],remov:1,remove_command:1,remove_rol:9,represent:4,request:4,request_text:4,requir:[1,11],resolv:1,respons:4,response_json:4,response_text:4,responsecodeerror:4,result:11,retriev:7,reusabl:3,role:[1,9],root:[1,5],root_alias:5,rout:5,run:11,s:[5,6,8,10,11],same:11,save:1,schedul:[1,5],schedule_at:11,schedule_lat:11,search:0,sebastiaanz:1,second:[1,11],self:1,send:4,send_typ:5,sequenc:5,server:10,servic:1,session:[1,4],session_kwarg:4,set:1,setup:1,setup_hook:1,sever:8,should:4,should_rais:4,site:4,site_api:[0,1],site_api_token:4,site_api_url:4,size:6,so:5,socket:2,sole:9,sourc:[1,2,4,5,6,7,8,9,10,11],start:[1,11],startup:1,startuperror:1,stat:2,statsclientbas:2,statsd:[1,2],still:1,store:[5,6],str:[2,4,8,11],string:4,sub:1,submodul:0,subpackag:0,subtract:11,suggest:11,support:[2,5,11],suppressed_except:11,t:11,target:6,task:11,task_id:11,text:4,textchannel:7,than:5,thei:1,them:[1,11],thi:[1,5,7,9,11],thrown:5,thu:1,time:11,timezon:11,token:4,tool:[1,5],top:5,trace:8,track:11,transport:2,tupl:11,two:5,type:[1,2,4,5,6,7,8,9,11],unavail:1,unawait:11,under:5,union:11,uniqu:11,unknown:7,unschedul:11,until:1,up:1,url:4,us:[1,2,4,5,7,8,9,10,11],utc:11,util:[0,1,6,8],valu:8,valueerror:4,variou:7,wa:[7,11],wait:[1,11],wait_until_guild_avail:1,warn:11,we:[8,9],when:[1,2,4,5,6,11],whether:[4,7],which:[5,11],within:1,worker:5,wrap:[6,11],wrapper:[4,11],you:7},titles:["Bot Core Project Documentation","Botcore","async_stats","Exts","site_api","Utils","caching","channel","logging","members","regex","scheduling"],titleterms:{async_stat:2,bot:0,botcor:1,cach:6,channel:7,core:0,document:0,ext:3,extra:0,log:8,member:9,modul:0,other:0,project:0,refer:0,regex:10,schedul:11,site_api:4,submodul:[1,5],subpackag:1,util:5}}) \ No newline at end of file