1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 13:34:28 +00:00

Update docs

This commit is contained in:
Steffo 2019-08-29 17:56:01 +02:00
parent 6577aa4ff6
commit 41e57bb42c
50 changed files with 2162 additions and 3913 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,70 @@
API Reference
====================================
These pages were automatically generated from docstrings in code.
They might be outdated, or incomplete.
Audio
------------------------------------
.. automodule:: royalnet.audio
:members:
:undoc-members:
:private-members:
Bots
------------------------------------
.. automodule:: royalnet.bots
:members:
:undoc-members:
:private-members:
Commands
------------------------------------
.. automodule:: royalnet.commands
:members:
:undoc-members:
:private-members:
Database
------------------------------------
.. automodule:: royalnet.database
:members:
:undoc-members:
:private-members:
Network
------------------------------------
.. automodule:: royalnet.network
:members:
:undoc-members:
:private-members:
Utils
------------------------------------
.. automodule:: royalnet.utils
:members:
:undoc-members:
:private-members:
Web
------------------------------------
.. automodule:: royalnet.web
:members:
:undoc-members:
:private-members:
Error
------------------------------------
.. automodule:: royalnet.error
:members:
:undoc-members:
:private-members:

View file

@ -1,12 +0,0 @@
royalnet.audio
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.audio
:members:
:private-members:
:undoc-members:

View file

@ -1,11 +0,0 @@
royalnet.bots
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.bots
:members:
:private-members:
:undoc-members:

View file

@ -1,11 +0,0 @@
royalnet.commands
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.commands
:members:
:private-members:
:special-members:

View file

@ -0,0 +1,66 @@
.. currentmodule:: royalnet.commands
Royalnet Commands
====================================
A Royalnet Command is a small script that is run whenever a specific message is sent to a Royalnet interface.
A Command code looks like this: ::
from royalnet.commands import Command
class PingCommand(Command):
name = "ping"
description = "Play ping-pong with the bot."
def __init__(self, interface):
# This code is run just once, while the bot is starting
super().__init__()
async def run(self, args, data):
# This code is run every time the command is called
await data.reply("Pong!")
Creating a new Command
------------------------------------
First, think of a ``name`` for your command.
It's the name your command will be called with: for example, the "spaghetti" command will be called by typing **/spaghetti** in chat.
Try to keep the name as short as possible, while staying specific enough so no other command will have the same name.
Next, create a new Python file with the ``name`` you have thought of.
The previously mentioned "spaghetti" command should have a file called ``spaghetti.py``.
Then, in the first row of the file, import the :py:class:`Command` class from :py:mod:`royalnet`, and create a new class inheriting from it: ::
from royalnet.commands import Command
class SpaghettiCommand(Command):
...
Inside the class, override the attributes ``name`` and ``description`` with respectively the **name of the command** and a **small description of what the command will do**: ::
from royalnet.commands import Command
class SpaghettiCommand(Command):
name = "spaghetti"
description = "Send a spaghetti emoji in the chat."
Now override the :py:meth:`Command.run` method, adding the code you want the bot to run when the command is called.
To send a message in the chat the command was called in, you can use the :py:meth:`CommandData.reply` method: ::
from royalnet.commands import Command
class SpaghettiCommand(Command):
name = "spaghetti"
description = "Send a spaghetti emoji in the chat."
async def run(self, args, data):
data.reply("🍝")
And it's done! The command is now ready to be used in a bot!

View file

@ -1,20 +0,0 @@
royalnet.database
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.database
:members:
:private-members:
:undoc-members:
Tables
------------------------------------
.. automodule:: royalnet.database.tables
:members:
:private-members:
:undoc-members:

View file

@ -1,11 +0,0 @@
royalnet.error
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.error
:members:
:private-members:
:undoc-members:

View file

@ -1,17 +1,13 @@
royalnet royalnet
==================================== ====================================
Welcome to the documentation of Royalnet!
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
audio creatingacommand
bots apireference
commands
database
network
utils
error
web
Some useful links Some useful links

View file

@ -1,12 +0,0 @@
royalnet.network
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.network
:members:
:private-members:
:undoc-members:

View file

@ -1,12 +0,0 @@
royalnet.utils
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.utils
:members:
:private-members:
:undoc-members:

View file

@ -1,20 +0,0 @@
royalnet.web
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.web
:members:
:private-members:
:undoc-members:
Royalprints
------------------------------------
.. automodule:: royalnet.web.royalprints
:members:
:private-members:
:undoc-members:

1389
docs/html/apireference.html Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,413 +0,0 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>royalnet.audio &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="royalnet.bots" href="bots.html" />
<link rel="prev" title="royalnet" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">royalnet.audio</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>royalnet.audio</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/audio.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-audio">
<h1>royalnet.audio<a class="headerlink" href="#royalnet-audio" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<span class="target" id="module-royalnet.audio"></span><p>Video and audio downloading related classes, mainly used for Discord voice bots.</p>
<dl class="class">
<dt id="royalnet.audio.YtdlInfo">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.audio.</code><code class="sig-name descname">YtdlInfo</code><span class="sig-paren">(</span><em class="sig-param">info: Dict[str, Any]</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlInfo" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper around youtube_dl extracted info.</p>
<dl class="method">
<dt id="royalnet.audio.YtdlInfo.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">info: Dict[str, Any]</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlInfo.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Create a YtdlInfo from the dict returned by the <code class="xref py py-func docutils literal notranslate"><span class="pre">youtube_dl.YoutubeDL.extract_info()</span></code> function.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Does not download the info, for that use <a class="reference internal" href="#royalnet.audio.YtdlInfo.retrieve_for_url" title="royalnet.audio.YtdlInfo.retrieve_for_url"><code class="xref py py-func docutils literal notranslate"><span class="pre">royalnet.audio.YtdlInfo.retrieve_for_url()</span></code></a>.</p>
</div>
</dd></dl>
<dl class="attribute">
<dt id="royalnet.audio.YtdlInfo._default_ytdl_args">
<code class="sig-name descname">_default_ytdl_args</code><em class="property"> = {'ignoreerrors': True, 'no_warnings': True, 'noplaylist': True, 'outtmpl': '%(title)s-%(id)s.%(ext)s', 'quiet': True}</em><a class="headerlink" href="#royalnet.audio.YtdlInfo._default_ytdl_args" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlInfo.retrieve_for_url">
<em class="property">classmethod </em><code class="sig-name descname">retrieve_for_url</code><span class="sig-paren">(</span><em class="sig-param">url</em>, <em class="sig-param">**ytdl_args</em><span class="sig-paren">)</span> &#x2192; List[royalnet.audio.ytdlinfo.YtdlInfo]<a class="headerlink" href="#royalnet.audio.YtdlInfo.retrieve_for_url" title="Permalink to this definition"></a></dt>
<dd><p>Fetch the info for an url through YoutubeDL.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>A <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#list" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a> containing the infos for the requested videos.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlInfo.to_discord_embed">
<code class="sig-name descname">to_discord_embed</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; discord.embeds.Embed<a class="headerlink" href="#royalnet.audio.YtdlInfo.to_discord_embed" title="Permalink to this definition"></a></dt>
<dd><p>Return this info as a <a class="reference external" href="https://discordpy.readthedocs.io/en/latest/api.html#discord.Embed" title="(in discord.py v1.3.0a)"><code class="xref py py-class docutils literal notranslate"><span class="pre">discord.Embed</span></code></a>.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.audio.YtdlFile">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.audio.</code><code class="sig-name descname">YtdlFile</code><span class="sig-paren">(</span><em class="sig-param">url: str</em>, <em class="sig-param">info: Optional[royalnet.audio.ytdlinfo.YtdlInfo] = None</em>, <em class="sig-param">filename: Optional[str] = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlFile" title="Permalink to this definition"></a></dt>
<dd><p>Information about a youtube-dl downloaded file.</p>
<dl class="attribute">
<dt id="royalnet.audio.YtdlFile._default_ytdl_args">
<code class="sig-name descname">_default_ytdl_args</code><em class="property"> = {'ignoreerrors': True, 'no_warnings': True, 'noplaylist': True, 'outtmpl': '%(epoch)s-%(title)s-%(id)s.%(ext)s', 'quiet': True}</em><a class="headerlink" href="#royalnet.audio.YtdlFile._default_ytdl_args" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlFile.delete">
<code class="sig-name descname">delete</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlFile.delete" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlFile.download_file">
<code class="sig-name descname">download_file</code><span class="sig-paren">(</span><em class="sig-param">**ytdl_args</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.audio.YtdlFile.download_file" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlFile.download_from_url">
<em class="property">classmethod </em><code class="sig-name descname">download_from_url</code><span class="sig-paren">(</span><em class="sig-param">url: str</em>, <em class="sig-param">**ytdl_args</em><span class="sig-paren">)</span> &#x2192; List[royalnet.audio.ytdlfile.YtdlFile]<a class="headerlink" href="#royalnet.audio.YtdlFile.download_from_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlFile.has_info">
<code class="sig-name descname">has_info</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; bool<a class="headerlink" href="#royalnet.audio.YtdlFile.has_info" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlFile.is_downloaded">
<code class="sig-name descname">is_downloaded</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; bool<a class="headerlink" href="#royalnet.audio.YtdlFile.is_downloaded" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlFile.open">
<code class="sig-name descname">open</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlFile.open" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlFile.update_info">
<code class="sig-name descname">update_info</code><span class="sig-paren">(</span><em class="sig-param">**ytdl_args</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.audio.YtdlFile.update_info" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.audio.FileAudioSource">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.audio.</code><code class="sig-name descname">FileAudioSource</code><span class="sig-paren">(</span><em class="sig-param">file</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.FileAudioSource" title="Permalink to this definition"></a></dt>
<dd><p>A <a class="reference external" href="https://discordpy.readthedocs.io/en/latest/api.html#discord.AudioSource" title="(in discord.py v1.3.0a)"><code class="xref py py-class docutils literal notranslate"><span class="pre">discord.AudioSource</span></code></a> that uses a <a class="reference external" href="https://docs.python.org/3.7/library/io.html#io.BufferedIOBase" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">io.BufferedIOBase</span></code></a> as an input instead of memory.</p>
<p>The stream should be in the usual PCM encoding.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This AudioSource will consume (and close) the passed stream.</p>
</div>
<dl class="method">
<dt id="royalnet.audio.FileAudioSource.is_opus">
<code class="sig-name descname">is_opus</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.FileAudioSource.is_opus" title="Permalink to this definition"></a></dt>
<dd><p>This audio file isnt Opus-encoded, but PCM-encoded.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">False</span></code>.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.audio.FileAudioSource.read">
<code class="sig-name descname">read</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.FileAudioSource.read" title="Permalink to this definition"></a></dt>
<dd><p>Reads 20ms worth of audio.</p>
<p>If the audio is complete, then returning an empty <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#bytes" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">bytes</span></code></a>-like object to signal this is the way to do so.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.audio.YtdlDiscord">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.audio.</code><code class="sig-name descname">YtdlDiscord</code><span class="sig-paren">(</span><em class="sig-param">ytdl_file: royalnet.audio.ytdlfile.YtdlFile</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlDiscord" title="Permalink to this definition"></a></dt>
<dd><dl class="method">
<dt id="royalnet.audio.YtdlDiscord.convert_to_pcm">
<code class="sig-name descname">convert_to_pcm</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.audio.YtdlDiscord.convert_to_pcm" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlDiscord.create_and_ready_from_url">
<em class="property">classmethod </em><code class="sig-name descname">create_and_ready_from_url</code><span class="sig-paren">(</span><em class="sig-param">url</em>, <em class="sig-param">**ytdl_args</em><span class="sig-paren">)</span> &#x2192; List[royalnet.audio.ytdldiscord.YtdlDiscord]<a class="headerlink" href="#royalnet.audio.YtdlDiscord.create_and_ready_from_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlDiscord.create_from_url">
<em class="property">classmethod </em><code class="sig-name descname">create_from_url</code><span class="sig-paren">(</span><em class="sig-param">url</em>, <em class="sig-param">**ytdl_args</em><span class="sig-paren">)</span> &#x2192; List[royalnet.audio.ytdldiscord.YtdlDiscord]<a class="headerlink" href="#royalnet.audio.YtdlDiscord.create_from_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlDiscord.delete">
<code class="sig-name descname">delete</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.audio.YtdlDiscord.delete" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlDiscord.info">
<em class="property">property </em><code class="sig-name descname">info</code><a class="headerlink" href="#royalnet.audio.YtdlDiscord.info" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlDiscord.pcm_available">
<code class="sig-name descname">pcm_available</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlDiscord.pcm_available" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlDiscord.ready_up">
<code class="sig-name descname">ready_up</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlDiscord.ready_up" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlDiscord.spawn_audiosource">
<code class="sig-name descname">spawn_audiosource</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; royalnet.audio.fileaudiosource.FileAudioSource<a class="headerlink" href="#royalnet.audio.YtdlDiscord.spawn_audiosource" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.audio.YtdlMp3">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.audio.</code><code class="sig-name descname">YtdlMp3</code><span class="sig-paren">(</span><em class="sig-param">ytdl_file: royalnet.audio.ytdlfile.YtdlFile</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlMp3" title="Permalink to this definition"></a></dt>
<dd><dl class="method">
<dt id="royalnet.audio.YtdlMp3.convert_to_mp3">
<code class="sig-name descname">convert_to_mp3</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.audio.YtdlMp3.convert_to_mp3" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlMp3.create_and_ready_from_url">
<em class="property">classmethod </em><code class="sig-name descname">create_and_ready_from_url</code><span class="sig-paren">(</span><em class="sig-param">url</em>, <em class="sig-param">**ytdl_args</em><span class="sig-paren">)</span> &#x2192; List[royalnet.audio.ytdlmp3.YtdlMp3]<a class="headerlink" href="#royalnet.audio.YtdlMp3.create_and_ready_from_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlMp3.create_from_url">
<em class="property">classmethod </em><code class="sig-name descname">create_from_url</code><span class="sig-paren">(</span><em class="sig-param">url</em>, <em class="sig-param">**ytdl_args</em><span class="sig-paren">)</span> &#x2192; List[royalnet.audio.ytdlmp3.YtdlMp3]<a class="headerlink" href="#royalnet.audio.YtdlMp3.create_from_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlMp3.delete">
<code class="sig-name descname">delete</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.audio.YtdlMp3.delete" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlMp3.info">
<em class="property">property </em><code class="sig-name descname">info</code><a class="headerlink" href="#royalnet.audio.YtdlMp3.info" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlMp3.pcm_available">
<code class="sig-name descname">pcm_available</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlMp3.pcm_available" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.audio.YtdlMp3.ready_up">
<code class="sig-name descname">ready_up</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.audio.YtdlMp3.ready_up" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="bots.html" class="btn btn-neutral float-right" title="royalnet.bots" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="index.html" class="btn btn-neutral float-left" title="royalnet" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -1,388 +0,0 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>royalnet.bots &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="royalnet.commands" href="commands.html" />
<link rel="prev" title="royalnet.audio" href="audio.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">royalnet.bots</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>royalnet.bots</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/bots.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-bots">
<h1>royalnet.bots<a class="headerlink" href="#royalnet-bots" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<span class="target" id="module-royalnet.bots"></span><p>Various bot interfaces, and a generic class to create new ones.</p>
<dl class="class">
<dt id="royalnet.bots.TelegramBot">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.bots.</code><code class="sig-name descname">TelegramBot</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">telegram_config: royalnet.bots.telegram.TelegramConfig</em>, <em class="sig-param">royalnet_config: Optional[royalnet.network.royalnetconfig.RoyalnetConfig] = None</em>, <em class="sig-param">database_config: Optional[royalnet.database.databaseconfig.DatabaseConfig] = None</em>, <em class="sig-param">commands: List[Type[royalnet.commands.command.Command]] = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.TelegramBot" title="Permalink to this definition"></a></dt>
<dd><p>A bot that connects to <a class="reference external" href="https://telegram.org/">Telegram</a>.</p>
<dl class="method">
<dt id="royalnet.bots.TelegramBot._data_factory">
<code class="sig-name descname">_data_factory</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; Type[royalnet.commands.commanddata.CommandData]<a class="headerlink" href="#royalnet.bots.TelegramBot._data_factory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.TelegramBot._handle_update">
<em class="property">async </em><code class="sig-name descname">_handle_update</code><span class="sig-paren">(</span><em class="sig-param">update: telegram.update.Update</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.TelegramBot._handle_update" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.TelegramBot._init_client">
<code class="sig-name descname">_init_client</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.TelegramBot._init_client" title="Permalink to this definition"></a></dt>
<dd><p>Create the <a class="reference external" href="https://python-telegram-bot.readthedocs.io/en/stable/telegram.bot.html#telegram.Bot" title="(in Python Telegram Bot v11.1)"><code class="xref py py-class docutils literal notranslate"><span class="pre">telegram.Bot</span></code></a>, and set the starting offset.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.TelegramBot._interface_factory">
<code class="sig-name descname">_interface_factory</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; Type[royalnet.commands.commandinterface.CommandInterface]<a class="headerlink" href="#royalnet.bots.TelegramBot._interface_factory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.bots.TelegramBot.interface_name">
<code class="sig-name descname">interface_name</code><em class="property"> = 'telegram'</em><a class="headerlink" href="#royalnet.bots.TelegramBot.interface_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.TelegramBot.run">
<em class="property">async </em><code class="sig-name descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.TelegramBot.run" title="Permalink to this definition"></a></dt>
<dd><p>A blocking coroutine that should make the bot start listening to commands and requests.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.bots.TelegramConfig">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.bots.</code><code class="sig-name descname">TelegramConfig</code><span class="sig-paren">(</span><em class="sig-param">token: str</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.TelegramConfig" title="Permalink to this definition"></a></dt>
<dd><p>The specific configuration to be used for <code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.database.TelegramBot</span></code>.</p>
</dd></dl>
<dl class="class">
<dt id="royalnet.bots.DiscordBot">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.bots.</code><code class="sig-name descname">DiscordBot</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">discord_config: royalnet.bots.discord.DiscordConfig</em>, <em class="sig-param">royalnet_config: Optional[royalnet.network.royalnetconfig.RoyalnetConfig] = None</em>, <em class="sig-param">database_config: Optional[royalnet.database.databaseconfig.DatabaseConfig] = None</em>, <em class="sig-param">commands: List[Type[royalnet.commands.command.Command]] = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.DiscordBot" title="Permalink to this definition"></a></dt>
<dd><p>A bot that connects to <a class="reference external" href="https://discordapp.com/">Discord</a>.</p>
<dl class="method">
<dt id="royalnet.bots.DiscordBot._bot_factory">
<code class="sig-name descname">_bot_factory</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; Type[discord.client.Client]<a class="headerlink" href="#royalnet.bots.DiscordBot._bot_factory" title="Permalink to this definition"></a></dt>
<dd><p>Create a custom DiscordClient class inheriting from <a class="reference external" href="https://discordpy.readthedocs.io/en/latest/api.html#discord.Client" title="(in discord.py v1.3.0a)"><code class="xref py py-class docutils literal notranslate"><span class="pre">discord.Client</span></code></a>.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.DiscordBot._data_factory">
<code class="sig-name descname">_data_factory</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; Type[royalnet.commands.commanddata.CommandData]<a class="headerlink" href="#royalnet.bots.DiscordBot._data_factory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.DiscordBot._init_client">
<code class="sig-name descname">_init_client</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.DiscordBot._init_client" title="Permalink to this definition"></a></dt>
<dd><p>Create an instance of the DiscordClient class created in <a class="reference internal" href="#royalnet.bots.DiscordBot._bot_factory" title="royalnet.bots.DiscordBot._bot_factory"><code class="xref py py-func docutils literal notranslate"><span class="pre">royalnet.bots.DiscordBot._bot_factory()</span></code></a>.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.DiscordBot._init_voice">
<code class="sig-name descname">_init_voice</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.DiscordBot._init_voice" title="Permalink to this definition"></a></dt>
<dd><p>Initialize the variables needed for the connection to voice chat.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.DiscordBot._interface_factory">
<code class="sig-name descname">_interface_factory</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; Type[royalnet.commands.commandinterface.CommandInterface]<a class="headerlink" href="#royalnet.bots.DiscordBot._interface_factory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.DiscordBot.add_to_music_data">
<em class="property">async </em><code class="sig-name descname">add_to_music_data</code><span class="sig-paren">(</span><em class="sig-param">dfiles: List[royalnet.audio.ytdldiscord.YtdlDiscord], guild: discord.guild.Guild</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.DiscordBot.add_to_music_data" title="Permalink to this definition"></a></dt>
<dd><p>Add a list of <a class="reference internal" href="audio.html#royalnet.audio.YtdlDiscord" title="royalnet.audio.YtdlDiscord"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.audio.YtdlDiscord</span></code></a> to the corresponding music_data object.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.DiscordBot.advance_music_data">
<em class="property">async </em><code class="sig-name descname">advance_music_data</code><span class="sig-paren">(</span><em class="sig-param">guild: discord.guild.Guild</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.DiscordBot.advance_music_data" title="Permalink to this definition"></a></dt>
<dd><p>Try to play the next song, while it exists. Otherwise, just return.</p>
</dd></dl>
<dl class="attribute">
<dt id="royalnet.bots.DiscordBot.interface_name">
<code class="sig-name descname">interface_name</code><em class="property"> = 'discord'</em><a class="headerlink" href="#royalnet.bots.DiscordBot.interface_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.DiscordBot.run">
<em class="property">async </em><code class="sig-name descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.DiscordBot.run" title="Permalink to this definition"></a></dt>
<dd><p>Login to Discord, then run the bot.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.DiscordBot.update_activity_with_source_title">
<em class="property">async </em><code class="sig-name descname">update_activity_with_source_title</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.DiscordBot.update_activity_with_source_title" title="Permalink to this definition"></a></dt>
<dd><p>Change the bots presence (using <code class="xref py py-func docutils literal notranslate"><span class="pre">discord.Client.change_presence()</span></code>) to match the current listening status.</p>
<p>If multiple guilds are using the bot, the bot will always have an empty presence.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.bots.DiscordConfig">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.bots.</code><code class="sig-name descname">DiscordConfig</code><span class="sig-paren">(</span><em class="sig-param">token: str</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.DiscordConfig" title="Permalink to this definition"></a></dt>
<dd><p>The specific configuration to be used for <a class="reference internal" href="#royalnet.bots.DiscordBot" title="royalnet.bots.DiscordBot"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.bots.DiscordBot</span></code></a>.</p>
</dd></dl>
<dl class="class">
<dt id="royalnet.bots.GenericBot">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.bots.</code><code class="sig-name descname">GenericBot</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">royalnet_config: Optional[royalnet.network.royalnetconfig.RoyalnetConfig] = None</em>, <em class="sig-param">database_config: Optional[royalnet.database.databaseconfig.DatabaseConfig] = None</em>, <em class="sig-param">commands: List[Type[royalnet.commands.command.Command]] = None</em>, <em class="sig-param">loop: asyncio.events.AbstractEventLoop = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.GenericBot" title="Permalink to this definition"></a></dt>
<dd><p>A generic bot class, to be used as base for the other more specific classes, such as
<span class="xref std std-ref">royalnet.bots.TelegramBot</span> and <span class="xref std std-ref">royalnet.bots.DiscordBot</span>.</p>
<dl class="method">
<dt id="royalnet.bots.GenericBot._data_factory">
<code class="sig-name descname">_data_factory</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; Type[royalnet.commands.commanddata.CommandData]<a class="headerlink" href="#royalnet.bots.GenericBot._data_factory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.GenericBot._init_commands">
<code class="sig-name descname">_init_commands</code><span class="sig-paren">(</span><em class="sig-param">commands: List[Type[royalnet.commands.command.Command]]</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.bots.GenericBot._init_commands" title="Permalink to this definition"></a></dt>
<dd><p>Generate the <code class="docutils literal notranslate"><span class="pre">commands</span></code> dictionary required to handle incoming messages, and the <code class="docutils literal notranslate"><span class="pre">network_handlers</span></code>
dictionary required to handle incoming requests.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.GenericBot._init_database">
<code class="sig-name descname">_init_database</code><span class="sig-paren">(</span><em class="sig-param">commands: List[Type[royalnet.commands.command.Command]], database_config: royalnet.database.databaseconfig.DatabaseConfig</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.GenericBot._init_database" title="Permalink to this definition"></a></dt>
<dd><p>Create an <a class="reference internal" href="database.html#royalnet.database.Alchemy" title="royalnet.database.Alchemy"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.database.Alchemy</span></code></a> with the tables required by the commands. Then,
find the chain that links the <code class="docutils literal notranslate"><span class="pre">master_table</span></code> to the <code class="docutils literal notranslate"><span class="pre">identity_table</span></code>.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.GenericBot._init_royalnet">
<code class="sig-name descname">_init_royalnet</code><span class="sig-paren">(</span><em class="sig-param">royalnet_config: royalnet.network.royalnetconfig.RoyalnetConfig</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.GenericBot._init_royalnet" title="Permalink to this definition"></a></dt>
<dd><p>Create a <a class="reference internal" href="network.html#royalnet.network.RoyalnetLink" title="royalnet.network.RoyalnetLink"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetLink</span></code></a>, and run it as a <a class="reference external" href="https://docs.python.org/3.7/library/asyncio-task.html#asyncio.Task" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">asyncio.Task</span></code></a>.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.bots.GenericBot._interface_factory">
<code class="sig-name descname">_interface_factory</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; Type[royalnet.commands.commandinterface.CommandInterface]<a class="headerlink" href="#royalnet.bots.GenericBot._interface_factory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.GenericBot._network_handler">
<em class="property">async </em><code class="sig-name descname">_network_handler</code><span class="sig-paren">(</span><em class="sig-param">request_dict: dict</em><span class="sig-paren">)</span> &#x2192; dict<a class="headerlink" href="#royalnet.bots.GenericBot._network_handler" title="Permalink to this definition"></a></dt>
<dd><p>Handle a single <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#dict" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></a> received from the <a class="reference internal" href="network.html#royalnet.network.RoyalnetLink" title="royalnet.network.RoyalnetLink"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetLink</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Another <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#dict" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></a>, formatted as a <a class="reference internal" href="network.html#royalnet.network.Response" title="royalnet.network.Response"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.Response</span></code></a>.</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="royalnet.bots.GenericBot.interface_name">
<code class="sig-name descname">interface_name</code><em class="property"> = NotImplemented</em><a class="headerlink" href="#royalnet.bots.GenericBot.interface_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.bots.GenericBot.run">
<em class="property">async </em><code class="sig-name descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.bots.GenericBot.run" title="Permalink to this definition"></a></dt>
<dd><p>A blocking coroutine that should make the bot start listening to commands and requests.</p>
</dd></dl>
</dd></dl>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="commands.html" class="btn btn-neutral float-right" title="royalnet.commands" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="audio.html" class="btn btn-neutral float-left" title="royalnet.audio" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -1,288 +0,0 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>royalnet.commands &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="royalnet.database" href="database.html" />
<link rel="prev" title="royalnet.bots" href="bots.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">royalnet.commands</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>royalnet.commands</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/commands.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-commands">
<h1>royalnet.commands<a class="headerlink" href="#royalnet-commands" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<span class="target" id="module-royalnet.commands"></span><dl class="class">
<dt id="royalnet.commands.CommandArgs">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.commands.</code><code class="sig-name descname">CommandArgs</code><a class="headerlink" href="#royalnet.commands.CommandArgs" title="Permalink to this definition"></a></dt>
<dd><p>An interface to access the arguments of a command with ease.</p>
<dl class="method">
<dt id="royalnet.commands.CommandArgs.__getitem__">
<code class="sig-name descname">__getitem__</code><span class="sig-paren">(</span><em class="sig-param">item</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.commands.CommandArgs.__getitem__" title="Permalink to this definition"></a></dt>
<dd><p>Arguments can be accessed with an array notation, such as <code class="docutils literal notranslate"><span class="pre">args[0]</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Raises</dt>
<dd class="field-odd"><p><a class="reference internal" href="error.html#royalnet.error.InvalidInputError" title="royalnet.error.InvalidInputError"><strong>royalnet.error.InvalidInputError</strong></a> if the requested argument does not exist.</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="royalnet.commands.CommandArgs.__weakref__">
<code class="sig-name descname">__weakref__</code><a class="headerlink" href="#royalnet.commands.CommandArgs.__weakref__" title="Permalink to this definition"></a></dt>
<dd><p>list of weak references to the object (if defined)</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.commands.CommandArgs.joined">
<code class="sig-name descname">joined</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">require_at_least=0</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.commands.CommandArgs.joined" title="Permalink to this definition"></a></dt>
<dd><p>Get the arguments as a space-joined string.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>require_at_least</strong> the minimum amount of arguments required, will raise <a class="reference internal" href="error.html#royalnet.error.InvalidInputError" title="royalnet.error.InvalidInputError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">royalnet.error.InvalidInputError</span></code></a> if the requirement is not fullfilled.</p>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><a class="reference internal" href="error.html#royalnet.error.InvalidInputError" title="royalnet.error.InvalidInputError"><strong>royalnet.error.InvalidInputError</strong></a> if there are less than <code class="docutils literal notranslate"><span class="pre">require_at_least</span></code> arguments.</p>
</dd>
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The space-joined string.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.commands.CommandArgs.match">
<code class="sig-name descname">match</code><span class="sig-paren">(</span><em class="sig-param">pattern: Union[str, Pattern]</em><span class="sig-paren">)</span> &#x2192; Sequence[AnyStr]<a class="headerlink" href="#royalnet.commands.CommandArgs.match" title="Permalink to this definition"></a></dt>
<dd><p>Match the <code class="xref py py-func docutils literal notranslate"><span class="pre">royalnet.utils.commandargs.joined()</span></code> to a regex pattern.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>pattern</strong> The regex pattern to be passed to <a class="reference external" href="https://docs.python.org/3.7/library/re.html#re.match" title="(in Python v3.7)"><code class="xref py py-func docutils literal notranslate"><span class="pre">re.match()</span></code></a>.</p>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><a class="reference internal" href="error.html#royalnet.error.InvalidInputError" title="royalnet.error.InvalidInputError"><strong>royalnet.error.InvalidInputError</strong></a> if the pattern doesnt match.</p>
</dd>
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The matched groups, as returned by <code class="xref py py-func docutils literal notranslate"><span class="pre">re.Match.groups()</span></code>.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.commands.CommandArgs.optional">
<code class="sig-name descname">optional</code><span class="sig-paren">(</span><em class="sig-param">index: int</em>, <em class="sig-param">default=None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.commands.CommandArgs.optional" title="Permalink to this definition"></a></dt>
<dd><p>Get the argument at a specific index, but dont raise an error if nothing is found, instead returning the <code class="docutils literal notranslate"><span class="pre">default</span></code> value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>index</strong> The index of the argument you want to retrieve.</p></li>
<li><p><strong>default</strong> The value returned if the argument is missing.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Either the argument or the <code class="docutils literal notranslate"><span class="pre">default</span></code> value, defaulting to <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="database.html" class="btn btn-neutral float-right" title="royalnet.database" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="bots.html" class="btn btn-neutral float-left" title="royalnet.bots" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,263 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Royalnet Commands &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="API Reference" href="apireference.html" />
<link rel="prev" title="royalnet" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Royalnet Commands</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#creating-a-new-command">Creating a new Command</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="apireference.html">API Reference</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Royalnet Commands</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/creatingacommand.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-commands">
<h1>Royalnet Commands<a class="headerlink" href="#royalnet-commands" title="Permalink to this headline"></a></h1>
<p>A Royalnet Command is a small script that is run whenever a specific message is sent to a Royalnet interface.</p>
<p>A Command code looks like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">royalnet.commands</span> <span class="k">import</span> <span class="n">Command</span>
<span class="k">class</span> <span class="nc">PingCommand</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;ping&quot;</span>
<span class="n">description</span> <span class="o">=</span> <span class="s2">&quot;Play ping-pong with the bot.&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interface</span><span class="p">):</span>
<span class="c1"># This code is run just once, while the bot is starting</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
<span class="k">async</span> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="c1"># This code is run every time the command is called</span>
<span class="k">await</span> <span class="n">data</span><span class="o">.</span><span class="n">reply</span><span class="p">(</span><span class="s2">&quot;Pong!&quot;</span><span class="p">)</span>
</pre></div>
</div>
<div class="section" id="creating-a-new-command">
<h2>Creating a new Command<a class="headerlink" href="#creating-a-new-command" title="Permalink to this headline"></a></h2>
<p>First, think of a <code class="docutils literal notranslate"><span class="pre">name</span></code> for your command.
Its the name your command will be called with: for example, the “spaghetti” command will be called by typing <strong>/spaghetti</strong> in chat.
Try to keep the name as short as possible, while staying specific enough so no other command will have the same name.</p>
<p>Next, create a new Python file with the <code class="docutils literal notranslate"><span class="pre">name</span></code> you have thought of.
The previously mentioned “spaghetti” command should have a file called <code class="docutils literal notranslate"><span class="pre">spaghetti.py</span></code>.</p>
<p>Then, in the first row of the file, import the <a class="reference internal" href="apireference.html#royalnet.commands.Command" title="royalnet.commands.Command"><code class="xref py py-class docutils literal notranslate"><span class="pre">Command</span></code></a> class from <code class="xref py py-mod docutils literal notranslate"><span class="pre">royalnet</span></code>, and create a new class inheriting from it:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">royalnet.commands</span> <span class="k">import</span> <span class="n">Command</span>
<span class="k">class</span> <span class="nc">SpaghettiCommand</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p>Inside the class, override the attributes <code class="docutils literal notranslate"><span class="pre">name</span></code> and <code class="docutils literal notranslate"><span class="pre">description</span></code> with respectively the <strong>name of the command</strong> and a <strong>small description of what the command will do</strong>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">royalnet.commands</span> <span class="k">import</span> <span class="n">Command</span>
<span class="k">class</span> <span class="nc">SpaghettiCommand</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;spaghetti&quot;</span>
<span class="n">description</span> <span class="o">=</span> <span class="s2">&quot;Send a spaghetti emoji in the chat.&quot;</span>
</pre></div>
</div>
<p>Now override the <a class="reference internal" href="apireference.html#royalnet.commands.Command.run" title="royalnet.commands.Command.run"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Command.run()</span></code></a> method, adding the code you want the bot to run when the command is called.</p>
<p>To send a message in the chat the command was called in, you can use the <a class="reference internal" href="apireference.html#royalnet.commands.CommandData.reply" title="royalnet.commands.CommandData.reply"><code class="xref py py-meth docutils literal notranslate"><span class="pre">CommandData.reply()</span></code></a> method:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">royalnet.commands</span> <span class="k">import</span> <span class="n">Command</span>
<span class="k">class</span> <span class="nc">SpaghettiCommand</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;spaghetti&quot;</span>
<span class="n">description</span> <span class="o">=</span> <span class="s2">&quot;Send a spaghetti emoji in the chat.&quot;</span>
<span class="k">async</span> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="n">data</span><span class="o">.</span><span class="n">reply</span><span class="p">(</span><span class="s2">&quot;🍝&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>And its done! The command is now ready to be used in a bot!</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="apireference.html" class="btn btn-neutral float-right" title="API Reference" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="index.html" class="btn btn-neutral float-left" title="royalnet" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -1,738 +0,0 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>royalnet.database &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="royalnet.network" href="network.html" />
<link rel="prev" title="royalnet.commands" href="commands.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">royalnet.database</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#module-royalnet.database.tables">Tables</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>royalnet.database</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/database.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-database">
<h1>royalnet.database<a class="headerlink" href="#royalnet-database" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<span class="target" id="module-royalnet.database"></span><p>Relational database classes and methods.</p>
<dl class="class">
<dt id="royalnet.database.Alchemy">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.</code><code class="sig-name descname">Alchemy</code><span class="sig-paren">(</span><em class="sig-param">database_uri: str</em>, <em class="sig-param">tables: Set</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.database.Alchemy" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper around SQLAlchemy declarative that allows to use multiple databases at once while maintaining a single table-class for both of them.</p>
<dl class="method">
<dt id="royalnet.database.Alchemy.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">database_uri: str</em>, <em class="sig-param">tables: Set</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.database.Alchemy.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Create a new Alchemy object.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>database_uri</strong> The uri of the database, as described at <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/engines.html">https://docs.sqlalchemy.org/en/13/core/engines.html</a> .</p></li>
<li><p><strong>tables</strong> The set of tables to be created and used in the selected database. Check the tables submodule for more details.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.database.Alchemy._create_tables">
<code class="sig-name descname">_create_tables</code><span class="sig-paren">(</span><em class="sig-param">tables: Set</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.database.Alchemy._create_tables" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.database.Alchemy.session_acm">
<code class="sig-name descname">session_acm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.database.Alchemy.session_acm" title="Permalink to this definition"></a></dt>
<dd><p>Use Alchemy as a asyncronous context manager (to be used in async with statements).</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.database.Alchemy.session_cm">
<code class="sig-name descname">session_cm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.database.Alchemy.session_cm" title="Permalink to this definition"></a></dt>
<dd><p>Use Alchemy as a context manager (to be used in with statements).</p>
</dd></dl>
</dd></dl>
<dl class="function">
<dt id="royalnet.database.relationshiplinkchain">
<code class="sig-prename descclassname">royalnet.database.</code><code class="sig-name descname">relationshiplinkchain</code><span class="sig-paren">(</span><em class="sig-param">starting_class</em>, <em class="sig-param">ending_class</em><span class="sig-paren">)</span> &#x2192; Optional[tuple]<a class="headerlink" href="#royalnet.database.relationshiplinkchain" title="Permalink to this definition"></a></dt>
<dd><p>Find the path to follow to get from the starting table to the ending table.</p>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.DatabaseConfig">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.</code><code class="sig-name descname">DatabaseConfig</code><span class="sig-paren">(</span><em class="sig-param">database_uri: str</em>, <em class="sig-param">master_table: Type</em>, <em class="sig-param">identity_table: Type</em>, <em class="sig-param">identity_column_name: str</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.database.DatabaseConfig" title="Permalink to this definition"></a></dt>
<dd><p>The configuration to be used for the <span class="xref std std-ref">royalnet.database.Alchemy</span> component of <span class="xref std std-ref">royalnet.bots.GenericBot</span>.</p>
</dd></dl>
<div class="section" id="module-royalnet.database.tables">
<span id="tables"></span><h2>Tables<a class="headerlink" href="#module-royalnet.database.tables" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="royalnet.database.tables.Royal">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Royal</code><a class="headerlink" href="#royalnet.database.tables.Royal" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Royal.avatar">
<code class="sig-name descname">avatar</code><em class="property"> = Column(None, LargeBinary(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Royal.avatar" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Royal.password">
<code class="sig-name descname">password</code><em class="property"> = Column(None, LargeBinary(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Royal.password" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Royal.role">
<code class="sig-name descname">role</code><em class="property"> = Column(None, String(), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Royal.role" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Royal.uid">
<code class="sig-name descname">uid</code><em class="property"> = Column(None, Integer(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Royal.uid" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Royal.username">
<code class="sig-name descname">username</code><em class="property"> = Column(None, String(), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Royal.username" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Telegram">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Telegram</code><a class="headerlink" href="#royalnet.database.tables.Telegram" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Telegram.first_name">
<code class="sig-name descname">first_name</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Telegram.first_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Telegram.last_name">
<code class="sig-name descname">last_name</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Telegram.last_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.database.tables.Telegram.mention">
<code class="sig-name descname">mention</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.database.tables.Telegram.mention" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Telegram.royal">
<code class="sig-name descname">royal</code><em class="property"> = &lt;RelationshipProperty at 0x77b4108; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.Telegram.royal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Telegram.royal_id">
<code class="sig-name descname">royal_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Telegram.royal_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Telegram.tg_id">
<code class="sig-name descname">tg_id</code><em class="property"> = Column(None, BigInteger(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Telegram.tg_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Telegram.username">
<code class="sig-name descname">username</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Telegram.username" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Diario">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Diario</code><a class="headerlink" href="#royalnet.database.tables.Diario" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Diario.context">
<code class="sig-name descname">context</code><em class="property"> = Column(None, Text(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Diario.context" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.creator">
<code class="sig-name descname">creator</code><em class="property"> = &lt;RelationshipProperty at 0x77b4348; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.Diario.creator" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.creator_id">
<code class="sig-name descname">creator_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Diario.creator_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.diario_id">
<code class="sig-name descname">diario_id</code><em class="property"> = Column(None, Integer(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Diario.diario_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.media_url">
<code class="sig-name descname">media_url</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Diario.media_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.quoted">
<code class="sig-name descname">quoted</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Diario.quoted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.quoted_account">
<code class="sig-name descname">quoted_account</code><em class="property"> = &lt;RelationshipProperty at 0x77b45d0; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.Diario.quoted_account" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.quoted_account_id">
<code class="sig-name descname">quoted_account_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Diario.quoted_account_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.spoiler">
<code class="sig-name descname">spoiler</code><em class="property"> = Column(None, Boolean(), table=None, default=ColumnDefault(False))</em><a class="headerlink" href="#royalnet.database.tables.Diario.spoiler" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.text">
<code class="sig-name descname">text</code><em class="property"> = Column(None, Text(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Diario.text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Diario.timestamp">
<code class="sig-name descname">timestamp</code><em class="property"> = Column(None, DateTime(), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Diario.timestamp" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Alias">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Alias</code><a class="headerlink" href="#royalnet.database.tables.Alias" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Alias.alias">
<code class="sig-name descname">alias</code><em class="property"> = Column(None, String(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Alias.alias" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Alias.royal">
<code class="sig-name descname">royal</code><em class="property"> = &lt;RelationshipProperty at 0x77b4300; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.Alias.royal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Alias.royal_id">
<code class="sig-name descname">royal_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Alias.royal_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.ActiveKvGroup">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">ActiveKvGroup</code><a class="headerlink" href="#royalnet.database.tables.ActiveKvGroup" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.ActiveKvGroup.group">
<code class="sig-name descname">group</code><em class="property"> = &lt;RelationshipProperty at 0x7733f18; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.ActiveKvGroup.group" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.ActiveKvGroup.group_name">
<code class="sig-name descname">group_name</code><em class="property"> = Column(None, String(), ForeignKey('keygroups.group_name'), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.ActiveKvGroup.group_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.ActiveKvGroup.royal">
<code class="sig-name descname">royal</code><em class="property"> = &lt;RelationshipProperty at 0x77b4300; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.ActiveKvGroup.royal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.ActiveKvGroup.royal_id">
<code class="sig-name descname">royal_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.ActiveKvGroup.royal_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Keyvalue">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Keyvalue</code><a class="headerlink" href="#royalnet.database.tables.Keyvalue" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Keyvalue.group">
<code class="sig-name descname">group</code><em class="property"> = &lt;RelationshipProperty at 0x77b4660; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.Keyvalue.group" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Keyvalue.group_name">
<code class="sig-name descname">group_name</code><em class="property"> = Column(None, String(), ForeignKey('keygroups.group_name'), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Keyvalue.group_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Keyvalue.key">
<code class="sig-name descname">key</code><em class="property"> = Column(None, String(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Keyvalue.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Keyvalue.value">
<code class="sig-name descname">value</code><em class="property"> = Column(None, String(), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Keyvalue.value" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Keygroup">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Keygroup</code><a class="headerlink" href="#royalnet.database.tables.Keygroup" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Keygroup.group_name">
<code class="sig-name descname">group_name</code><em class="property"> = Column(None, String(), ForeignKey('keygroups.group_name'), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Keygroup.group_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Discord">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Discord</code><a class="headerlink" href="#royalnet.database.tables.Discord" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Discord.avatar_hash">
<code class="sig-name descname">avatar_hash</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Discord.avatar_hash" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Discord.discord_id">
<code class="sig-name descname">discord_id</code><em class="property"> = Column(None, BigInteger(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Discord.discord_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Discord.discriminator">
<code class="sig-name descname">discriminator</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Discord.discriminator" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.database.tables.Discord.full_username">
<code class="sig-name descname">full_username</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.database.tables.Discord.full_username" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Discord.royal">
<code class="sig-name descname">royal</code><em class="property"> = &lt;RelationshipProperty at 0x77b45d0; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.Discord.royal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Discord.royal_id">
<code class="sig-name descname">royal_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Discord.royal_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Discord.username">
<code class="sig-name descname">username</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Discord.username" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.WikiPage">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">WikiPage</code><a class="headerlink" href="#royalnet.database.tables.WikiPage" title="Permalink to this definition"></a></dt>
<dd><p>Wiki page properties.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Requires PostgreSQL!</p>
</div>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiPage.contents">
<code class="sig-name descname">contents</code><em class="property"> = Column(None, Text(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.WikiPage.contents" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiPage.css">
<code class="sig-name descname">css</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.WikiPage.css" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiPage.format">
<code class="sig-name descname">format</code><em class="property"> = Column(None, String(), table=None, nullable=False, default=ColumnDefault('markdown'))</em><a class="headerlink" href="#royalnet.database.tables.WikiPage.format" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiPage.page_id">
<code class="sig-name descname">page_id</code><em class="property"> = Column(None, UUID(as_uuid=True), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.WikiPage.page_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.database.tables.WikiPage.page_short_id">
<em class="property">property </em><code class="sig-name descname">page_short_id</code><a class="headerlink" href="#royalnet.database.tables.WikiPage.page_short_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiPage.title">
<code class="sig-name descname">title</code><em class="property"> = Column(None, String(), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.WikiPage.title" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.WikiRevision">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">WikiRevision</code><a class="headerlink" href="#royalnet.database.tables.WikiRevision" title="Permalink to this definition"></a></dt>
<dd><p>A wiki page revision.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Requires PostgreSQL!</p>
</div>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiRevision.author">
<code class="sig-name descname">author</code><em class="property"> = &lt;RelationshipProperty at 0x77b4738; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.WikiRevision.author" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiRevision.author_id">
<code class="sig-name descname">author_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.WikiRevision.author_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiRevision.diff">
<code class="sig-name descname">diff</code><em class="property"> = Column(None, Text(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.WikiRevision.diff" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiRevision.page">
<code class="sig-name descname">page</code><em class="property"> = &lt;RelationshipProperty at 0x77b4150; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.WikiRevision.page" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiRevision.page_id">
<code class="sig-name descname">page_id</code><em class="property"> = Column(None, UUID(as_uuid=True), ForeignKey('wikipages.page_id'), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.WikiRevision.page_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiRevision.reason">
<code class="sig-name descname">reason</code><em class="property"> = Column(None, Text(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.WikiRevision.reason" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiRevision.revision_id">
<code class="sig-name descname">revision_id</code><em class="property"> = Column(None, UUID(as_uuid=True), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.WikiRevision.revision_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.WikiRevision.timestamp">
<code class="sig-name descname">timestamp</code><em class="property"> = Column(None, DateTime(), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.WikiRevision.timestamp" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Medal">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Medal</code><a class="headerlink" href="#royalnet.database.tables.Medal" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Medal.classes">
<code class="sig-name descname">classes</code><em class="property"> = Column(None, String(), table=None, nullable=False, default=ColumnDefault(''))</em><a class="headerlink" href="#royalnet.database.tables.Medal.classes" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Medal.description">
<code class="sig-name descname">description</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Medal.description" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Medal.icon">
<code class="sig-name descname">icon</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Medal.icon" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Medal.mid">
<code class="sig-name descname">mid</code><em class="property"> = Column(None, Integer(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Medal.mid" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Medal.name">
<code class="sig-name descname">name</code><em class="property"> = Column(None, String(), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Medal.name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Medal.score">
<code class="sig-name descname">score</code><em class="property"> = Column(None, Integer(), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Medal.score" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.MedalAward">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">MedalAward</code><a class="headerlink" href="#royalnet.database.tables.MedalAward" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.MedalAward.award_id">
<code class="sig-name descname">award_id</code><em class="property"> = Column(None, Integer(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.MedalAward.award_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.MedalAward.date">
<code class="sig-name descname">date</code><em class="property"> = Column(None, DateTime(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.MedalAward.date" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.MedalAward.medal">
<code class="sig-name descname">medal</code><em class="property"> = &lt;RelationshipProperty at 0x77b4858; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.MedalAward.medal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.MedalAward.medal_id">
<code class="sig-name descname">medal_id</code><em class="property"> = Column(None, Integer(), ForeignKey('medals.mid'), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.MedalAward.medal_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.MedalAward.royal">
<code class="sig-name descname">royal</code><em class="property"> = &lt;RelationshipProperty at 0x77b43d8; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.MedalAward.royal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.MedalAward.royal_id">
<code class="sig-name descname">royal_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royal.uid'), table=None, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.MedalAward.royal_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Bio">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Bio</code><a class="headerlink" href="#royalnet.database.tables.Bio" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Bio.contents">
<code class="sig-name descname">contents</code><em class="property"> = Column(None, Text(), table=None, nullable=False, default=ColumnDefault(''))</em><a class="headerlink" href="#royalnet.database.tables.Bio.contents" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Bio.royal">
<code class="sig-name descname">royal</code><em class="property"> = &lt;RelationshipProperty at 0x77b4300; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.Bio.royal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Bio.royal_id">
<code class="sig-name descname">royal_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Bio.royal_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.database.tables.Reminder">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.database.tables.</code><code class="sig-name descname">Reminder</code><a class="headerlink" href="#royalnet.database.tables.Reminder" title="Permalink to this definition"></a></dt>
<dd><dl class="attribute">
<dt id="royalnet.database.tables.Reminder.creator">
<code class="sig-name descname">creator</code><em class="property"> = &lt;RelationshipProperty at 0x77b4c00; no key&gt;</em><a class="headerlink" href="#royalnet.database.tables.Reminder.creator" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Reminder.creator_id">
<code class="sig-name descname">creator_id</code><em class="property"> = Column(None, Integer(), ForeignKey('royals.uid'), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Reminder.creator_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Reminder.datetime">
<code class="sig-name descname">datetime</code><em class="property"> = Column(None, DateTime(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Reminder.datetime" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Reminder.interface_data">
<code class="sig-name descname">interface_data</code><em class="property"> = Column(None, LargeBinary(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Reminder.interface_data" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Reminder.interface_name">
<code class="sig-name descname">interface_name</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Reminder.interface_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Reminder.message">
<code class="sig-name descname">message</code><em class="property"> = Column(None, String(), table=None)</em><a class="headerlink" href="#royalnet.database.tables.Reminder.message" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="royalnet.database.tables.Reminder.reminder_id">
<code class="sig-name descname">reminder_id</code><em class="property"> = Column(None, Integer(), table=None, primary_key=True, nullable=False)</em><a class="headerlink" href="#royalnet.database.tables.Reminder.reminder_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="network.html" class="btn btn-neutral float-right" title="royalnet.network" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="commands.html" class="btn btn-neutral float-left" title="royalnet.commands" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -1,281 +0,0 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>royalnet.error &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="royalnet.web" href="web.html" />
<link rel="prev" title="royalnet.utils" href="utils.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">royalnet.error</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>royalnet.error</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/error.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-error">
<h1>royalnet.error<a class="headerlink" href="#royalnet-error" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<span class="target" id="module-royalnet.error"></span><dl class="exception">
<dt id="royalnet.error.CurrentlyDisabledError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">CurrentlyDisabledError</code><a class="headerlink" href="#royalnet.error.CurrentlyDisabledError" title="Permalink to this definition"></a></dt>
<dd><p>This feature is temporarely disabled and is not available right now.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.ExternalError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">ExternalError</code><a class="headerlink" href="#royalnet.error.ExternalError" title="Permalink to this definition"></a></dt>
<dd><p>Something went wrong in a non-Royalnet component and the command execution cannot be completed.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.FileTooBigError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">FileTooBigError</code><a class="headerlink" href="#royalnet.error.FileTooBigError" title="Permalink to this definition"></a></dt>
<dd><p>The file to be downloaded would be too big to store; therefore, it has been skipped.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.InvalidConfigError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">InvalidConfigError</code><a class="headerlink" href="#royalnet.error.InvalidConfigError" title="Permalink to this definition"></a></dt>
<dd><p>The bot has not been configured correctly, therefore the command can not function.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.InvalidInputError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">InvalidInputError</code><a class="headerlink" href="#royalnet.error.InvalidInputError" title="Permalink to this definition"></a></dt>
<dd><p>The command has received invalid input and cannot complete.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.NoneFoundError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">NoneFoundError</code><a class="headerlink" href="#royalnet.error.NoneFoundError" title="Permalink to this definition"></a></dt>
<dd><p>The element that was being looked for was not found.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.RoyalnetRequestError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">RoyalnetRequestError</code><span class="sig-paren">(</span><em class="sig-param">error: ResponseError</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.error.RoyalnetRequestError" title="Permalink to this definition"></a></dt>
<dd><p>An error was raised while handling the Royalnet request.</p>
<p>This exception contains the <a class="reference internal" href="network.html#royalnet.network.ResponseError" title="royalnet.network.ResponseError"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.ResponseError</span></code></a> that was returned by the other Link.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.RoyalnetResponseError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">RoyalnetResponseError</code><a class="headerlink" href="#royalnet.error.RoyalnetResponseError" title="Permalink to this definition"></a></dt>
<dd><p>The <a class="reference internal" href="network.html#royalnet.network.Response" title="royalnet.network.Response"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.Response</span></code></a> that was received is invalid.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.TooManyFoundError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">TooManyFoundError</code><a class="headerlink" href="#royalnet.error.TooManyFoundError" title="Permalink to this definition"></a></dt>
<dd><p>Multiple elements matching the request were found, and only one was expected.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.UnregisteredError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">UnregisteredError</code><a class="headerlink" href="#royalnet.error.UnregisteredError" title="Permalink to this definition"></a></dt>
<dd><p>The command required a registered user, and the user was not registered.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.error.UnsupportedError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.error.</code><code class="sig-name descname">UnsupportedError</code><a class="headerlink" href="#royalnet.error.UnsupportedError" title="Permalink to this definition"></a></dt>
<dd><p>The command is not supported for the specified interface.</p>
</dd></dl>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="web.html" class="btn btn-neutral float-right" title="royalnet.web" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="utils.html" class="btn btn-neutral float-left" title="royalnet.utils" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -81,14 +81,8 @@
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li> <li class="toctree-l1"><a class="reference internal" href="creatingacommand.html">Royalnet Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li> <li class="toctree-l1"><a class="reference internal" href="apireference.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul> </ul>
@ -166,82 +160,76 @@
| <a href="#H"><strong>H</strong></a> | <a href="#H"><strong>H</strong></a>
| <a href="#I"><strong>I</strong></a> | <a href="#I"><strong>I</strong></a>
| <a href="#J"><strong>J</strong></a> | <a href="#J"><strong>J</strong></a>
| <a href="#K"><strong>K</strong></a>
| <a href="#L"><strong>L</strong></a> | <a href="#L"><strong>L</strong></a>
| <a href="#M"><strong>M</strong></a> | <a href="#M"><strong>M</strong></a>
| <a href="#N"><strong>N</strong></a> | <a href="#N"><strong>N</strong></a>
| <a href="#O"><strong>O</strong></a> | <a href="#O"><strong>O</strong></a>
| <a href="#P"><strong>P</strong></a> | <a href="#P"><strong>P</strong></a>
| <a href="#Q"><strong>Q</strong></a>
| <a href="#R"><strong>R</strong></a> | <a href="#R"><strong>R</strong></a>
| <a href="#S"><strong>S</strong></a> | <a href="#S"><strong>S</strong></a>
| <a href="#T"><strong>T</strong></a> | <a href="#T"><strong>T</strong></a>
| <a href="#U"><strong>U</strong></a> | <a href="#U"><strong>U</strong></a>
| <a href="#V"><strong>V</strong></a>
| <a href="#W"><strong>W</strong></a>
| <a href="#Y"><strong>Y</strong></a> | <a href="#Y"><strong>Y</strong></a>
</div> </div>
<h2 id="_">_</h2> <h2 id="_">_</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="commands.html#royalnet.commands.CommandArgs.__getitem__">__getitem__() (royalnet.commands.CommandArgs method)</a> <li><a href="apireference.html#royalnet.commands.CommandArgs.__getitem__">__getitem__() (royalnet.commands.CommandArgs method)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlInfo.__init__">__init__() (royalnet.audio.YtdlInfo method)</a> <li><a href="apireference.html#royalnet.audio.YtdlInfo.__init__">__init__() (royalnet.audio.YtdlInfo method)</a>
<ul> <ul>
<li><a href="database.html#royalnet.database.Alchemy.__init__">(royalnet.database.Alchemy method)</a> <li><a href="apireference.html#royalnet.database.Alchemy.__init__">(royalnet.database.Alchemy method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.Package.__init__">(royalnet.network.Package method)</a> <li><a href="apireference.html#royalnet.network.Package.__init__">(royalnet.network.Package method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="commands.html#royalnet.commands.CommandArgs.__weakref__">__weakref__ (royalnet.commands.CommandArgs attribute)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot._bot_factory">_bot_factory() (royalnet.bots.DiscordBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.DiscordBot._bot_factory">_bot_factory() (royalnet.bots.DiscordBot method)</a> <li><a href="apireference.html#royalnet.database.Alchemy._create_tables">_create_tables() (royalnet.database.Alchemy method)</a>
</li> </li>
<li><a href="database.html#royalnet.database.Alchemy._create_tables">_create_tables() (royalnet.database.Alchemy method)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot._data_factory">_data_factory() (royalnet.bots.DiscordBot method)</a>
</li>
<li><a href="bots.html#royalnet.bots.DiscordBot._data_factory">_data_factory() (royalnet.bots.DiscordBot method)</a>
<ul> <ul>
<li><a href="bots.html#royalnet.bots.GenericBot._data_factory">(royalnet.bots.GenericBot method)</a> <li><a href="apireference.html#royalnet.bots.GenericBot._data_factory">(royalnet.bots.GenericBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.TelegramBot._data_factory">(royalnet.bots.TelegramBot method)</a> <li><a href="apireference.html#royalnet.bots.TelegramBot._data_factory">(royalnet.bots.TelegramBot method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="audio.html#royalnet.audio.YtdlFile._default_ytdl_args">_default_ytdl_args (royalnet.audio.YtdlFile attribute)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile._default_ytdl_args">_default_ytdl_args (royalnet.audio.YtdlFile attribute)</a>
<ul> <ul>
<li><a href="audio.html#royalnet.audio.YtdlInfo._default_ytdl_args">(royalnet.audio.YtdlInfo attribute)</a> <li><a href="apireference.html#royalnet.audio.YtdlInfo._default_ytdl_args">(royalnet.audio.YtdlInfo attribute)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="bots.html#royalnet.bots.TelegramBot._handle_update">_handle_update() (royalnet.bots.TelegramBot method)</a> <li><a href="apireference.html#royalnet.bots.TelegramBot._handle_update">_handle_update() (royalnet.bots.TelegramBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.DiscordBot._init_client">_init_client() (royalnet.bots.DiscordBot method)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot._init_client">_init_client() (royalnet.bots.DiscordBot method)</a>
<ul> <ul>
<li><a href="bots.html#royalnet.bots.TelegramBot._init_client">(royalnet.bots.TelegramBot method)</a> <li><a href="apireference.html#royalnet.bots.TelegramBot._init_client">(royalnet.bots.TelegramBot method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="bots.html#royalnet.bots.GenericBot._init_commands">_init_commands() (royalnet.bots.GenericBot method)</a> <li><a href="apireference.html#royalnet.bots.GenericBot._init_commands">_init_commands() (royalnet.bots.GenericBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.GenericBot._init_database">_init_database() (royalnet.bots.GenericBot method)</a> <li><a href="apireference.html#royalnet.bots.GenericBot._init_database">_init_database() (royalnet.bots.GenericBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.GenericBot._init_royalnet">_init_royalnet() (royalnet.bots.GenericBot method)</a> <li><a href="apireference.html#royalnet.bots.GenericBot._init_royalnet">_init_royalnet() (royalnet.bots.GenericBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.DiscordBot._init_voice">_init_voice() (royalnet.bots.DiscordBot method)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot._init_voice">_init_voice() (royalnet.bots.DiscordBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.DiscordBot._interface_factory">_interface_factory() (royalnet.bots.DiscordBot method)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot._interface_factory">_interface_factory() (royalnet.bots.DiscordBot method)</a>
<ul> <ul>
<li><a href="bots.html#royalnet.bots.GenericBot._interface_factory">(royalnet.bots.GenericBot method)</a> <li><a href="apireference.html#royalnet.bots.GenericBot._interface_factory">(royalnet.bots.GenericBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.TelegramBot._interface_factory">(royalnet.bots.TelegramBot method)</a> <li><a href="apireference.html#royalnet.bots.TelegramBot._interface_factory">(royalnet.bots.TelegramBot method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="bots.html#royalnet.bots.GenericBot._network_handler">_network_handler() (royalnet.bots.GenericBot method)</a> <li><a href="apireference.html#royalnet.bots.GenericBot._network_handler">_network_handler() (royalnet.bots.GenericBot method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -249,33 +237,19 @@
<h2 id="A">A</h2> <h2 id="A">A</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.ActiveKvGroup">ActiveKvGroup (class in royalnet.database.tables)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot.add_to_music_data">add_to_music_data() (royalnet.bots.DiscordBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.DiscordBot.add_to_music_data">add_to_music_data() (royalnet.bots.DiscordBot method)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot.advance_music_data">advance_music_data() (royalnet.bots.DiscordBot method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.DiscordBot.advance_music_data">advance_music_data() (royalnet.bots.DiscordBot method)</a> <li><a href="apireference.html#royalnet.database.Alchemy">Alchemy (class in royalnet.database)</a>
</li>
<li><a href="database.html#royalnet.database.Alchemy">Alchemy (class in royalnet.database)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Alias">Alias (class in royalnet.database.tables)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Alias.alias">alias (royalnet.database.tables.Alias attribute)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="utils.html#royalnet.utils.andformat">andformat() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.commands.CommandInterface.alchemy">alchemy (royalnet.commands.CommandInterface attribute)</a>
</li> </li>
<li><a href="utils.html#royalnet.utils.asyncify">asyncify() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.utils.andformat">andformat() (in module royalnet.utils)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.WikiRevision.author">author (royalnet.database.tables.WikiRevision attribute)</a> <li><a href="apireference.html#royalnet.utils.asyncify">asyncify() (in module royalnet.utils)</a>
</li>
<li><a href="database.html#royalnet.database.tables.WikiRevision.author_id">author_id (royalnet.database.tables.WikiRevision attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Royal.avatar">avatar (royalnet.database.tables.Royal attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Discord.avatar_hash">avatar_hash (royalnet.database.tables.Discord attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.MedalAward.award_id">award_id (royalnet.database.tables.MedalAward attribute)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -283,7 +257,7 @@
<h2 id="B">B</h2> <h2 id="B">B</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Bio">Bio (class in royalnet.database.tables)</a> <li><a href="apireference.html#royalnet.commands.CommandInterface.bot">bot (royalnet.commands.CommandInterface attribute)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -291,59 +265,41 @@
<h2 id="C">C</h2> <h2 id="C">C</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="utils.html#royalnet.utils.cdj">cdj() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.utils.cdj">cdj() (in module royalnet.utils)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Medal.classes">classes (royalnet.database.tables.Medal attribute)</a> <li><a href="apireference.html#royalnet.commands.Command">Command (class in royalnet.commands)</a>
</li> </li>
<li><a href="commands.html#royalnet.commands.CommandArgs">CommandArgs (class in royalnet.commands)</a> <li><a href="apireference.html#royalnet.commands.CommandArgs">CommandArgs (class in royalnet.commands)</a>
</li> </li>
<li><a href="network.html#royalnet.network.RoyalnetLink.connect">connect() (royalnet.network.RoyalnetLink method)</a> <li><a href="apireference.html#royalnet.commands.CommandData">CommandData (class in royalnet.commands)</a>
</li> </li>
<li><a href="network.html#royalnet.network.ConnectionClosedError">ConnectionClosedError</a> <li><a href="apireference.html#royalnet.commands.CommandInterface">CommandInterface (class in royalnet.commands)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Bio.contents">contents (royalnet.database.tables.Bio attribute)</a> <li><a href="apireference.html#royalnet.network.RoyalnetLink.connect">connect() (royalnet.network.RoyalnetLink method)</a>
<ul>
<li><a href="database.html#royalnet.database.tables.WikiPage.contents">(royalnet.database.tables.WikiPage attribute)</a>
</li> </li>
</ul></li> <li><a href="apireference.html#royalnet.network.ConnectionClosedError">ConnectionClosedError</a>
<li><a href="database.html#royalnet.database.tables.Diario.context">context (royalnet.database.tables.Diario attribute)</a>
</li>
<li><a href="audio.html#royalnet.audio.YtdlMp3.convert_to_mp3">convert_to_mp3() (royalnet.audio.YtdlMp3 method)</a>
</li>
<li><a href="audio.html#royalnet.audio.YtdlDiscord.convert_to_pcm">convert_to_pcm() (royalnet.audio.YtdlDiscord method)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="audio.html#royalnet.audio.YtdlDiscord.create_and_ready_from_url">create_and_ready_from_url() (royalnet.audio.YtdlDiscord class method)</a> <li><a href="apireference.html#royalnet.audio.YtdlMp3.convert_to_mp3">convert_to_mp3() (royalnet.audio.YtdlMp3 method)</a>
</li>
<li><a href="apireference.html#royalnet.audio.YtdlDiscord.convert_to_pcm">convert_to_pcm() (royalnet.audio.YtdlDiscord method)</a>
</li>
<li><a href="apireference.html#royalnet.audio.YtdlDiscord.create_and_ready_from_url">create_and_ready_from_url() (royalnet.audio.YtdlDiscord class method)</a>
<ul> <ul>
<li><a href="audio.html#royalnet.audio.YtdlMp3.create_and_ready_from_url">(royalnet.audio.YtdlMp3 class method)</a> <li><a href="apireference.html#royalnet.audio.YtdlMp3.create_and_ready_from_url">(royalnet.audio.YtdlMp3 class method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="web.html#royalnet.web.create_app">create_app() (in module royalnet.web)</a> <li><a href="apireference.html#royalnet.web.create_app">create_app() (in module royalnet.web)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlDiscord.create_from_url">create_from_url() (royalnet.audio.YtdlDiscord class method)</a> <li><a href="apireference.html#royalnet.audio.YtdlDiscord.create_from_url">create_from_url() (royalnet.audio.YtdlDiscord class method)</a>
<ul> <ul>
<li><a href="audio.html#royalnet.audio.YtdlMp3.create_from_url">(royalnet.audio.YtdlMp3 class method)</a> <li><a href="apireference.html#royalnet.audio.YtdlMp3.create_from_url">(royalnet.audio.YtdlMp3 class method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="database.html#royalnet.database.tables.Diario.creator">creator (royalnet.database.tables.Diario attribute)</a> <li><a href="apireference.html#royalnet.error.CurrentlyDisabledError">CurrentlyDisabledError</a>
<ul>
<li><a href="database.html#royalnet.database.tables.Reminder.creator">(royalnet.database.tables.Reminder attribute)</a>
</li>
</ul></li>
<li><a href="database.html#royalnet.database.tables.Diario.creator_id">creator_id (royalnet.database.tables.Diario attribute)</a>
<ul>
<li><a href="database.html#royalnet.database.tables.Reminder.creator_id">(royalnet.database.tables.Reminder attribute)</a>
</li>
</ul></li>
<li><a href="database.html#royalnet.database.tables.WikiPage.css">css (royalnet.database.tables.WikiPage attribute)</a>
</li>
<li><a href="error.html#royalnet.error.CurrentlyDisabledError">CurrentlyDisabledError</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -351,45 +307,29 @@
<h2 id="D">D</h2> <h2 id="D">D</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.DatabaseConfig">DatabaseConfig (class in royalnet.database)</a> <li><a href="apireference.html#royalnet.database.DatabaseConfig">DatabaseConfig (class in royalnet.database)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.MedalAward.date">date (royalnet.database.tables.MedalAward attribute)</a> <li><a href="apireference.html#royalnet.audio.YtdlDiscord.delete">delete() (royalnet.audio.YtdlDiscord method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Reminder.datetime">datetime (royalnet.database.tables.Reminder attribute)</a>
</li>
<li><a href="audio.html#royalnet.audio.YtdlDiscord.delete">delete() (royalnet.audio.YtdlDiscord method)</a>
<ul> <ul>
<li><a href="audio.html#royalnet.audio.YtdlFile.delete">(royalnet.audio.YtdlFile method)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile.delete">(royalnet.audio.YtdlFile method)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlMp3.delete">(royalnet.audio.YtdlMp3 method)</a> <li><a href="apireference.html#royalnet.audio.YtdlMp3.delete">(royalnet.audio.YtdlMp3 method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="database.html#royalnet.database.tables.Medal.description">description (royalnet.database.tables.Medal attribute)</a> <li><a href="apireference.html#royalnet.commands.Command.description">description (royalnet.commands.Command attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Diario">Diario (class in royalnet.database.tables)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Diario.diario_id">diario_id (royalnet.database.tables.Diario attribute)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.WikiRevision.diff">diff (royalnet.database.tables.WikiRevision attribute)</a> <li><a href="apireference.html#royalnet.utils.discord_escape">discord_escape() (in module royalnet.utils)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Discord">Discord (class in royalnet.database.tables)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot">DiscordBot (class in royalnet.bots)</a>
</li> </li>
<li><a href="utils.html#royalnet.utils.discord_escape">discord_escape() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.bots.DiscordConfig">DiscordConfig (class in royalnet.bots)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Discord.discord_id">discord_id (royalnet.database.tables.Discord attribute)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile.download_file">download_file() (royalnet.audio.YtdlFile method)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.DiscordBot">DiscordBot (class in royalnet.bots)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile.download_from_url">download_from_url() (royalnet.audio.YtdlFile class method)</a>
</li>
<li><a href="bots.html#royalnet.bots.DiscordConfig">DiscordConfig (class in royalnet.bots)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Discord.discriminator">discriminator (royalnet.database.tables.Discord attribute)</a>
</li>
<li><a href="audio.html#royalnet.audio.YtdlFile.download_file">download_file() (royalnet.audio.YtdlFile method)</a>
</li>
<li><a href="audio.html#royalnet.audio.YtdlFile.download_from_url">download_from_url() (royalnet.audio.YtdlFile class method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -397,7 +337,7 @@
<h2 id="E">E</h2> <h2 id="E">E</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="error.html#royalnet.error.ExternalError">ExternalError</a> <li><a href="apireference.html#royalnet.error.ExternalError">ExternalError</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -405,35 +345,29 @@
<h2 id="F">F</h2> <h2 id="F">F</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="audio.html#royalnet.audio.FileAudioSource">FileAudioSource (class in royalnet.audio)</a> <li><a href="apireference.html#royalnet.audio.FileAudioSource">FileAudioSource (class in royalnet.audio)</a>
</li> </li>
<li><a href="utils.html#royalnet.utils.fileformat">fileformat() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.utils.fileformat">fileformat() (in module royalnet.utils)</a>
</li> </li>
<li><a href="error.html#royalnet.error.FileTooBigError">FileTooBigError</a> <li><a href="apireference.html#royalnet.error.FileTooBigError">FileTooBigError</a>
</li> </li>
<li><a href="network.html#royalnet.network.RoyalnetServer.find_client">find_client() (royalnet.network.RoyalnetServer method)</a> <li><a href="apireference.html#royalnet.network.RoyalnetServer.find_client">find_client() (royalnet.network.RoyalnetServer method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.RoyalnetServer.find_destination">find_destination() (royalnet.network.RoyalnetServer method)</a> <li><a href="apireference.html#royalnet.network.RoyalnetServer.find_destination">find_destination() (royalnet.network.RoyalnetServer method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Telegram.first_name">first_name (royalnet.database.tables.Telegram attribute)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.WikiPage.format">format (royalnet.database.tables.WikiPage attribute)</a> <li><a href="apireference.html#royalnet.network.Package.from_dict">from_dict() (royalnet.network.Package static method)</a>
</li>
<li><a href="network.html#royalnet.network.Package.from_dict">from_dict() (royalnet.network.Package static method)</a>
<ul> <ul>
<li><a href="network.html#royalnet.network.Request.from_dict">(royalnet.network.Request static method)</a> <li><a href="apireference.html#royalnet.network.Request.from_dict">(royalnet.network.Request static method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.Response.from_dict">(royalnet.network.Response class method)</a> <li><a href="apireference.html#royalnet.network.Response.from_dict">(royalnet.network.Response class method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="network.html#royalnet.network.Package.from_json_bytes">from_json_bytes() (royalnet.network.Package static method)</a> <li><a href="apireference.html#royalnet.network.Package.from_json_bytes">from_json_bytes() (royalnet.network.Package static method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.Package.from_json_string">from_json_string() (royalnet.network.Package static method)</a> <li><a href="apireference.html#royalnet.network.Package.from_json_string">from_json_string() (royalnet.network.Package static method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Discord.full_username">full_username() (royalnet.database.tables.Discord method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -441,31 +375,19 @@
<h2 id="G">G</h2> <h2 id="G">G</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="bots.html#royalnet.bots.GenericBot">GenericBot (class in royalnet.bots)</a> <li><a href="apireference.html#royalnet.bots.GenericBot">GenericBot (class in royalnet.bots)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.ActiveKvGroup.group">group (royalnet.database.tables.ActiveKvGroup attribute)</a>
<ul>
<li><a href="database.html#royalnet.database.tables.Keyvalue.group">(royalnet.database.tables.Keyvalue attribute)</a>
</li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.ActiveKvGroup.group_name">group_name (royalnet.database.tables.ActiveKvGroup attribute)</a> <li><a href="apireference.html#royalnet.commands.CommandData.get_author">get_author() (royalnet.commands.CommandData method)</a>
<ul>
<li><a href="database.html#royalnet.database.tables.Keygroup.group_name">(royalnet.database.tables.Keygroup attribute)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Keyvalue.group_name">(royalnet.database.tables.Keyvalue attribute)</a>
</li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="H">H</h2> <h2 id="H">H</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="audio.html#royalnet.audio.YtdlFile.has_info">has_info() (royalnet.audio.YtdlFile method)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile.has_info">has_info() (royalnet.audio.YtdlFile method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -473,37 +395,31 @@
<h2 id="I">I</h2> <h2 id="I">I</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Medal.icon">icon (royalnet.database.tables.Medal attribute)</a> <li><a href="apireference.html#royalnet.network.RoyalnetLink.identify">identify() (royalnet.network.RoyalnetLink method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.RoyalnetLink.identify">identify() (royalnet.network.RoyalnetLink method)</a> <li><a href="apireference.html#royalnet.audio.YtdlDiscord.info">info() (royalnet.audio.YtdlDiscord property)</a>
</li>
<li><a href="audio.html#royalnet.audio.YtdlDiscord.info">info() (royalnet.audio.YtdlDiscord property)</a>
<ul> <ul>
<li><a href="audio.html#royalnet.audio.YtdlMp3.info">(royalnet.audio.YtdlMp3 property)</a> <li><a href="apireference.html#royalnet.audio.YtdlMp3.info">(royalnet.audio.YtdlMp3 property)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="database.html#royalnet.database.tables.Reminder.interface_data">interface_data (royalnet.database.tables.Reminder attribute)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot.interface_name">interface_name (royalnet.bots.DiscordBot attribute)</a>
</li>
<li><a href="bots.html#royalnet.bots.DiscordBot.interface_name">interface_name (royalnet.bots.DiscordBot attribute)</a>
<ul> <ul>
<li><a href="bots.html#royalnet.bots.GenericBot.interface_name">(royalnet.bots.GenericBot attribute)</a> <li><a href="apireference.html#royalnet.bots.GenericBot.interface_name">(royalnet.bots.GenericBot attribute)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.TelegramBot.interface_name">(royalnet.bots.TelegramBot attribute)</a> <li><a href="apireference.html#royalnet.bots.TelegramBot.interface_name">(royalnet.bots.TelegramBot attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Reminder.interface_name">(royalnet.database.tables.Reminder attribute)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="error.html#royalnet.error.InvalidConfigError">InvalidConfigError</a> <li><a href="apireference.html#royalnet.error.InvalidConfigError">InvalidConfigError</a>
</li> </li>
<li><a href="error.html#royalnet.error.InvalidInputError">InvalidInputError</a> <li><a href="apireference.html#royalnet.error.InvalidInputError">InvalidInputError</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlFile.is_downloaded">is_downloaded() (royalnet.audio.YtdlFile method)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile.is_downloaded">is_downloaded() (royalnet.audio.YtdlFile method)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.FileAudioSource.is_opus">is_opus() (royalnet.audio.FileAudioSource method)</a> <li><a href="apireference.html#royalnet.audio.FileAudioSource.is_opus">is_opus() (royalnet.audio.FileAudioSource method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -511,21 +427,7 @@
<h2 id="J">J</h2> <h2 id="J">J</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="commands.html#royalnet.commands.CommandArgs.joined">joined() (royalnet.commands.CommandArgs method)</a> <li><a href="apireference.html#royalnet.commands.CommandArgs.joined">joined() (royalnet.commands.CommandArgs method)</a>
</li>
</ul></td>
</tr></table>
<h2 id="K">K</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Keyvalue.key">key (royalnet.database.tables.Keyvalue attribute)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Keygroup">Keygroup (class in royalnet.database.tables)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Keyvalue">Keyvalue (class in royalnet.database.tables)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -533,11 +435,11 @@
<h2 id="L">L</h2> <h2 id="L">L</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Telegram.last_name">last_name (royalnet.database.tables.Telegram attribute)</a> <li><a href="apireference.html#royalnet.network.RoyalnetServer.listener">listener() (royalnet.network.RoyalnetServer method)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="network.html#royalnet.network.RoyalnetServer.listener">listener() (royalnet.network.RoyalnetServer method)</a> <li><a href="apireference.html#royalnet.commands.CommandInterface.loop">loop (royalnet.commands.CommandInterface attribute)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -545,27 +447,11 @@
<h2 id="M">M</h2> <h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="commands.html#royalnet.commands.CommandArgs.match">match() (royalnet.commands.CommandArgs method)</a> <li><a href="apireference.html#royalnet.commands.CommandArgs.match">match() (royalnet.commands.CommandArgs method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Medal">Medal (class in royalnet.database.tables)</a>
</li>
<li><a href="database.html#royalnet.database.tables.MedalAward.medal">medal (royalnet.database.tables.MedalAward attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.MedalAward.medal_id">medal_id (royalnet.database.tables.MedalAward attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.MedalAward">MedalAward (class in royalnet.database.tables)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Diario.media_url">media_url (royalnet.database.tables.Diario attribute)</a> <li><a href="apireference.html#royalnet.utils.NetworkHandler.message_type">message_type (royalnet.utils.NetworkHandler attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Telegram.mention">mention() (royalnet.database.tables.Telegram method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Reminder.message">message (royalnet.database.tables.Reminder attribute)</a>
</li>
<li><a href="utils.html#royalnet.utils.NetworkHandler.message_type">message_type (royalnet.utils.NetworkHandler attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Medal.mid">mid (royalnet.database.tables.Medal attribute)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -573,21 +459,27 @@
<h2 id="N">N</h2> <h2 id="N">N</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Medal.name">name (royalnet.database.tables.Medal attribute)</a> <li><a href="apireference.html#royalnet.commands.Command.name">name (royalnet.commands.Command attribute)</a>
<ul>
<li><a href="apireference.html#royalnet.commands.CommandInterface.name">(royalnet.commands.CommandInterface attribute)</a>
</li> </li>
<li><a href="network.html#royalnet.network.NetworkError">NetworkError</a> </ul></li>
<li><a href="apireference.html#royalnet.commands.CommandInterface.net_request">net_request() (royalnet.commands.CommandInterface method)</a>
</li> </li>
<li><a href="utils.html#royalnet.utils.NetworkHandler">NetworkHandler (class in royalnet.utils)</a> <li><a href="apireference.html#royalnet.network.NetworkError">NetworkError</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="error.html#royalnet.error.NoneFoundError">NoneFoundError</a> <li><a href="apireference.html#royalnet.utils.NetworkHandler">NetworkHandler (class in royalnet.utils)</a>
</li> </li>
<li><a href="network.html#royalnet.network.NotConnectedError">NotConnectedError</a> <li><a href="apireference.html#royalnet.error.NoneFoundError">NoneFoundError</a>
</li> </li>
<li><a href="network.html#royalnet.network.NotIdentifiedError">NotIdentifiedError</a> <li><a href="apireference.html#royalnet.network.NotConnectedError">NotConnectedError</a>
</li> </li>
<li><a href="utils.html#royalnet.utils.numberemojiformat">numberemojiformat() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.network.NotIdentifiedError">NotIdentifiedError</a>
</li>
<li><a href="apireference.html#royalnet.utils.numberemojiformat">numberemojiformat() (in module royalnet.utils)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -595,11 +487,13 @@
<h2 id="O">O</h2> <h2 id="O">O</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="audio.html#royalnet.audio.YtdlFile.open">open() (royalnet.audio.YtdlFile method)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile.open">open() (royalnet.audio.YtdlFile method)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="commands.html#royalnet.commands.CommandArgs.optional">optional() (royalnet.commands.CommandArgs method)</a> <li><a href="apireference.html#royalnet.commands.CommandArgs.optional">optional() (royalnet.commands.CommandArgs method)</a>
</li>
<li><a href="apireference.html#royalnet.utils.ordinalformat">ordinalformat() (in module royalnet.utils)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -607,43 +501,21 @@
<h2 id="P">P</h2> <h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="network.html#royalnet.network.Package">Package (class in royalnet.network)</a> <li><a href="apireference.html#royalnet.network.Package">Package (class in royalnet.network)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.WikiRevision.page">page (royalnet.database.tables.WikiRevision attribute)</a> <li><a href="apireference.html#royalnet.utils.parse_5etools_entry">parse_5etools_entry() (in module royalnet.utils)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.WikiPage.page_id">page_id (royalnet.database.tables.WikiPage attribute)</a> <li><a href="apireference.html#royalnet.audio.YtdlDiscord.pcm_available">pcm_available() (royalnet.audio.YtdlDiscord method)</a>
<ul> <ul>
<li><a href="database.html#royalnet.database.tables.WikiRevision.page_id">(royalnet.database.tables.WikiRevision attribute)</a> <li><a href="apireference.html#royalnet.audio.YtdlMp3.pcm_available">(royalnet.audio.YtdlMp3 method)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.WikiPage.page_short_id">page_short_id() (royalnet.database.tables.WikiPage property)</a> <li><a href="apireference.html#royalnet.utils.plusformat">plusformat() (in module royalnet.utils)</a>, <a href="apireference.html#royalnet.utils.plusformat">[1]</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Royal.password">password (royalnet.database.tables.Royal attribute)</a> <li><a href="apireference.html#royalnet.commands.CommandInterface.prefix">prefix (royalnet.commands.CommandInterface attribute)</a>
</li>
<li><a href="audio.html#royalnet.audio.YtdlDiscord.pcm_available">pcm_available() (royalnet.audio.YtdlDiscord method)</a>
<ul>
<li><a href="audio.html#royalnet.audio.YtdlMp3.pcm_available">(royalnet.audio.YtdlMp3 method)</a>
</li>
</ul></li>
<li><a href="utils.html#royalnet.utils.plusformat">plusformat() (in module royalnet.utils)</a>, <a href="utils.html#royalnet.utils.plusformat">[1]</a>
</li>
</ul></td>
</tr></table>
<h2 id="Q">Q</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Diario.quoted">quoted (royalnet.database.tables.Diario attribute)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Diario.quoted_account">quoted_account (royalnet.database.tables.Diario attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Diario.quoted_account_id">quoted_account_id (royalnet.database.tables.Diario attribute)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -651,124 +523,90 @@
<h2 id="R">R</h2> <h2 id="R">R</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="network.html#royalnet.network.Response.raise_on_error">raise_on_error() (royalnet.network.Response method)</a> <li><a href="apireference.html#royalnet.network.Response.raise_on_error">raise_on_error() (royalnet.network.Response method)</a>
<ul> <ul>
<li><a href="network.html#royalnet.network.ResponseError.raise_on_error">(royalnet.network.ResponseError method)</a> <li><a href="apireference.html#royalnet.network.ResponseError.raise_on_error">(royalnet.network.ResponseError method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.ResponseSuccess.raise_on_error">(royalnet.network.ResponseSuccess method)</a> <li><a href="apireference.html#royalnet.network.ResponseSuccess.raise_on_error">(royalnet.network.ResponseSuccess method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="audio.html#royalnet.audio.FileAudioSource.read">read() (royalnet.audio.FileAudioSource method)</a> <li><a href="apireference.html#royalnet.audio.FileAudioSource.read">read() (royalnet.audio.FileAudioSource method)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlDiscord.ready_up">ready_up() (royalnet.audio.YtdlDiscord method)</a> <li><a href="apireference.html#royalnet.audio.YtdlDiscord.ready_up">ready_up() (royalnet.audio.YtdlDiscord method)</a>
<ul> <ul>
<li><a href="audio.html#royalnet.audio.YtdlMp3.ready_up">(royalnet.audio.YtdlMp3 method)</a> <li><a href="apireference.html#royalnet.audio.YtdlMp3.ready_up">(royalnet.audio.YtdlMp3 method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="database.html#royalnet.database.tables.WikiRevision.reason">reason (royalnet.database.tables.WikiRevision attribute)</a> <li><a href="apireference.html#royalnet.network.RoyalnetLink.receive">receive() (royalnet.network.RoyalnetLink method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.RoyalnetLink.receive">receive() (royalnet.network.RoyalnetLink method)</a> <li><a href="apireference.html#royalnet.commands.CommandInterface.register_net_handler">register_net_handler() (royalnet.commands.CommandInterface method)</a>
</li> </li>
<li><a href="database.html#royalnet.database.relationshiplinkchain">relationshiplinkchain() (in module royalnet.database)</a> <li><a href="apireference.html#royalnet.database.relationshiplinkchain">relationshiplinkchain() (in module royalnet.database)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Reminder">Reminder (class in royalnet.database.tables)</a> <li><a href="apireference.html#royalnet.commands.CommandData.reply">reply() (royalnet.commands.CommandData method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Reminder.reminder_id">reminder_id (royalnet.database.tables.Reminder attribute)</a>
</li>
<li><a href="network.html#royalnet.network.Package.reply">reply() (royalnet.network.Package method)</a>
</li>
<li><a href="network.html#royalnet.network.Request">Request (class in royalnet.network)</a>
</li>
<li><a href="network.html#royalnet.network.RoyalnetLink.request">request() (royalnet.network.RoyalnetLink method)</a>
</li>
<li><a href="network.html#royalnet.network.Response">Response (class in royalnet.network)</a>
</li>
<li><a href="network.html#royalnet.network.ResponseError">ResponseError (class in royalnet.network)</a>
</li>
<li><a href="network.html#royalnet.network.ResponseSuccess">ResponseSuccess (class in royalnet.network)</a>
</li>
<li><a href="audio.html#royalnet.audio.YtdlInfo.retrieve_for_url">retrieve_for_url() (royalnet.audio.YtdlInfo class method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.WikiRevision.revision_id">revision_id (royalnet.database.tables.WikiRevision attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Royal.role">role (royalnet.database.tables.Royal attribute)</a>
</li>
<li><a href="network.html#royalnet.network.RoyalnetServer.route_package">route_package() (royalnet.network.RoyalnetServer method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Royal">Royal (class in royalnet.database.tables)</a>
</li>
<li><a href="database.html#royalnet.database.tables.ActiveKvGroup.royal">royal (royalnet.database.tables.ActiveKvGroup attribute)</a>
<ul> <ul>
<li><a href="database.html#royalnet.database.tables.Alias.royal">(royalnet.database.tables.Alias attribute)</a> <li><a href="apireference.html#royalnet.network.Package.reply">(royalnet.network.Package method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Bio.royal">(royalnet.database.tables.Bio attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Discord.royal">(royalnet.database.tables.Discord attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.MedalAward.royal">(royalnet.database.tables.MedalAward attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Telegram.royal">(royalnet.database.tables.Telegram attribute)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="apireference.html#royalnet.network.Request">Request (class in royalnet.network)</a>
</li>
<li><a href="apireference.html#royalnet.network.RoyalnetLink.request">request() (royalnet.network.RoyalnetLink method)</a>
</li>
<li><a href="apireference.html#royalnet.commands.Command.require_alchemy_tables">require_alchemy_tables (royalnet.commands.Command attribute)</a>
</li>
<li><a href="apireference.html#royalnet.network.Response">Response (class in royalnet.network)</a>
</li>
<li><a href="apireference.html#royalnet.network.ResponseError">ResponseError (class in royalnet.network)</a>
</li>
<li><a href="apireference.html#royalnet.network.ResponseSuccess">ResponseSuccess (class in royalnet.network)</a>
</li>
<li><a href="apireference.html#royalnet.audio.YtdlInfo.retrieve_for_url">retrieve_for_url() (royalnet.audio.YtdlInfo class method)</a>
</li>
<li><a href="apireference.html#royalnet.network.RoyalnetServer.route_package">route_package() (royalnet.network.RoyalnetServer method)</a>
</li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.ActiveKvGroup.royal_id">royal_id (royalnet.database.tables.ActiveKvGroup attribute)</a> <li><a href="apireference.html#module-royalnet.audio">royalnet.audio (module)</a>
</li>
<li><a href="apireference.html#module-royalnet.bots">royalnet.bots (module)</a>
</li>
<li><a href="apireference.html#module-royalnet.commands">royalnet.commands (module)</a>
</li>
<li><a href="apireference.html#module-royalnet.database">royalnet.database (module)</a>
</li>
<li><a href="apireference.html#module-royalnet.error">royalnet.error (module)</a>
</li>
<li><a href="apireference.html#module-royalnet.network">royalnet.network (module)</a>
</li>
<li><a href="apireference.html#module-royalnet.utils">royalnet.utils (module)</a>
</li>
<li><a href="apireference.html#module-royalnet.web">royalnet.web (module)</a>
</li>
<li><a href="apireference.html#royalnet.network.RoyalnetConfig">RoyalnetConfig (class in royalnet.network)</a>
</li>
<li><a href="apireference.html#royalnet.network.RoyalnetLink">RoyalnetLink (class in royalnet.network)</a>
</li>
<li><a href="apireference.html#royalnet.error.RoyalnetRequestError">RoyalnetRequestError</a>
</li>
<li><a href="apireference.html#royalnet.error.RoyalnetResponseError">RoyalnetResponseError</a>
</li>
<li><a href="apireference.html#royalnet.network.RoyalnetServer">RoyalnetServer (class in royalnet.network)</a>
</li>
<li><a href="apireference.html#royalnet.web.Royalprint">Royalprint (class in royalnet.web)</a>
</li>
<li><a href="apireference.html#royalnet.bots.DiscordBot.run">run() (royalnet.bots.DiscordBot method)</a>
<ul> <ul>
<li><a href="database.html#royalnet.database.tables.Alias.royal_id">(royalnet.database.tables.Alias attribute)</a> <li><a href="apireference.html#royalnet.bots.GenericBot.run">(royalnet.bots.GenericBot method)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Bio.royal_id">(royalnet.database.tables.Bio attribute)</a> <li><a href="apireference.html#royalnet.bots.TelegramBot.run">(royalnet.bots.TelegramBot method)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Discord.royal_id">(royalnet.database.tables.Discord attribute)</a> <li><a href="apireference.html#royalnet.commands.Command.run">(royalnet.commands.Command method)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.MedalAward.royal_id">(royalnet.database.tables.MedalAward attribute)</a> <li><a href="apireference.html#royalnet.network.RoyalnetLink.run">(royalnet.network.RoyalnetLink method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Telegram.royal_id">(royalnet.database.tables.Telegram attribute)</a>
</li>
</ul></li>
<li><a href="audio.html#module-royalnet.audio">royalnet.audio (module)</a>
</li>
<li><a href="bots.html#module-royalnet.bots">royalnet.bots (module)</a>
</li>
<li><a href="commands.html#module-royalnet.commands">royalnet.commands (module)</a>
</li>
<li><a href="database.html#module-royalnet.database">royalnet.database (module)</a>
</li>
<li><a href="database.html#module-royalnet.database.tables">royalnet.database.tables (module)</a>
</li>
<li><a href="error.html#module-royalnet.error">royalnet.error (module)</a>
</li>
<li><a href="network.html#module-royalnet.network">royalnet.network (module)</a>
</li>
<li><a href="utils.html#module-royalnet.utils">royalnet.utils (module)</a>
</li>
<li><a href="web.html#module-royalnet.web">royalnet.web (module)</a>
</li>
<li><a href="web.html#module-royalnet.web.royalprints">royalnet.web.royalprints (module)</a>
</li>
<li><a href="network.html#royalnet.network.RoyalnetConfig">RoyalnetConfig (class in royalnet.network)</a>
</li>
<li><a href="network.html#royalnet.network.RoyalnetLink">RoyalnetLink (class in royalnet.network)</a>
</li>
<li><a href="error.html#royalnet.error.RoyalnetRequestError">RoyalnetRequestError</a>
</li>
<li><a href="error.html#royalnet.error.RoyalnetResponseError">RoyalnetResponseError</a>
</li>
<li><a href="network.html#royalnet.network.RoyalnetServer">RoyalnetServer (class in royalnet.network)</a>
</li>
<li><a href="web.html#royalnet.web.Royalprint">Royalprint (class in royalnet.web)</a>
</li>
<li><a href="bots.html#royalnet.bots.DiscordBot.run">run() (royalnet.bots.DiscordBot method)</a>
<ul>
<li><a href="bots.html#royalnet.bots.GenericBot.run">(royalnet.bots.GenericBot method)</a>
</li>
<li><a href="bots.html#royalnet.bots.TelegramBot.run">(royalnet.bots.TelegramBot method)</a>
</li>
<li><a href="network.html#royalnet.network.RoyalnetLink.run">(royalnet.network.RoyalnetLink method)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td> </ul></td>
@ -777,27 +615,27 @@
<h2 id="S">S</h2> <h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="utils.html#royalnet.utils.safeformat">safeformat() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.utils.safeformat">safeformat() (in module royalnet.utils)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Medal.score">score (royalnet.database.tables.Medal attribute)</a> <li><a href="apireference.html#royalnet.network.RoyalnetLink.send">send() (royalnet.network.RoyalnetLink method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.RoyalnetLink.send">send() (royalnet.network.RoyalnetLink method)</a> <li><a href="apireference.html#royalnet.network.RoyalnetServer.serve">serve() (royalnet.network.RoyalnetServer method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.RoyalnetServer.serve">serve() (royalnet.network.RoyalnetServer method)</a> <li><a href="apireference.html#royalnet.database.Alchemy.session_acm">session_acm() (royalnet.database.Alchemy method)</a>
</li> </li>
<li><a href="database.html#royalnet.database.Alchemy.session_acm">session_acm() (royalnet.database.Alchemy method)</a> <li><a href="apireference.html#royalnet.database.Alchemy.session_cm">session_cm() (royalnet.database.Alchemy method)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.Alchemy.session_cm">session_cm() (royalnet.database.Alchemy method)</a> <li><a href="apireference.html#royalnet.utils.sleep_until">sleep_until() (in module royalnet.utils)</a>
</li> </li>
<li><a href="utils.html#royalnet.utils.sleep_until">sleep_until() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.audio.YtdlDiscord.spawn_audiosource">spawn_audiosource() (royalnet.audio.YtdlDiscord method)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlDiscord.spawn_audiosource">spawn_audiosource() (royalnet.audio.YtdlDiscord method)</a> <li><a href="apireference.html#royalnet.utils.splitstring">splitstring() (in module royalnet.utils)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Diario.spoiler">spoiler (royalnet.database.tables.Diario attribute)</a> <li><a href="apireference.html#royalnet.network.RoyalnetServer.start">start() (royalnet.network.RoyalnetServer method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.RoyalnetServer.start">start() (royalnet.network.RoyalnetServer method)</a> <li><a href="apireference.html#royalnet.commands.Command.syntax">syntax (royalnet.commands.Command attribute)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -805,43 +643,29 @@
<h2 id="T">T</h2> <h2 id="T">T</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Telegram">Telegram (class in royalnet.database.tables)</a> <li><a href="apireference.html#royalnet.utils.telegram_escape">telegram_escape() (in module royalnet.utils)</a>
</li> </li>
<li><a href="utils.html#royalnet.utils.telegram_escape">telegram_escape() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.bots.TelegramBot">TelegramBot (class in royalnet.bots)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.TelegramBot">TelegramBot (class in royalnet.bots)</a> <li><a href="apireference.html#royalnet.bots.TelegramConfig">TelegramConfig (class in royalnet.bots)</a>
</li> </li>
<li><a href="bots.html#royalnet.bots.TelegramConfig">TelegramConfig (class in royalnet.bots)</a> <li><a href="apireference.html#royalnet.network.Package.to_dict">to_dict() (royalnet.network.Package method)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Diario.text">text (royalnet.database.tables.Diario attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Telegram.tg_id">tg_id (royalnet.database.tables.Telegram attribute)</a>
</li>
<li><a href="database.html#royalnet.database.tables.Diario.timestamp">timestamp (royalnet.database.tables.Diario attribute)</a>
<ul> <ul>
<li><a href="database.html#royalnet.database.tables.WikiRevision.timestamp">(royalnet.database.tables.WikiRevision attribute)</a> <li><a href="apireference.html#royalnet.network.Request.to_dict">(royalnet.network.Request method)</a>
</li>
<li><a href="apireference.html#royalnet.network.Response.to_dict">(royalnet.network.Response method)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.WikiPage.title">title (royalnet.database.tables.WikiPage attribute)</a> <li><a href="apireference.html#royalnet.audio.YtdlInfo.to_discord_embed">to_discord_embed() (royalnet.audio.YtdlInfo method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.Package.to_dict">to_dict() (royalnet.network.Package method)</a> <li><a href="apireference.html#royalnet.network.Package.to_json_bytes">to_json_bytes() (royalnet.network.Package method)</a>
<ul>
<li><a href="network.html#royalnet.network.Request.to_dict">(royalnet.network.Request method)</a>
</li> </li>
<li><a href="network.html#royalnet.network.Response.to_dict">(royalnet.network.Response method)</a> <li><a href="apireference.html#royalnet.network.Package.to_json_string">to_json_string() (royalnet.network.Package method)</a>
</li> </li>
</ul></li> <li><a href="apireference.html#royalnet.error.TooManyFoundError">TooManyFoundError</a>
<li><a href="audio.html#royalnet.audio.YtdlInfo.to_discord_embed">to_discord_embed() (royalnet.audio.YtdlInfo method)</a>
</li>
<li><a href="network.html#royalnet.network.Package.to_json_bytes">to_json_bytes() (royalnet.network.Package method)</a>
</li>
<li><a href="network.html#royalnet.network.Package.to_json_string">to_json_string() (royalnet.network.Package method)</a>
</li>
<li><a href="error.html#royalnet.error.TooManyFoundError">TooManyFoundError</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -849,45 +673,17 @@
<h2 id="U">U</h2> <h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Royal.uid">uid (royalnet.database.tables.Royal attribute)</a> <li><a href="apireference.html#royalnet.commands.CommandInterface.unregister_net_handler">unregister_net_handler() (royalnet.commands.CommandInterface method)</a>
</li> </li>
<li><a href="error.html#royalnet.error.UnregisteredError">UnregisteredError</a> <li><a href="apireference.html#royalnet.error.UnregisteredError">UnregisteredError</a>
</li>
<li><a href="error.html#royalnet.error.UnsupportedError">UnsupportedError</a>
</li>
<li><a href="bots.html#royalnet.bots.DiscordBot.update_activity_with_source_title">update_activity_with_source_title() (royalnet.bots.DiscordBot method)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="audio.html#royalnet.audio.YtdlFile.update_info">update_info() (royalnet.audio.YtdlFile method)</a> <li><a href="apireference.html#royalnet.error.UnsupportedError">UnsupportedError</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Discord.username">username (royalnet.database.tables.Discord attribute)</a> <li><a href="apireference.html#royalnet.bots.DiscordBot.update_activity_with_source_title">update_activity_with_source_title() (royalnet.bots.DiscordBot method)</a>
<ul>
<li><a href="database.html#royalnet.database.tables.Royal.username">(royalnet.database.tables.Royal attribute)</a>
</li> </li>
<li><a href="database.html#royalnet.database.tables.Telegram.username">(royalnet.database.tables.Telegram attribute)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile.update_info">update_info() (royalnet.audio.YtdlFile method)</a>
</li>
</ul></li>
</ul></td>
</tr></table>
<h2 id="V">V</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.Keyvalue.value">value (royalnet.database.tables.Keyvalue attribute)</a>
</li>
</ul></td>
</tr></table>
<h2 id="W">W</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.WikiPage">WikiPage (class in royalnet.database.tables)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="database.html#royalnet.database.tables.WikiRevision">WikiRevision (class in royalnet.database.tables)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -895,17 +691,17 @@
<h2 id="Y">Y</h2> <h2 id="Y">Y</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="utils.html#royalnet.utils.ytdldateformat">ytdldateformat() (in module royalnet.utils)</a> <li><a href="apireference.html#royalnet.utils.ytdldateformat">ytdldateformat() (in module royalnet.utils)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlDiscord">YtdlDiscord (class in royalnet.audio)</a> <li><a href="apireference.html#royalnet.audio.YtdlDiscord">YtdlDiscord (class in royalnet.audio)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="audio.html#royalnet.audio.YtdlFile">YtdlFile (class in royalnet.audio)</a> <li><a href="apireference.html#royalnet.audio.YtdlFile">YtdlFile (class in royalnet.audio)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlInfo">YtdlInfo (class in royalnet.audio)</a> <li><a href="apireference.html#royalnet.audio.YtdlInfo">YtdlInfo (class in royalnet.audio)</a>
</li> </li>
<li><a href="audio.html#royalnet.audio.YtdlMp3">YtdlMp3 (class in royalnet.audio)</a> <li><a href="apireference.html#royalnet.audio.YtdlMp3">YtdlMp3 (class in royalnet.audio)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>

View file

@ -36,7 +36,7 @@
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" /> <link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="royalnet.audio" href="audio.html" /> <link rel="next" title="Royalnet Commands" href="creatingacommand.html" />
</head> </head>
<body class="wy-body-for-nav"> <body class="wy-body-for-nav">
@ -81,14 +81,8 @@
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li> <li class="toctree-l1"><a class="reference internal" href="creatingacommand.html">Royalnet Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li> <li class="toctree-l1"><a class="reference internal" href="apireference.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul> </ul>
@ -155,32 +149,22 @@
<div class="section" id="royalnet"> <div class="section" id="royalnet">
<h1>royalnet<a class="headerlink" href="#royalnet" title="Permalink to this headline"></a></h1> <h1>royalnet<a class="headerlink" href="#royalnet" title="Permalink to this headline"></a></h1>
<p>Welcome to the documentation of Royalnet!</p>
<div class="toctree-wrapper compound"> <div class="toctree-wrapper compound">
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a><ul class="simple"> <li class="toctree-l1"><a class="reference internal" href="creatingacommand.html">Royalnet Commands</a><ul>
<li class="toctree-l2"><a class="reference internal" href="creatingacommand.html#creating-a-new-command">Creating a new Command</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a><ul class="simple"> <li class="toctree-l1"><a class="reference internal" href="apireference.html">API Reference</a><ul>
</ul> <li class="toctree-l2"><a class="reference internal" href="apireference.html#module-royalnet.audio">Audio</a></li>
</li> <li class="toctree-l2"><a class="reference internal" href="apireference.html#module-royalnet.bots">Bots</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a><ul class="simple"> <li class="toctree-l2"><a class="reference internal" href="apireference.html#module-royalnet.commands">Commands</a></li>
</ul> <li class="toctree-l2"><a class="reference internal" href="apireference.html#module-royalnet.database">Database</a></li>
</li> <li class="toctree-l2"><a class="reference internal" href="apireference.html#module-royalnet.network">Network</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a><ul> <li class="toctree-l2"><a class="reference internal" href="apireference.html#module-royalnet.utils">Utils</a></li>
<li class="toctree-l2"><a class="reference internal" href="database.html#module-royalnet.database.tables">Tables</a></li> <li class="toctree-l2"><a class="reference internal" href="apireference.html#module-royalnet.web">Web</a></li>
</ul> <li class="toctree-l2"><a class="reference internal" href="apireference.html#module-royalnet.error">Error</a></li>
</li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a><ul>
<li class="toctree-l2"><a class="reference internal" href="web.html#module-royalnet.web.royalprints">Royalprints</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -202,7 +186,7 @@
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="audio.html" class="btn btn-neutral float-right" title="royalnet.audio" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="creatingacommand.html" class="btn btn-neutral float-right" title="Royalnet Commands" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
</div> </div>

View file

@ -1,470 +0,0 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>royalnet.network &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="royalnet.utils" href="utils.html" />
<link rel="prev" title="royalnet.database" href="database.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">royalnet.network</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>royalnet.network</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/network.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-network">
<h1>royalnet.network<a class="headerlink" href="#royalnet-network" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<span class="target" id="module-royalnet.network"></span><p>Royalnet (websocket) related classes.</p>
<dl class="class">
<dt id="royalnet.network.RoyalnetLink">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">RoyalnetLink</code><span class="sig-paren">(</span><em class="sig-param">master_uri: str</em>, <em class="sig-param">secret: str</em>, <em class="sig-param">link_type: str</em>, <em class="sig-param">request_handler</em>, <em class="sig-param">*</em>, <em class="sig-param">loop: asyncio.events.AbstractEventLoop = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetLink" title="Permalink to this definition"></a></dt>
<dd><dl class="method">
<dt id="royalnet.network.RoyalnetLink.connect">
<em class="property">async </em><code class="sig-name descname">connect</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetLink.connect" title="Permalink to this definition"></a></dt>
<dd><p>Connect to the <a class="reference internal" href="#royalnet.network.RoyalnetServer" title="royalnet.network.RoyalnetServer"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetServer</span></code></a> at <code class="docutils literal notranslate"><span class="pre">self.master_uri</span></code>.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetLink.identify">
<em class="property">async </em><code class="sig-name descname">identify</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.network.RoyalnetLink.identify" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetLink.receive">
<em class="property">async </em><code class="sig-name descname">receive</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; royalnet.network.package.Package<a class="headerlink" href="#royalnet.network.RoyalnetLink.receive" title="Permalink to this definition"></a></dt>
<dd><p>Recieve a <a class="reference internal" href="#royalnet.network.Package" title="royalnet.network.Package"><code class="xref py py-class docutils literal notranslate"><span class="pre">Package</span></code></a> from the <a class="reference internal" href="#royalnet.network.RoyalnetServer" title="royalnet.network.RoyalnetServer"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetServer</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Raises</dt>
<dd class="field-odd"><p><strong>royalnet.network.royalnetlink.ConnectionClosedError</strong> </p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetLink.request">
<em class="property">async </em><code class="sig-name descname">request</code><span class="sig-paren">(</span><em class="sig-param">message</em>, <em class="sig-param">destination</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetLink.request" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetLink.run">
<em class="property">async </em><code class="sig-name descname">run</code><span class="sig-paren">(</span><em class="sig-param">loops: numbers.Real = inf</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetLink.run" title="Permalink to this definition"></a></dt>
<dd><p>Blockingly run the Link.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetLink.send">
<em class="property">async </em><code class="sig-name descname">send</code><span class="sig-paren">(</span><em class="sig-param">package: royalnet.network.package.Package</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetLink.send" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="royalnet.network.NetworkError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">NetworkError</code><span class="sig-paren">(</span><em class="sig-param">error_data: dict</em>, <em class="sig-param">*args</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.NetworkError" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="exception">
<dt id="royalnet.network.NotConnectedError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">NotConnectedError</code><a class="headerlink" href="#royalnet.network.NotConnectedError" title="Permalink to this definition"></a></dt>
<dd><p>The <a class="reference internal" href="#royalnet.network.RoyalnetLink" title="royalnet.network.RoyalnetLink"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetLink</span></code></a> is not connected to a <a class="reference internal" href="#royalnet.network.RoyalnetServer" title="royalnet.network.RoyalnetServer"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetServer</span></code></a>.</p>
</dd></dl>
<dl class="exception">
<dt id="royalnet.network.NotIdentifiedError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">NotIdentifiedError</code><a class="headerlink" href="#royalnet.network.NotIdentifiedError" title="Permalink to this definition"></a></dt>
<dd><p>The <a class="reference internal" href="#royalnet.network.RoyalnetLink" title="royalnet.network.RoyalnetLink"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetLink</span></code></a> has not identified yet to a <a class="reference internal" href="#royalnet.network.RoyalnetServer" title="royalnet.network.RoyalnetServer"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetServer</span></code></a>.</p>
</dd></dl>
<dl class="class">
<dt id="royalnet.network.Package">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">Package</code><span class="sig-paren">(</span><em class="sig-param">data: dict</em>, <em class="sig-param">*</em>, <em class="sig-param">source: str</em>, <em class="sig-param">destination: str</em>, <em class="sig-param">source_conv_id: Optional[str] = None</em>, <em class="sig-param">destination_conv_id: Optional[str] = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.Package" title="Permalink to this definition"></a></dt>
<dd><p>A Royalnet package, the data type with which a <a class="reference internal" href="#royalnet.network.RoyalnetLink" title="royalnet.network.RoyalnetLink"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetLink</span></code></a> communicates with a <a class="reference internal" href="#royalnet.network.RoyalnetServer" title="royalnet.network.RoyalnetServer"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetServer</span></code></a> or another link.
Contains info about the source and the destination.</p>
<dl class="method">
<dt id="royalnet.network.Package.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">data: dict</em>, <em class="sig-param">*</em>, <em class="sig-param">source: str</em>, <em class="sig-param">destination: str</em>, <em class="sig-param">source_conv_id: Optional[str] = None</em>, <em class="sig-param">destination_conv_id: Optional[str] = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.Package.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Create a Package.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> The data that should be sent. Usually a <code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.Message</span></code>.</p></li>
<li><p><strong>source</strong> The <code class="docutils literal notranslate"><span class="pre">nid</span></code> of the node that created this Package.</p></li>
<li><p><strong>destination</strong> The <code class="docutils literal notranslate"><span class="pre">link_type</span></code> of the destination node, or alternatively, the <code class="docutils literal notranslate"><span class="pre">nid</span></code> of the node. Can also be the <code class="docutils literal notranslate"><span class="pre">NULL</span></code> value to send the message to nobody.</p></li>
<li><p><strong>source_conv_id</strong> The conversation id of the node that created this package. Akin to the sequence number on IP packets.</p></li>
<li><p><strong>destination_conv_id</strong> The conversation id of the node that this Package is a reply to.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Package.from_dict">
<em class="property">static </em><code class="sig-name descname">from_dict</code><span class="sig-paren">(</span><em class="sig-param">d</em><span class="sig-paren">)</span> &#x2192; royalnet.network.package.Package<a class="headerlink" href="#royalnet.network.Package.from_dict" title="Permalink to this definition"></a></dt>
<dd><p>Create a Package from a dictionary.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Package.from_json_bytes">
<em class="property">static </em><code class="sig-name descname">from_json_bytes</code><span class="sig-paren">(</span><em class="sig-param">b: bytes</em><span class="sig-paren">)</span> &#x2192; royalnet.network.package.Package<a class="headerlink" href="#royalnet.network.Package.from_json_bytes" title="Permalink to this definition"></a></dt>
<dd><p>Create a Package from UTF8-encoded JSON bytes.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Package.from_json_string">
<em class="property">static </em><code class="sig-name descname">from_json_string</code><span class="sig-paren">(</span><em class="sig-param">string: str</em><span class="sig-paren">)</span> &#x2192; royalnet.network.package.Package<a class="headerlink" href="#royalnet.network.Package.from_json_string" title="Permalink to this definition"></a></dt>
<dd><p>Create a Package from a JSON string.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Package.reply">
<code class="sig-name descname">reply</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span> &#x2192; royalnet.network.package.Package<a class="headerlink" href="#royalnet.network.Package.reply" title="Permalink to this definition"></a></dt>
<dd><p>Reply to this Package with another Package.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>data</strong> The data that should be sent. Usually a <code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.Message</span></code>.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The reply Package.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Package.to_dict">
<code class="sig-name descname">to_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; dict<a class="headerlink" href="#royalnet.network.Package.to_dict" title="Permalink to this definition"></a></dt>
<dd><p>Convert the Package into a dictionary.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Package.to_json_bytes">
<code class="sig-name descname">to_json_bytes</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; bytes<a class="headerlink" href="#royalnet.network.Package.to_json_bytes" title="Permalink to this definition"></a></dt>
<dd><p>Convert the Package into UTF8-encoded JSON bytes.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Package.to_json_string">
<code class="sig-name descname">to_json_string</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.network.Package.to_json_string" title="Permalink to this definition"></a></dt>
<dd><p>Convert the Package into a JSON string.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.network.RoyalnetServer">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">RoyalnetServer</code><span class="sig-paren">(</span><em class="sig-param">address: str</em>, <em class="sig-param">port: int</em>, <em class="sig-param">required_secret: str</em>, <em class="sig-param">*</em>, <em class="sig-param">loop: asyncio.events.AbstractEventLoop = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetServer" title="Permalink to this definition"></a></dt>
<dd><dl class="method">
<dt id="royalnet.network.RoyalnetServer.find_client">
<code class="sig-name descname">find_client</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">nid: str = None</em>, <em class="sig-param">link_type: str = None</em><span class="sig-paren">)</span> &#x2192; List[royalnet.network.royalnetserver.ConnectedClient]<a class="headerlink" href="#royalnet.network.RoyalnetServer.find_client" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetServer.find_destination">
<code class="sig-name descname">find_destination</code><span class="sig-paren">(</span><em class="sig-param">package: royalnet.network.package.Package</em><span class="sig-paren">)</span> &#x2192; List[royalnet.network.royalnetserver.ConnectedClient]<a class="headerlink" href="#royalnet.network.RoyalnetServer.find_destination" title="Permalink to this definition"></a></dt>
<dd><p>Find a list of destinations for the package.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>package</strong> The package to find the destination of.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#list" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a> of <code class="xref py py-class docutils literal notranslate"><span class="pre">ConnectedClients</span></code> to send the package to.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetServer.listener">
<em class="property">async </em><code class="sig-name descname">listener</code><span class="sig-paren">(</span><em class="sig-param">websocket: websockets.server.WebSocketServerProtocol</em>, <em class="sig-param">path</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetServer.listener" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetServer.route_package">
<em class="property">async </em><code class="sig-name descname">route_package</code><span class="sig-paren">(</span><em class="sig-param">package: royalnet.network.package.Package</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.network.RoyalnetServer.route_package" title="Permalink to this definition"></a></dt>
<dd><p>Executed every time a package is received and must be routed somewhere.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetServer.serve">
<em class="property">async </em><code class="sig-name descname">serve</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetServer.serve" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.network.RoyalnetServer.start">
<em class="property">async </em><code class="sig-name descname">start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetServer.start" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.network.RoyalnetConfig">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">RoyalnetConfig</code><span class="sig-paren">(</span><em class="sig-param">master_uri: str</em>, <em class="sig-param">master_secret: str</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.RoyalnetConfig" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="exception">
<dt id="royalnet.network.ConnectionClosedError">
<em class="property">exception </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">ConnectionClosedError</code><a class="headerlink" href="#royalnet.network.ConnectionClosedError" title="Permalink to this definition"></a></dt>
<dd><p>The <a class="reference internal" href="#royalnet.network.RoyalnetLink" title="royalnet.network.RoyalnetLink"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetLink</span></code></a>s connection was closed unexpectedly. The link cant be used anymore.</p>
</dd></dl>
<dl class="class">
<dt id="royalnet.network.Request">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">Request</code><span class="sig-paren">(</span><em class="sig-param">handler: str</em>, <em class="sig-param">data: dict</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.Request" title="Permalink to this definition"></a></dt>
<dd><p>A request sent from a <a class="reference internal" href="#royalnet.network.RoyalnetLink" title="royalnet.network.RoyalnetLink"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.RoyalnetLink</span></code></a> to another.</p>
<p>It contains the name of the requested handler, in addition to the data.</p>
<dl class="method">
<dt id="royalnet.network.Request.from_dict">
<em class="property">static </em><code class="sig-name descname">from_dict</code><span class="sig-paren">(</span><em class="sig-param">d: dict</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.Request.from_dict" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="royalnet.network.Request.to_dict">
<code class="sig-name descname">to_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.Request.to_dict" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.network.Response">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">Response</code><a class="headerlink" href="#royalnet.network.Response" title="Permalink to this definition"></a></dt>
<dd><p>A base class to be inherited by all other response types.</p>
<dl class="method">
<dt id="royalnet.network.Response.from_dict">
<em class="property">classmethod </em><code class="sig-name descname">from_dict</code><span class="sig-paren">(</span><em class="sig-param">d: dict</em><span class="sig-paren">)</span> &#x2192; royalnet.network.response.Response<a class="headerlink" href="#royalnet.network.Response.from_dict" title="Permalink to this definition"></a></dt>
<dd><p>Recreate the response from a received <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#dict" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></a>.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Response.raise_on_error">
<code class="sig-name descname">raise_on_error</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.Response.raise_on_error" title="Permalink to this definition"></a></dt>
<dd><p>Raise an <a class="reference external" href="https://docs.python.org/3.7/library/exceptions.html#Exception" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></a> if the Response is an error, do nothing otherwise.</p>
</dd></dl>
<dl class="method">
<dt id="royalnet.network.Response.to_dict">
<code class="sig-name descname">to_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; dict<a class="headerlink" href="#royalnet.network.Response.to_dict" title="Permalink to this definition"></a></dt>
<dd><p>Prepare the Response to be sent by converting it to a JSONable <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#dict" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></a>.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.network.ResponseSuccess">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">ResponseSuccess</code><span class="sig-paren">(</span><em class="sig-param">data: Optional[dict] = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.ResponseSuccess" title="Permalink to this definition"></a></dt>
<dd><p>A response to a successful <a class="reference internal" href="#royalnet.network.Request" title="royalnet.network.Request"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.Request</span></code></a>.</p>
<dl class="method">
<dt id="royalnet.network.ResponseSuccess.raise_on_error">
<code class="sig-name descname">raise_on_error</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.ResponseSuccess.raise_on_error" title="Permalink to this definition"></a></dt>
<dd><p>Raise an <a class="reference external" href="https://docs.python.org/3.7/library/exceptions.html#Exception" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></a> if the Response is an error, do nothing otherwise.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.network.ResponseError">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.network.</code><code class="sig-name descname">ResponseError</code><span class="sig-paren">(</span><em class="sig-param">name: str</em>, <em class="sig-param">description: str</em>, <em class="sig-param">extra_info: Optional[dict] = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.ResponseError" title="Permalink to this definition"></a></dt>
<dd><p>A response to a invalid <a class="reference internal" href="#royalnet.network.Request" title="royalnet.network.Request"><code class="xref py py-class docutils literal notranslate"><span class="pre">royalnet.network.Request</span></code></a>.</p>
<dl class="method">
<dt id="royalnet.network.ResponseError.raise_on_error">
<code class="sig-name descname">raise_on_error</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.network.ResponseError.raise_on_error" title="Permalink to this definition"></a></dt>
<dd><p>Raise an <a class="reference external" href="https://docs.python.org/3.7/library/exceptions.html#Exception" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></a> if the Response is an error, do nothing otherwise.</p>
</dd></dl>
</dd></dl>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="utils.html" class="btn btn-neutral float-right" title="royalnet.utils" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="database.html" class="btn btn-neutral float-left" title="royalnet.database" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

Binary file not shown.

View file

@ -83,14 +83,8 @@
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li> <li class="toctree-l1"><a class="reference internal" href="creatingacommand.html">Royalnet Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li> <li class="toctree-l1"><a class="reference internal" href="apireference.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul> </ul>
@ -171,52 +165,42 @@
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="audio.html#module-royalnet.audio"><code class="xref">royalnet.audio</code></a></td><td> <a href="apireference.html#module-royalnet.audio"><code class="xref">royalnet.audio</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="bots.html#module-royalnet.bots"><code class="xref">royalnet.bots</code></a></td><td> <a href="apireference.html#module-royalnet.bots"><code class="xref">royalnet.bots</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="commands.html#module-royalnet.commands"><code class="xref">royalnet.commands</code></a></td><td> <a href="apireference.html#module-royalnet.commands"><code class="xref">royalnet.commands</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="database.html#module-royalnet.database"><code class="xref">royalnet.database</code></a></td><td> <a href="apireference.html#module-royalnet.database"><code class="xref">royalnet.database</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="database.html#module-royalnet.database.tables"><code class="xref">royalnet.database.tables</code></a></td><td> <a href="apireference.html#module-royalnet.error"><code class="xref">royalnet.error</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="error.html#module-royalnet.error"><code class="xref">royalnet.error</code></a></td><td> <a href="apireference.html#module-royalnet.network"><code class="xref">royalnet.network</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="network.html#module-royalnet.network"><code class="xref">royalnet.network</code></a></td><td> <a href="apireference.html#module-royalnet.utils"><code class="xref">royalnet.utils</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="utils.html#module-royalnet.utils"><code class="xref">royalnet.utils</code></a></td><td> <a href="apireference.html#module-royalnet.web"><code class="xref">royalnet.web</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="web.html#module-royalnet.web"><code class="xref">royalnet.web</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="web.html#module-royalnet.web.royalprints"><code class="xref">royalnet.web.royalprints</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
</table> </table>

View file

@ -81,14 +81,8 @@
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li> <li class="toctree-l1"><a class="reference internal" href="creatingacommand.html">Royalnet Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li> <li class="toctree-l1"><a class="reference internal" href="apireference.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul> </ul>

File diff suppressed because one or more lines are too long

View file

@ -1,383 +0,0 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>royalnet.utils &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="royalnet.error" href="error.html" />
<link rel="prev" title="royalnet.network" href="network.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">royalnet.utils</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1"><a class="reference internal" href="web.html">royalnet.web</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>royalnet.utils</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/utils.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-utils">
<h1>royalnet.utils<a class="headerlink" href="#royalnet-utils" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<span class="target" id="module-royalnet.utils"></span><p>Miscellaneous useful functions and classes.</p>
<dl class="function">
<dt id="royalnet.utils.asyncify">
<em class="property">async </em><code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">asyncify</code><span class="sig-paren">(</span><em class="sig-param">function: Callable</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.utils.asyncify" title="Permalink to this definition"></a></dt>
<dd><p>Convert a function into a coroutine.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>The coroutine cannot be cancelled, and any attempts to do so will result in unexpected outputs.</p>
</div>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.safeformat">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">safeformat</code><span class="sig-paren">(</span><em class="sig-param">string: str</em>, <em class="sig-param">**words: str</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.utils.safeformat" title="Permalink to this definition"></a></dt>
<dd><p><code class="xref py py-func docutils literal notranslate"><span class="pre">str.format()</span></code> something, but ignore missing keys instead of raising an error.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>string</strong> The base string to be formatted.</p></li>
<li><p><strong>words</strong> The words to format the string with.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The formatted string.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.cdj">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">cdj</code><span class="sig-paren">(</span><em class="sig-param">class_: Any</em><span class="sig-paren">)</span> &#x2192; dict<a class="headerlink" href="#royalnet.utils.cdj" title="Permalink to this definition"></a></dt>
<dd><p>Return a dict of the class attributes without the <code class="docutils literal notranslate"><span class="pre">__module__</span></code>, <code class="docutils literal notranslate"><span class="pre">__dict__</span></code>, <code class="docutils literal notranslate"><span class="pre">__weakref__</span></code> and <code class="docutils literal notranslate"><span class="pre">__doc__</span></code> keys, to be used while generating dynamically SQLAlchemy declarative table classes.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>class_</strong> The object that you want to dict-ify.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The class dict.</p>
</dd>
</dl>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>You cant dict-ify classes with <code class="docutils literal notranslate"><span class="pre">__slots__</span></code>!</p>
</div>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.sleep_until">
<em class="property">async </em><code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">sleep_until</code><span class="sig-paren">(</span><em class="sig-param">dt: datetime.datetime</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#royalnet.utils.sleep_until" title="Permalink to this definition"></a></dt>
<dd><p>Block the call until the specified datetime.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Accurate only to seconds.</p>
</div>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.plusformat">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">plusformat</code><span class="sig-paren">(</span><em class="sig-param">i: int</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.utils.plusformat" title="Permalink to this definition"></a></dt>
<dd><p>Convert an <a class="reference external" href="https://docs.python.org/3.7/library/functions.html#int" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a> to a <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#str" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>, prepending a <code class="docutils literal notranslate"><span class="pre">+</span></code> if its greater than 0.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>i</strong> the <a class="reference external" href="https://docs.python.org/3.7/library/functions.html#int" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a> to convert.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The resulting <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#str" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>.</p>
</dd>
</dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.utils.NetworkHandler">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">NetworkHandler</code><a class="headerlink" href="#royalnet.utils.NetworkHandler" title="Permalink to this definition"></a></dt>
<dd><p>The NetworkHandler functions are called when a specific Message type is received.</p>
<dl class="attribute">
<dt id="royalnet.utils.NetworkHandler.message_type">
<code class="sig-name descname">message_type</code><em class="property"> = NotImplemented</em><a class="headerlink" href="#royalnet.utils.NetworkHandler.message_type" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.andformat">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">andformat</code><span class="sig-paren">(</span><em class="sig-param">l: List[str], middle=', ', final=' and '</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.utils.andformat" title="Permalink to this definition"></a></dt>
<dd><p>Convert a <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#list" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a> to a <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#str" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a> by adding <code class="docutils literal notranslate"><span class="pre">final</span></code> between the last two elements and <code class="docutils literal notranslate"><span class="pre">middle</span></code> between the others.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>l</strong> the input <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#list" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a>.</p></li>
<li><p><strong>middle</strong> the <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#str" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a> to be added between the middle elements.</p></li>
<li><p><strong>final</strong> the <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#str" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a> to be added between the last two elements.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The resulting <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#str" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt>
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">plusformat</code><span class="sig-paren">(</span><em class="sig-param">i: int</em><span class="sig-paren">)</span> &#x2192; str</dt>
<dd><p>Convert an <a class="reference external" href="https://docs.python.org/3.7/library/functions.html#int" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a> to a <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#str" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>, prepending a <code class="docutils literal notranslate"><span class="pre">+</span></code> if its greater than 0.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>i</strong> the <a class="reference external" href="https://docs.python.org/3.7/library/functions.html#int" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a> to convert.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The resulting <a class="reference external" href="https://docs.python.org/3.7/library/stdtypes.html#str" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.fileformat">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">fileformat</code><span class="sig-paren">(</span><em class="sig-param">string: str</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.utils.fileformat" title="Permalink to this definition"></a></dt>
<dd><p>Ensure a string can be used as a filename by replacing all non-word characters with underscores.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>string</strong> the input string.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A valid filename string.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.ytdldateformat">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">ytdldateformat</code><span class="sig-paren">(</span><em class="sig-param">string: Optional[str], separator: str = '-'</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.utils.ytdldateformat" title="Permalink to this definition"></a></dt>
<dd><p>Convert the weird date string returned by <code class="docutils literal notranslate"><span class="pre">youtube-dl</span></code> into the <code class="docutils literal notranslate"><span class="pre">YYYY-MM-DD</span></code> format.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>string</strong> the input string, in the <code class="docutils literal notranslate"><span class="pre">YYYYMMDD</span></code> format.</p></li>
<li><p><strong>separator</strong> the string to add between the years, the months and the days. Defaults to <code class="docutils literal notranslate"><span class="pre">-</span></code>.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The resulting string, in the format <code class="docutils literal notranslate"><span class="pre">YYYY-MM-DD</span></code> format.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.numberemojiformat">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">numberemojiformat</code><span class="sig-paren">(</span><em class="sig-param">l: List[str]</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.utils.numberemojiformat" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="royalnet.utils.telegram_escape">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">telegram_escape</code><span class="sig-paren">(</span><em class="sig-param">string: str</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.utils.telegram_escape" title="Permalink to this definition"></a></dt>
<dd><p>Escape a string to be sent through Telegram, and format it using RoyalCode.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Currently escapes everything, even items in code blocks.</p>
</div>
</dd></dl>
<dl class="function">
<dt id="royalnet.utils.discord_escape">
<code class="sig-prename descclassname">royalnet.utils.</code><code class="sig-name descname">discord_escape</code><span class="sig-paren">(</span><em class="sig-param">string: str</em><span class="sig-paren">)</span> &#x2192; str<a class="headerlink" href="#royalnet.utils.discord_escape" title="Permalink to this definition"></a></dt>
<dd><p>Escape a string to be sent through Discord, and format it using RoyalCode.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Currently escapes everything, even items in code blocks.</p>
</div>
</dd></dl>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="error.html" class="btn btn-neutral float-right" title="royalnet.error" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="network.html" class="btn btn-neutral float-left" title="royalnet.network" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -1,246 +0,0 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>royalnet.web &mdash; Royalnet documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/rygdocs.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="prev" title="royalnet.error" href="error.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Royalnet
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="audio.html">royalnet.audio</a></li>
<li class="toctree-l1"><a class="reference internal" href="bots.html">royalnet.bots</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">royalnet.commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="database.html">royalnet.database</a></li>
<li class="toctree-l1"><a class="reference internal" href="network.html">royalnet.network</a></li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">royalnet.utils</a></li>
<li class="toctree-l1"><a class="reference internal" href="error.html">royalnet.error</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">royalnet.web</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#module-royalnet.web.royalprints">Royalprints</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Royalnet</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>royalnet.web</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/web.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="royalnet-web">
<h1>royalnet.web<a class="headerlink" href="#royalnet-web" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<span class="target" id="module-royalnet.web"></span><dl class="function">
<dt id="royalnet.web.create_app">
<code class="sig-prename descclassname">royalnet.web.</code><code class="sig-name descname">create_app</code><span class="sig-paren">(</span><em class="sig-param">config_obj: Type, blueprints: List[royalnet.web.royalprint.Royalprint]</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.web.create_app" title="Permalink to this definition"></a></dt>
<dd><p>Create a <code class="xref py py-class docutils literal notranslate"><span class="pre">flask.Flask</span></code> application object.</p>
<p>Gets the <code class="docutils literal notranslate"><span class="pre">app.secret_key</span></code> from the <code class="docutils literal notranslate"><span class="pre">SECRET_KEY</span></code> envvar.</p>
<p>Also requires a <code class="docutils literal notranslate"><span class="pre">DB_PATH</span></code> key in <code class="docutils literal notranslate"><span class="pre">config_obj</span></code> to initialize the database connection.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>The code for this class was written at 1 AM, and I have no clue of how and why it works or even if it really does work.
Use with caution?</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>config_obj</strong> The object to be passed to <code class="xref py py-meth docutils literal notranslate"><span class="pre">flask.Flask.config.from_object()</span></code>.</p></li>
<li><p><strong>blueprints</strong> A list of blueprints to be registered to the application.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The created <code class="xref py py-class docutils literal notranslate"><span class="pre">flask.Flask</span></code>.</p>
</dd>
</dl>
</dd></dl>
<dl class="class">
<dt id="royalnet.web.Royalprint">
<em class="property">class </em><code class="sig-prename descclassname">royalnet.web.</code><code class="sig-name descname">Royalprint</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">import_name</em>, <em class="sig-param">static_folder=None</em>, <em class="sig-param">static_url_path=None</em>, <em class="sig-param">template_folder=None</em>, <em class="sig-param">url_prefix=None</em>, <em class="sig-param">subdomain=None</em>, <em class="sig-param">url_defaults=None</em>, <em class="sig-param">root_path=None</em>, <em class="sig-param">required_tables: Optional[set] = None</em><span class="sig-paren">)</span><a class="headerlink" href="#royalnet.web.Royalprint" title="Permalink to this definition"></a></dt>
<dd><p>An edited <code class="xref py py-class docutils literal notranslate"><span class="pre">flask.Blueprint</span></code> containing an additional <code class="docutils literal notranslate"><span class="pre">required_tables</span></code> parameter.</p>
</dd></dl>
<div class="section" id="module-royalnet.web.royalprints">
<span id="royalprints"></span><h2>Royalprints<a class="headerlink" href="#module-royalnet.web.royalprints" title="Permalink to this headline"></a></h2>
<p>Some Royalprints that can be used with the Royalnet Flask server.</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="error.html" class="btn btn-neutral float-left" title="royalnet.error" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, Stefano Pigozzi
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -0,0 +1,70 @@
API Reference
====================================
These pages were automatically generated from docstrings in code.
They might be outdated, or incomplete.
Audio
------------------------------------
.. automodule:: royalnet.audio
:members:
:undoc-members:
:private-members:
Bots
------------------------------------
.. automodule:: royalnet.bots
:members:
:undoc-members:
:private-members:
Commands
------------------------------------
.. automodule:: royalnet.commands
:members:
:undoc-members:
:private-members:
Database
------------------------------------
.. automodule:: royalnet.database
:members:
:undoc-members:
:private-members:
Network
------------------------------------
.. automodule:: royalnet.network
:members:
:undoc-members:
:private-members:
Utils
------------------------------------
.. automodule:: royalnet.utils
:members:
:undoc-members:
:private-members:
Web
------------------------------------
.. automodule:: royalnet.web
:members:
:undoc-members:
:private-members:
Error
------------------------------------
.. automodule:: royalnet.error
:members:
:undoc-members:
:private-members:

View file

@ -1,12 +0,0 @@
royalnet.audio
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.audio
:members:
:private-members:
:undoc-members:

View file

@ -1,11 +0,0 @@
royalnet.bots
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.bots
:members:
:private-members:
:undoc-members:

View file

@ -1,11 +0,0 @@
royalnet.commands
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.commands
:members:
:private-members:
:special-members:

View file

@ -0,0 +1,66 @@
.. currentmodule:: royalnet.commands
Royalnet Commands
====================================
A Royalnet Command is a small script that is run whenever a specific message is sent to a Royalnet interface.
A Command code looks like this: ::
from royalnet.commands import Command
class PingCommand(Command):
name = "ping"
description = "Play ping-pong with the bot."
def __init__(self, interface):
# This code is run just once, while the bot is starting
super().__init__()
async def run(self, args, data):
# This code is run every time the command is called
await data.reply("Pong!")
Creating a new Command
------------------------------------
First, think of a ``name`` for your command.
It's the name your command will be called with: for example, the "spaghetti" command will be called by typing **/spaghetti** in chat.
Try to keep the name as short as possible, while staying specific enough so no other command will have the same name.
Next, create a new Python file with the ``name`` you have thought of.
The previously mentioned "spaghetti" command should have a file called ``spaghetti.py``.
Then, in the first row of the file, import the :py:class:`Command` class from :py:mod:`royalnet`, and create a new class inheriting from it: ::
from royalnet.commands import Command
class SpaghettiCommand(Command):
...
Inside the class, override the attributes ``name`` and ``description`` with respectively the **name of the command** and a **small description of what the command will do**: ::
from royalnet.commands import Command
class SpaghettiCommand(Command):
name = "spaghetti"
description = "Send a spaghetti emoji in the chat."
Now override the :py:meth:`Command.run` method, adding the code you want the bot to run when the command is called.
To send a message in the chat the command was called in, you can use the :py:meth:`CommandData.reply` method: ::
from royalnet.commands import Command
class SpaghettiCommand(Command):
name = "spaghetti"
description = "Send a spaghetti emoji in the chat."
async def run(self, args, data):
data.reply("🍝")
And it's done! The command is now ready to be used in a bot!

View file

@ -1,20 +0,0 @@
royalnet.database
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.database
:members:
:private-members:
:undoc-members:
Tables
------------------------------------
.. automodule:: royalnet.database.tables
:members:
:private-members:
:undoc-members:

View file

@ -1,11 +0,0 @@
royalnet.error
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.error
:members:
:private-members:
:undoc-members:

View file

@ -1,17 +1,13 @@
royalnet royalnet
==================================== ====================================
Welcome to the documentation of Royalnet!
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
audio creatingacommand
bots apireference
commands
database
network
utils
error
web
Some useful links Some useful links

View file

@ -1,12 +0,0 @@
royalnet.network
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.network
:members:
:private-members:
:undoc-members:

View file

@ -1,12 +0,0 @@
royalnet.utils
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.utils
:members:
:private-members:
:undoc-members:

View file

@ -1,20 +0,0 @@
royalnet.web
====================================
.. toctree::
:maxdepth: 2
.. automodule:: royalnet.web
:members:
:private-members:
:undoc-members:
Royalprints
------------------------------------
.. automodule:: royalnet.web.royalprints
:members:
:private-members:
:undoc-members: