evennia/docs/6.x/api/evennia.commands.default.comms.html
2026-02-15 19:06:04 +01:00

3711 lines
No EOL
384 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>evennia.commands.default.comms &#8212; Evennia latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d75fae25" />
<link rel="stylesheet" type="text/css" href="../_static/nature.css?v=279e0f84" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=e4a91a55" />
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.commands.default.general" href="evennia.commands.default.general.html" />
<link rel="prev" title="evennia.commands.default.cmdset_unloggedin" href="evennia.commands.default.cmdset_unloggedin.html" />
</head><body>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.commands.default.general.html" title="evennia.commands.default.general"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.commands.default.cmdset_unloggedin.html" title="evennia.commands.default.cmdset_unloggedin"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.commands.html" >evennia.commands</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.commands.default.html" accesskey="U">evennia.commands.default</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.commands.default.comms</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.commands.default.comms">
<span id="evennia-commands-default-comms"></span><h1>evennia.commands.default.comms<a class="headerlink" href="#module-evennia.commands.default.comms" title="Link to this heading"></a></h1>
<p>Communication commands:</p>
<ul class="simple">
<li><p>channel</p></li>
<li><p>page</p></li>
<li><p>irc/rss/grapevine/discord linking</p></li>
</ul>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CmdChannel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MuxCommand</span></code></a></p>
<p>Use and manage in-game channels.</p>
<dl>
<dt>Usage:</dt><dd><p>channel channelname &lt;msg&gt;
channel channel name = &lt;msg&gt;
channel (show all subscription)
channel/all (show available channels)
channel/alias channelname = alias[;alias…]
channel/unalias alias
channel/who channelname
channel/history channelname [= index]
channel/sub channelname [= alias[;alias…]]
channel/unsub channelname[,channelname, …]
channel/mute channelname[,channelname,…]
channel/unmute channelname[,channelname,…]</p>
<p>channel/create channelname[;alias;alias[:typeclass]] [= description]
channel/destroy channelname [= reason]
channel/desc channelname = description
channel/lock channelname = lockstring
channel/unlock channelname = lockstring
channel/ban channelname (list bans)
channel/ban[/quiet] channelname[, channelname, …] = subscribername [: reason]
channel/unban[/quiet] channelname[, channelname, …] = subscribername
channel/boot[/quiet] channelname[,channelname,…] = subscribername [: reason]</p>
</dd>
</dl>
<section id="subtopics">
<h2>subtopics<a class="headerlink" href="#subtopics" title="Link to this heading"></a></h2>
<section id="sending">
<h3>sending<a class="headerlink" href="#sending" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel channelname msg</dt><dd><p>channel channel name = msg (with space in channel name)</p>
</dd>
</dl>
<p>This sends a message to the channel. Note that you will rarely use this
command like this; instead you can use the alias</p>
<blockquote>
<div><p>channelname &lt;msg&gt;
channelalias &lt;msg&gt;</p>
</div></blockquote>
<p>For example</p>
<blockquote>
<div><p>public Hello World
pub Hello World</p>
</div></blockquote>
<p>(this shortcut doesnt work for aliases containing spaces)</p>
<p>See channel/alias for help on setting channel aliases.</p>
</section>
<section id="alias-and-unalias">
<h3>alias and unalias<a class="headerlink" href="#alias-and-unalias" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/alias channel = alias[;alias[;alias…]]</dt><dd><p>channel/unalias alias
channel - this will list your subs and aliases to each channel</p>
</dd>
</dl>
<p>Set one or more personal aliases for referencing a channel. For example:</p>
<blockquote>
<div><p>channel/alias warriors guild = warrior;wguild;warchannel;warrior guild</p>
</div></blockquote>
<p>You can now send to the channel using all of these:</p>
<blockquote>
<div><p>warriors guild Hello
warrior Hello
wguild Hello
warchannel Hello</p>
</div></blockquote>
<p>Note that this will not work if the alias has a space in it. So the
warrior guild alias must be used with the <strong>channel</strong> command:</p>
<blockquote>
<div><p>channel warrior guild = Hello</p>
</div></blockquote>
<p>Channel-aliases can be removed one at a time, using the /unalias switch.</p>
</section>
<section id="who">
<h3>who<a class="headerlink" href="#who" title="Link to this heading"></a></h3>
<p>Usage: channel/who channelname</p>
<p>List the channels subscribers. Shows who are currently offline or are
muting the channel. Subscribers who are muting will not see messages sent
to the channel (use channel/mute to mute a channel).</p>
</section>
<section id="history">
<h3>history<a class="headerlink" href="#history" title="Link to this heading"></a></h3>
<p>Usage: channel/history channel [= index]</p>
<p>This will display the last <a href="#id1"><span class="problematic" id="id2">|</span></a>c20|n lines of channel history. By supplying an
index number, you will step that many lines back before viewing those 20 lines.</p>
<p>For example:</p>
<blockquote>
<div><p>channel/history public = 35</p>
</div></blockquote>
<p>will go back 35 lines and show the previous 20 lines from that point (so
lines -35 to -55).</p>
</section>
<section id="sub-and-unsub">
<h3>sub and unsub<a class="headerlink" href="#sub-and-unsub" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/sub channel [=alias[;alias;…]]</dt><dd><p>channel/unsub channel</p>
</dd>
</dl>
<p>This subscribes you to a channel and optionally assigns personal shortcuts
for you to use to send to that channel (see aliases). When you unsub, all
your personal aliases will also be removed.</p>
</section>
<section id="mute-and-unmute">
<h3>mute and unmute<a class="headerlink" href="#mute-and-unmute" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/mute channelname</dt><dd><p>channel/unmute channelname</p>
</dd>
</dl>
<p>Muting silences all output from the channel without actually
un-subscribing. Other channel members will see that you are muted in the /who
list. Sending a message to the channel will automatically unmute you.</p>
</section>
<section id="create-and-destroy">
<h3>create and destroy<a class="headerlink" href="#create-and-destroy" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]</dt><dd><p>channel/destroy channelname [= reason]</p>
</dd>
</dl>
<p>Creates a new channel (or destroys one you control). You will automatically
join the channel you create and everyone will be kicked and loose all aliases
to a destroyed channel.</p>
</section>
<section id="lock-and-unlock">
<h3>lock and unlock<a class="headerlink" href="#lock-and-unlock" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/lock channelname = lockstring</dt><dd><p>channel/unlock channelname = lockstring</p>
</dd>
</dl>
<p>Note: this is an admin command.</p>
<p>A lockstring is on the form locktype:lockfunc(). Channels understand three
locktypes:</p>
<blockquote>
<div><p>listen - who may listen or join the channel.
send - who may send messages to the channel
control - who controls the channel. This is usually the one creating</p>
<blockquote>
<div><p>the channel.</p>
</div></blockquote>
</div></blockquote>
<p>Common lockfuncs are all() and perm(). To make a channel everyone can
listen to but only builders can talk on, use this:</p>
<blockquote>
<div><p>listen:all()
send: perm(Builders)</p>
</div></blockquote>
</section>
<section id="boot-and-ban">
<h3>boot and ban<a class="headerlink" href="#boot-and-ban" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage:</dt><dd><p>channel/boot[/quiet] channelname[,channelname,…] = subscribername [: reason]
channel/ban channelname[, channelname, …] = subscribername [: reason]
channel/unban channelname[, channelname, …] = subscribername
channel/unban channelname
channel/ban channelname (list bans)</p>
</dd>
</dl>
<p>Booting will kick a named subscriber from channel(s) temporarily. The
reason will be passed to the booted user. Unless the /quiet switch is
used, the channel will also be informed of the action. A booted user is
still able to re-connect, but theyll have to set up their aliases again.</p>
<p>Banning will blacklist a user from (re)joining the provided channels. It
will then proceed to boot them from those channels if they were connected.
The reason and <strong>/quiet</strong> works the same as for booting.</p>
<p class="rubric">Example</p>
<p>boot mychannel1 = EvilUser : Kicking you to cool down a bit.
ban mychannel1,mychannel2= EvilUser : Was banned for spamming.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.key">
<span class="sig-name descname"><span class="pre">key</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'&#64;channel'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.aliases">
<span class="sig-name descname"><span class="pre">aliases</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">['&#64;chan',</span> <span class="pre">'&#64;channels']</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.aliases" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.help_category">
<span class="sig-name descname"><span class="pre">help_category</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'comms'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.help_category" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.locks">
<span class="sig-name descname"><span class="pre">locks</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:not</span> <span class="pre">pperm(channel_banned);admin:all();manage:all();changelocks:perm(Admin)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.locks" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.switch_options">
<span class="sig-name descname"><span class="pre">switch_options</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">('list',</span> <span class="pre">'all',</span> <span class="pre">'history',</span> <span class="pre">'sub',</span> <span class="pre">'unsub',</span> <span class="pre">'mute',</span> <span class="pre">'unmute',</span> <span class="pre">'alias',</span> <span class="pre">'unalias',</span> <span class="pre">'create',</span> <span class="pre">'destroy',</span> <span class="pre">'desc',</span> <span class="pre">'lock',</span> <span class="pre">'unlock',</span> <span class="pre">'boot',</span> <span class="pre">'ban',</span> <span class="pre">'unban',</span> <span class="pre">'who')</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.switch_options" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.account_caller">
<span class="sig-name descname"><span class="pre">account_caller</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.account_caller" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.search_channel">
<span class="sig-name descname"><span class="pre">search_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channelname</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exact</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">handle_errors</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.search_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.search_channel" title="Link to this definition"></a></dt>
<dd><p>Helper function for searching for a single channel with some error
handling.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channelname</strong> (<em>str</em>) Name, alias #dbref or partial name/alias to search
for.</p></li>
<li><p><strong>exact</strong> (<em>bool</em><em>, </em><em>optional</em>) If an exact or fuzzy-match of the name should be done.
Note that even for a fuzzy match, an exactly given, unique channel name
will always be returned.</p></li>
<li><p><strong>handle_errors</strong> (<em>bool</em>) If true, use <strong>self.msg</strong> to report errors if
there are non/multiple matches. If so, the return will always be
a single match or None.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>object, list or None</em> </p>
<dl class="simple">
<dt>If <strong>handle_errors</strong> is <strong>True</strong>, this is either a found Channel</dt><dd><p>or <strong>None</strong>. Otherwise its a list of zero, one or more channels found.</p>
</dd>
</dl>
</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The listen and control accesses are checked before returning.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.msg_channel">
<span class="sig-name descname"><span class="pre">msg_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.msg_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.msg_channel" title="Link to this definition"></a></dt>
<dd><p>Send a message to a given channel. This will check the send
permission on the channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to send to.</p></li>
<li><p><strong>message</strong> (<em>str</em>) The message to send.</p></li>
<li><p><strong>**kwargs</strong> Unused by default. These kwargs will be passed into
all channel messaging hooks for custom overriding.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.get_channel_history">
<span class="sig-name descname"><span class="pre">get_channel_history</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start_index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.get_channel_history"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.get_channel_history" title="Link to this definition"></a></dt>
<dd><p>View a channels history.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to access.</p></li>
<li><p><strong>message</strong> (<em>str</em>) The message to send.</p></li>
<li><p><strong>**kwargs</strong> Unused by default. These kwargs will be passed into
all channel messaging hooks for custom overriding.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.sub_to_channel">
<span class="sig-name descname"><span class="pre">sub_to_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.sub_to_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.sub_to_channel" title="Link to this definition"></a></dt>
<dd><p>Subscribe to a channel. Note that all permissions should
be checked before this step.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to access.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if connection failed. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.unsub_from_channel">
<span class="sig-name descname"><span class="pre">unsub_from_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.unsub_from_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.unsub_from_channel" title="Link to this definition"></a></dt>
<dd><p>Un-Subscribe to a channel. Note that all permissions should
be checked before this step.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to unsub from.</p></li>
<li><p><strong>**kwargs</strong> Passed on to nick removal.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if un-connection succeeded. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.add_alias">
<span class="sig-name descname"><span class="pre">add_alias</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">alias</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.add_alias"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.add_alias" title="Link to this definition"></a></dt>
<dd><p>Add a new alias (nick) for the user to use with this channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to alias.</p></li>
<li><p><strong>alias</strong> (<em>str</em>) The personal alias to use for this channel.</p></li>
<li><p><strong>**kwargs</strong> If given, passed into nicks.add.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>We add two nicks - one is a plain <strong>alias -&gt; channel.key</strong> that
we need to be able to reference this channel easily. The other
is a templated nick to easily be able to send messages to the
channel without needing to give the full <strong>channel</strong> command. The
structure of this nick is given by <strong>self.channel_msg_pattern</strong>
and <strong>self.channel_msg_nick_replacement</strong>. By default it maps
<strong>alias &lt;msg&gt; -&gt; channel &lt;channelname&gt; = &lt;msg&gt;</strong>, so that you can
for example just write <strong>pub Hello</strong> to send a message.</p>
<p>The alias created is <strong>alias $1 -&gt; channel channel = $1</strong>, to allow
for sending to channel using the main channel command.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.remove_alias">
<span class="sig-name descname"><span class="pre">remove_alias</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">alias</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.remove_alias"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.remove_alias" title="Link to this definition"></a></dt>
<dd><p>Remove an alias from a channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>alias</strong> (<em>str</em><em>, </em><em>optional</em>) The alias to remove.
The channel will be reverse-determined from the
alias, if it exists.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if removal succeeded. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
<p><a href="#id3"><span class="problematic" id="id4">**</span></a>kwargs: If given, passed into nicks.get/add.</p>
</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This will remove two nicks - the plain channel alias and the templated
nick used for easily sending messages to the channel.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.get_channel_aliases">
<span class="sig-name descname"><span class="pre">get_channel_aliases</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.get_channel_aliases"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.get_channel_aliases" title="Link to this definition"></a></dt>
<dd><p>Get a users aliases for a given channel. The user is retrieved
through self.caller.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to act on.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>list</em> A list of zero, one or more alias-strings.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.mute_channel">
<span class="sig-name descname"><span class="pre">mute_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.mute_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.mute_channel" title="Link to this definition"></a></dt>
<dd><p>Temporarily mute a channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to alias.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if muting successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.unmute_channel">
<span class="sig-name descname"><span class="pre">unmute_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.unmute_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.unmute_channel" title="Link to this definition"></a></dt>
<dd><p>Unmute a channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to alias.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if unmuting successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.create_channel">
<span class="sig-name descname"><span class="pre">create_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">typeclass</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">aliases</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.create_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.create_channel" title="Link to this definition"></a></dt>
<dd><p>Create a new channel. Its name must not previously exist (case agnostic)
(users can alias as needed). Will also connect to the new channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>name</strong> (<em>str</em>) The new channel name/key.</p></li>
<li><p><strong>description</strong> (<em>str</em>) This is used in listings.</p></li>
<li><p><strong>aliases</strong> (<em>list</em>) A list of strings - alternative aliases for the channel
(not to be confused with per-user aliases; these are available for
everyone).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>channel, str</em> </p>
<dl class="simple">
<dt>new_channel, “” if creation successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.destroy_channel">
<span class="sig-name descname"><span class="pre">destroy_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.destroy_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.destroy_channel" title="Link to this definition"></a></dt>
<dd><p>Destroy an existing channel. Access should be checked before
calling this function.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to alias.</p></li>
<li><p><strong>message</strong> (<em>str</em><em>, </em><em>optional</em>) Final message to send onto the channel
before destroying it. If not given, a default message is
used. Set to the empty string for no message.</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>if typeclass:</dt><dd><p>pass</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.set_lock">
<span class="sig-name descname"><span class="pre">set_lock</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lockstring</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.set_lock"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.set_lock" title="Link to this definition"></a></dt>
<dd><p>Set a lockstring on a channel. Permissions must have been
checked before this call.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to operate on.</p></li>
<li><p><strong>lockstring</strong> (<em>str</em>) A lockstring on the form type:lockfunc();…’</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if setting lock was successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.unset_lock">
<span class="sig-name descname"><span class="pre">unset_lock</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lockstring</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.unset_lock"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.unset_lock" title="Link to this definition"></a></dt>
<dd><p>Remove locks in a lockstring on a channel. Permissions must have been
checked before this call.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to operate on.</p></li>
<li><p><strong>lockstring</strong> (<em>str</em>) A lockstring on the form type:lockfunc();…’</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if setting lock was successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.set_desc">
<span class="sig-name descname"><span class="pre">set_desc</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.set_desc"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.set_desc" title="Link to this definition"></a></dt>
<dd><p>Set a channel description. This is shown in listings etc.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>caller</strong> (<em>Object</em><em> or </em><em>Account</em>) The entity performing the action.</p></li>
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to operate on.</p></li>
<li><p><strong>description</strong> (<em>str</em>) A short description of the channel.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if setting lock was successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.boot_user">
<span class="sig-name descname"><span class="pre">boot_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">quiet</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reason</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.boot_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.boot_user" title="Link to this definition"></a></dt>
<dd><p>Boot a user from a channel, with optional reason. This will
also remove all their aliases for this channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to operate on.</p></li>
<li><p><strong>target</strong> (<em>Object</em><em> or </em><em>Account</em>) The entity to boot.</p></li>
<li><p><strong>quiet</strong> (<em>bool</em><em>, </em><em>optional</em>) Whether or not to announce to channel.</p></li>
<li><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) A reason for the boot.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if setting lock was successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.ban_user">
<span class="sig-name descname"><span class="pre">ban_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">quiet</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reason</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.ban_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.ban_user" title="Link to this definition"></a></dt>
<dd><p>Ban a user from a channel, by locking them out. This will also
boot them, if they are currently connected.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to operate on.</p></li>
<li><p><strong>target</strong> (<em>Object</em><em> or </em><em>Account</em>) The entity to ban</p></li>
<li><p><strong>quiet</strong> (<em>bool</em><em>, </em><em>optional</em>) Whether or not to announce to channel.</p></li>
<li><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) A reason for the ban</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if banning was successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.unban_user">
<span class="sig-name descname"><span class="pre">unban_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.unban_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.unban_user" title="Link to this definition"></a></dt>
<dd><p>Un-Ban a user from a channel. This will not reconnect them
to the channel, just allow them to connect again (assuming
they have the suitable listen lock like everyone else).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>channel</strong> (<em>Channel</em>) The channel to operate on.</p></li>
<li><p><strong>target</strong> (<em>Object</em><em> or </em><em>Account</em>) The entity to unban</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool, str</em> </p>
<dl class="simple">
<dt>True, None if unbanning was successful. If False,</dt><dd><p>the second part is an error string.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.channel_list_bans">
<span class="sig-name descname"><span class="pre">channel_list_bans</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.channel_list_bans"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.channel_list_bans" title="Link to this definition"></a></dt>
<dd><p>Show a channels bans.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to operate on.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>list</em> A list of strings, each the name of a banned user.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.channel_list_who">
<span class="sig-name descname"><span class="pre">channel_list_who</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.channel_list_who"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.channel_list_who" title="Link to this definition"></a></dt>
<dd><p>Show a list of online people is subscribing to a channel. This will check
the control permission of <strong>caller</strong> to determine if only online users
should be returned or everyone.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to operate on.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>list</em> </p>
<dl class="simple">
<dt>A list of prepared strings, with name + markers for if they are</dt><dd><p>muted or offline.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.list_channels">
<span class="sig-name descname"><span class="pre">list_channels</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channelcls=&lt;class</span> <span class="pre">'evennia.comms.comms.DefaultChannel'&gt;</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.list_channels"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.list_channels" title="Link to this definition"></a></dt>
<dd><p>Return a available channels.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>channelcls</strong> (<em>Channel</em><em>, </em><em>optional</em>) The channel-class to query on. Defaults
to the default channel class from settings.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>tuple</em> </p>
<dl class="simple">
<dt>A tuple <strong>(subbed_chans, available_chans)</strong> with the channels</dt><dd><p>currently subscribed to, and those we have listen access to but
dont actually sub to yet.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.display_subbed_channels">
<span class="sig-name descname"><span class="pre">display_subbed_channels</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subscribed</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.display_subbed_channels"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.display_subbed_channels" title="Link to this definition"></a></dt>
<dd><p>Display channels subscribed to.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subscribed</strong> (<em>list</em>) List of subscribed channels</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>EvTable</em> Table to display.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.display_all_channels">
<span class="sig-name descname"><span class="pre">display_all_channels</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subscribed</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">available</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.display_all_channels"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.display_all_channels" title="Link to this definition"></a></dt>
<dd><p>Display all available channels</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subscribed</strong> (<em>list</em>) List of subscribed channels</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>EvTable</em> Table to display.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.func">
<span class="sig-name descname"><span class="pre">func</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdChannel.func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.func" title="Link to this definition"></a></dt>
<dd><p>Main functionality of command.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.lock_storage">
<span class="sig-name descname"><span class="pre">lock_storage</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:not</span> <span class="pre">pperm(channel_banned);admin:all();manage:all();changelocks:perm(Admin)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.lock_storage" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdChannel.search_index_entry">
<span class="sig-name descname"><span class="pre">search_index_entry</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'aliases':</span> <span class="pre">'&#64;chan</span> <span class="pre">&#64;channels',</span> <span class="pre">'category':</span> <span class="pre">'comms',</span> <span class="pre">'key':</span> <span class="pre">'&#64;channel',</span> <span class="pre">'no_prefix':</span> <span class="pre">'channel</span> <span class="pre">chan</span> <span class="pre">channels',</span> <span class="pre">'tags':</span> <span class="pre">'',</span> <span class="pre">'text':</span> <span class="pre">&quot;\nUse</span> <span class="pre">and</span> <span class="pre">manage</span> <span class="pre">in-game</span> <span class="pre">channels.\n\nUsage:\n</span>&#160; <span class="pre">channel</span> <span class="pre">channelname</span> <span class="pre">&lt;msg&gt;\n</span>&#160; <span class="pre">channel</span> <span class="pre">channel</span> <span class="pre">name</span> <span class="pre">=</span> <span class="pre">&lt;msg&gt;\n</span>&#160; <span class="pre">channel</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">(show</span> <span class="pre">all</span> <span class="pre">subscription)\n</span>&#160; <span class="pre">channel/all</span>&#160;&#160;&#160; <span class="pre">(show</span> <span class="pre">available</span> <span class="pre">channels)\n</span>&#160; <span class="pre">channel/alias</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">alias[;alias...]\n</span>&#160; <span class="pre">channel/unalias</span> <span class="pre">alias\n</span>&#160; <span class="pre">channel/who</span> <span class="pre">channelname\n</span>&#160; <span class="pre">channel/history</span> <span class="pre">channelname</span> <span class="pre">[=</span> <span class="pre">index]\n</span>&#160; <span class="pre">channel/sub</span> <span class="pre">channelname</span> <span class="pre">[=</span> <span class="pre">alias[;alias...]]\n</span>&#160; <span class="pre">channel/unsub</span> <span class="pre">channelname[,channelname,</span> <span class="pre">...]\n</span>&#160; <span class="pre">channel/mute</span> <span class="pre">channelname[,channelname,...]\n</span>&#160; <span class="pre">channel/unmute</span> <span class="pre">channelname[,channelname,...]\n\n</span>&#160; <span class="pre">channel/create</span> <span class="pre">channelname[;alias;alias[:typeclass]]</span> <span class="pre">[=</span> <span class="pre">description]\n</span>&#160; <span class="pre">channel/destroy</span> <span class="pre">channelname</span> <span class="pre">[=</span> <span class="pre">reason]\n</span>&#160; <span class="pre">channel/desc</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">description\n</span>&#160; <span class="pre">channel/lock</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">lockstring\n</span>&#160; <span class="pre">channel/unlock</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">lockstring\n</span>&#160; <span class="pre">channel/ban</span> <span class="pre">channelname</span>&#160;&#160; <span class="pre">(list</span> <span class="pre">bans)\n</span>&#160; <span class="pre">channel/ban[/quiet]</span> <span class="pre">channelname[,</span> <span class="pre">channelname,</span> <span class="pre">...]</span> <span class="pre">=</span> <span class="pre">subscribername</span> <span class="pre">[:</span> <span class="pre">reason]\n</span>&#160; <span class="pre">channel/unban[/quiet]</span> <span class="pre">channelname[,</span> <span class="pre">channelname,</span> <span class="pre">...]</span> <span class="pre">=</span> <span class="pre">subscribername\n</span>&#160; <span class="pre">channel/boot[/quiet]</span> <span class="pre">channelname[,channelname,...]</span> <span class="pre">=</span> <span class="pre">subscribername</span> <span class="pre">[:</span> <span class="pre">reason]\n\n#</span> <span class="pre">subtopics\n\n##</span> <span class="pre">sending\n\nUsage:</span> <span class="pre">channel</span> <span class="pre">channelname</span> <span class="pre">msg\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel</span> <span class="pre">channel</span> <span class="pre">name</span> <span class="pre">=</span> <span class="pre">msg</span>&#160; <span class="pre">(with</span> <span class="pre">space</span> <span class="pre">in</span> <span class="pre">channel</span> <span class="pre">name)\n\nThis</span> <span class="pre">sends</span> <span class="pre">a</span> <span class="pre">message</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel.</span> <span class="pre">Note</span> <span class="pre">that</span> <span class="pre">you</span> <span class="pre">will</span> <span class="pre">rarely</span> <span class="pre">use</span> <span class="pre">this\ncommand</span> <span class="pre">like</span> <span class="pre">this;</span> <span class="pre">instead</span> <span class="pre">you</span> <span class="pre">can</span> <span class="pre">use</span> <span class="pre">the</span> <span class="pre">alias\n\n</span>&#160;&#160;&#160; <span class="pre">channelname</span> <span class="pre">&lt;msg&gt;\n</span>&#160;&#160;&#160; <span class="pre">channelalias</span> <span class="pre">&lt;msg&gt;\n\nFor</span> <span class="pre">example\n\n</span>&#160;&#160;&#160; <span class="pre">public</span> <span class="pre">Hello</span> <span class="pre">World\n</span>&#160;&#160;&#160; <span class="pre">pub</span> <span class="pre">Hello</span> <span class="pre">World\n\n(this</span> <span class="pre">shortcut</span> <span class="pre">doesn't</span> <span class="pre">work</span> <span class="pre">for</span> <span class="pre">aliases</span> <span class="pre">containing</span> <span class="pre">spaces)\n\nSee</span> <span class="pre">channel/alias</span> <span class="pre">for</span> <span class="pre">help</span> <span class="pre">on</span> <span class="pre">setting</span> <span class="pre">channel</span> <span class="pre">aliases.\n\n##</span> <span class="pre">alias</span> <span class="pre">and</span> <span class="pre">unalias\n\nUsage:</span> <span class="pre">channel/alias</span> <span class="pre">channel</span> <span class="pre">=</span> <span class="pre">alias[;alias[;alias...]]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unalias</span> <span class="pre">alias\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel</span>&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">this</span> <span class="pre">will</span> <span class="pre">list</span> <span class="pre">your</span> <span class="pre">subs</span> <span class="pre">and</span> <span class="pre">aliases</span> <span class="pre">to</span> <span class="pre">each</span> <span class="pre">channel\n\nSet</span> <span class="pre">one</span> <span class="pre">or</span> <span class="pre">more</span> <span class="pre">personal</span> <span class="pre">aliases</span> <span class="pre">for</span> <span class="pre">referencing</span> <span class="pre">a</span> <span class="pre">channel.</span> <span class="pre">For</span> <span class="pre">example:\n\n</span>&#160;&#160;&#160; <span class="pre">channel/alias</span> <span class="pre">warrior's</span> <span class="pre">guild</span> <span class="pre">=</span> <span class="pre">warrior;wguild;warchannel;warrior</span> <span class="pre">guild\n\nYou</span> <span class="pre">can</span> <span class="pre">now</span> <span class="pre">send</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">using</span> <span class="pre">all</span> <span class="pre">of</span> <span class="pre">these:\n\n</span>&#160;&#160;&#160; <span class="pre">warrior's</span> <span class="pre">guild</span> <span class="pre">Hello\n</span>&#160;&#160;&#160; <span class="pre">warrior</span> <span class="pre">Hello\n</span>&#160;&#160;&#160; <span class="pre">wguild</span> <span class="pre">Hello\n</span>&#160;&#160;&#160; <span class="pre">warchannel</span> <span class="pre">Hello\n\nNote</span> <span class="pre">that</span> <span class="pre">this</span> <span class="pre">will</span> <span class="pre">not</span> <span class="pre">work</span> <span class="pre">if</span> <span class="pre">the</span> <span class="pre">alias</span> <span class="pre">has</span> <span class="pre">a</span> <span class="pre">space</span> <span class="pre">in</span> <span class="pre">it.</span> <span class="pre">So</span> <span class="pre">the\n'warrior</span> <span class="pre">guild'</span> <span class="pre">alias</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">used</span> <span class="pre">with</span> <span class="pre">the</span> <span class="pre">`channel`</span> <span class="pre">command:\n\n</span>&#160;&#160;&#160; <span class="pre">channel</span> <span class="pre">warrior</span> <span class="pre">guild</span> <span class="pre">=</span> <span class="pre">Hello\n\nChannel-aliases</span> <span class="pre">can</span> <span class="pre">be</span> <span class="pre">removed</span> <span class="pre">one</span> <span class="pre">at</span> <span class="pre">a</span> <span class="pre">time,</span> <span class="pre">using</span> <span class="pre">the</span> <span class="pre">'/unalias'</span> <span class="pre">switch.\n\n##</span> <span class="pre">who\n\nUsage:</span> <span class="pre">channel/who</span> <span class="pre">channelname\n\nList</span> <span class="pre">the</span> <span class="pre">channel's</span> <span class="pre">subscribers.</span> <span class="pre">Shows</span> <span class="pre">who</span> <span class="pre">are</span> <span class="pre">currently</span> <span class="pre">offline</span> <span class="pre">or</span> <span class="pre">are\nmuting</span> <span class="pre">the</span> <span class="pre">channel.</span> <span class="pre">Subscribers</span> <span class="pre">who</span> <span class="pre">are</span> <span class="pre">'muting'</span> <span class="pre">will</span> <span class="pre">not</span> <span class="pre">see</span> <span class="pre">messages</span> <span class="pre">sent\nto</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">(use</span> <span class="pre">channel/mute</span> <span class="pre">to</span> <span class="pre">mute</span> <span class="pre">a</span> <span class="pre">channel).\n\n##</span> <span class="pre">history\n\nUsage:</span> <span class="pre">channel/history</span> <span class="pre">channel</span> <span class="pre">[=</span> <span class="pre">index]\n\nThis</span> <span class="pre">will</span> <span class="pre">display</span> <span class="pre">the</span> <span class="pre">last</span> <span class="pre">|c20|n</span> <span class="pre">lines</span> <span class="pre">of</span> <span class="pre">channel</span> <span class="pre">history.</span> <span class="pre">By</span> <span class="pre">supplying</span> <span class="pre">an\nindex</span> <span class="pre">number,</span> <span class="pre">you</span> <span class="pre">will</span> <span class="pre">step</span> <span class="pre">that</span> <span class="pre">many</span> <span class="pre">lines</span> <span class="pre">back</span> <span class="pre">before</span> <span class="pre">viewing</span> <span class="pre">those</span> <span class="pre">20</span> <span class="pre">lines.\n\nFor</span> <span class="pre">example:\n\n</span>&#160;&#160;&#160; <span class="pre">channel/history</span> <span class="pre">public</span> <span class="pre">=</span> <span class="pre">35\n\nwill</span> <span class="pre">go</span> <span class="pre">back</span> <span class="pre">35</span> <span class="pre">lines</span> <span class="pre">and</span> <span class="pre">show</span> <span class="pre">the</span> <span class="pre">previous</span> <span class="pre">20</span> <span class="pre">lines</span> <span class="pre">from</span> <span class="pre">that</span> <span class="pre">point</span> <span class="pre">(so\nlines</span> <span class="pre">-35</span> <span class="pre">to</span> <span class="pre">-55).\n\n##</span> <span class="pre">sub</span> <span class="pre">and</span> <span class="pre">unsub\n\nUsage:</span> <span class="pre">channel/sub</span> <span class="pre">channel</span> <span class="pre">[=alias[;alias;...]]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unsub</span> <span class="pre">channel\n\nThis</span> <span class="pre">subscribes</span> <span class="pre">you</span> <span class="pre">to</span> <span class="pre">a</span> <span class="pre">channel</span> <span class="pre">and</span> <span class="pre">optionally</span> <span class="pre">assigns</span> <span class="pre">personal</span> <span class="pre">shortcuts\nfor</span> <span class="pre">you</span> <span class="pre">to</span> <span class="pre">use</span> <span class="pre">to</span> <span class="pre">send</span> <span class="pre">to</span> <span class="pre">that</span> <span class="pre">channel</span> <span class="pre">(see</span> <span class="pre">aliases).</span> <span class="pre">When</span> <span class="pre">you</span> <span class="pre">unsub,</span> <span class="pre">all\nyour</span> <span class="pre">personal</span> <span class="pre">aliases</span> <span class="pre">will</span> <span class="pre">also</span> <span class="pre">be</span> <span class="pre">removed.\n\n##</span> <span class="pre">mute</span> <span class="pre">and</span> <span class="pre">unmute\n\nUsage:</span> <span class="pre">channel/mute</span> <span class="pre">channelname\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unmute</span> <span class="pre">channelname\n\nMuting</span> <span class="pre">silences</span> <span class="pre">all</span> <span class="pre">output</span> <span class="pre">from</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">without</span> <span class="pre">actually\nun-subscribing.</span> <span class="pre">Other</span> <span class="pre">channel</span> <span class="pre">members</span> <span class="pre">will</span> <span class="pre">see</span> <span class="pre">that</span> <span class="pre">you</span> <span class="pre">are</span> <span class="pre">muted</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">/who\nlist.</span> <span class="pre">Sending</span> <span class="pre">a</span> <span class="pre">message</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">will</span> <span class="pre">automatically</span> <span class="pre">unmute</span> <span class="pre">you.\n\n##</span> <span class="pre">create</span> <span class="pre">and</span> <span class="pre">destroy\n\nUsage:</span> <span class="pre">channel/create</span> <span class="pre">channelname[;alias;alias[:typeclass]]</span> <span class="pre">[=</span> <span class="pre">description]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/destroy</span> <span class="pre">channelname</span> <span class="pre">[=</span> <span class="pre">reason]\n\nCreates</span> <span class="pre">a</span> <span class="pre">new</span> <span class="pre">channel</span> <span class="pre">(or</span> <span class="pre">destroys</span> <span class="pre">one</span> <span class="pre">you</span> <span class="pre">control).</span> <span class="pre">You</span> <span class="pre">will</span> <span class="pre">automatically\njoin</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">you</span> <span class="pre">create</span> <span class="pre">and</span> <span class="pre">everyone</span> <span class="pre">will</span> <span class="pre">be</span> <span class="pre">kicked</span> <span class="pre">and</span> <span class="pre">loose</span> <span class="pre">all</span> <span class="pre">aliases\nto</span> <span class="pre">a</span> <span class="pre">destroyed</span> <span class="pre">channel.\n\n##</span> <span class="pre">lock</span> <span class="pre">and</span> <span class="pre">unlock\n\nUsage:</span> <span class="pre">channel/lock</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">lockstring\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unlock</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">lockstring\n\nNote:</span> <span class="pre">this</span> <span class="pre">is</span> <span class="pre">an</span> <span class="pre">admin</span> <span class="pre">command.\n\nA</span> <span class="pre">lockstring</span> <span class="pre">is</span> <span class="pre">on</span> <span class="pre">the</span> <span class="pre">form</span> <span class="pre">locktype:lockfunc().</span> <span class="pre">Channels</span> <span class="pre">understand</span> <span class="pre">three\nlocktypes:\n</span>&#160;&#160;&#160; <span class="pre">listen</span> <span class="pre">-</span> <span class="pre">who</span> <span class="pre">may</span> <span class="pre">listen</span> <span class="pre">or</span> <span class="pre">join</span> <span class="pre">the</span> <span class="pre">channel.\n</span>&#160;&#160;&#160; <span class="pre">send</span> <span class="pre">-</span> <span class="pre">who</span> <span class="pre">may</span> <span class="pre">send</span> <span class="pre">messages</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel\n</span>&#160;&#160;&#160; <span class="pre">control</span> <span class="pre">-</span> <span class="pre">who</span> <span class="pre">controls</span> <span class="pre">the</span> <span class="pre">channel.</span> <span class="pre">This</span> <span class="pre">is</span> <span class="pre">usually</span> <span class="pre">the</span> <span class="pre">one</span> <span class="pre">creating\n</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">the</span> <span class="pre">channel.\n\nCommon</span> <span class="pre">lockfuncs</span> <span class="pre">are</span> <span class="pre">all()</span> <span class="pre">and</span> <span class="pre">perm().</span> <span class="pre">To</span> <span class="pre">make</span> <span class="pre">a</span> <span class="pre">channel</span> <span class="pre">everyone</span> <span class="pre">can\nlisten</span> <span class="pre">to</span> <span class="pre">but</span> <span class="pre">only</span> <span class="pre">builders</span> <span class="pre">can</span> <span class="pre">talk</span> <span class="pre">on,</span> <span class="pre">use</span> <span class="pre">this:\n\n</span>&#160;&#160;&#160; <span class="pre">listen:all()\n</span>&#160;&#160;&#160; <span class="pre">send:</span> <span class="pre">perm(Builders)\n\n##</span> <span class="pre">boot</span> <span class="pre">and</span> <span class="pre">ban\n\nUsage:\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/boot[/quiet]</span> <span class="pre">channelname[,channelname,...]</span> <span class="pre">=</span> <span class="pre">subscribername</span> <span class="pre">[:</span> <span class="pre">reason]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/ban</span> <span class="pre">channelname[,</span> <span class="pre">channelname,</span> <span class="pre">...]</span> <span class="pre">=</span> <span class="pre">subscribername</span> <span class="pre">[:</span> <span class="pre">reason]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unban</span> <span class="pre">channelname[,</span> <span class="pre">channelname,</span> <span class="pre">...]</span> <span class="pre">=</span> <span class="pre">subscribername\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unban</span> <span class="pre">channelname\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/ban</span> <span class="pre">channelname</span>&#160;&#160;&#160; <span class="pre">(list</span> <span class="pre">bans)\n\nBooting</span> <span class="pre">will</span> <span class="pre">kick</span> <span class="pre">a</span> <span class="pre">named</span> <span class="pre">subscriber</span> <span class="pre">from</span> <span class="pre">channel(s)</span> <span class="pre">temporarily.</span> <span class="pre">The\n'reason'</span> <span class="pre">will</span> <span class="pre">be</span> <span class="pre">passed</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">booted</span> <span class="pre">user.</span> <span class="pre">Unless</span> <span class="pre">the</span> <span class="pre">/quiet</span> <span class="pre">switch</span> <span class="pre">is\nused,</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">will</span> <span class="pre">also</span> <span class="pre">be</span> <span class="pre">informed</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">action.</span> <span class="pre">A</span> <span class="pre">booted</span> <span class="pre">user</span> <span class="pre">is\nstill</span> <span class="pre">able</span> <span class="pre">to</span> <span class="pre">re-connect,</span> <span class="pre">but</span> <span class="pre">they'll</span> <span class="pre">have</span> <span class="pre">to</span> <span class="pre">set</span> <span class="pre">up</span> <span class="pre">their</span> <span class="pre">aliases</span> <span class="pre">again.\n\nBanning</span> <span class="pre">will</span> <span class="pre">blacklist</span> <span class="pre">a</span> <span class="pre">user</span> <span class="pre">from</span> <span class="pre">(re)joining</span> <span class="pre">the</span> <span class="pre">provided</span> <span class="pre">channels.</span> <span class="pre">It\nwill</span> <span class="pre">then</span> <span class="pre">proceed</span> <span class="pre">to</span> <span class="pre">boot</span> <span class="pre">them</span> <span class="pre">from</span> <span class="pre">those</span> <span class="pre">channels</span> <span class="pre">if</span> <span class="pre">they</span> <span class="pre">were</span> <span class="pre">connected.\nThe</span> <span class="pre">'reason'</span> <span class="pre">and</span> <span class="pre">`/quiet`</span> <span class="pre">works</span> <span class="pre">the</span> <span class="pre">same</span> <span class="pre">as</span> <span class="pre">for</span> <span class="pre">booting.\n\nExample:\n</span>&#160;&#160;&#160; <span class="pre">boot</span> <span class="pre">mychannel1</span> <span class="pre">=</span> <span class="pre">EvilUser</span> <span class="pre">:</span> <span class="pre">Kicking</span> <span class="pre">you</span> <span class="pre">to</span> <span class="pre">cool</span> <span class="pre">down</span> <span class="pre">a</span> <span class="pre">bit.\n</span>&#160;&#160;&#160; <span class="pre">ban</span> <span class="pre">mychannel1,mychannel2=</span> <span class="pre">EvilUser</span> <span class="pre">:</span> <span class="pre">Was</span> <span class="pre">banned</span> <span class="pre">for</span> <span class="pre">spamming.\n\n&quot;}</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannel.search_index_entry" title="Link to this definition"></a></dt>
<dd></dd></dl>
</section>
</section>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdObjectChannel">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CmdObjectChannel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdObjectChannel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdObjectChannel" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.commands.default.comms.CmdChannel" title="evennia.commands.default.comms.CmdChannel"><code class="xref py py-class docutils literal notranslate"><span class="pre">CmdChannel</span></code></a></p>
<p>Use and manage in-game channels.</p>
<dl>
<dt>Usage:</dt><dd><p>channel channelname &lt;msg&gt;
channel channel name = &lt;msg&gt;
channel (show all subscription)
channel/all (show available channels)
channel/alias channelname = alias[;alias…]
channel/unalias alias
channel/who channelname
channel/history channelname [= index]
channel/sub channelname [= alias[;alias…]]
channel/unsub channelname[,channelname, …]
channel/mute channelname[,channelname,…]
channel/unmute channelname[,channelname,…]</p>
<p>channel/create channelname[;alias;alias[:typeclass]] [= description]
channel/destroy channelname [= reason]
channel/desc channelname = description
channel/lock channelname = lockstring
channel/unlock channelname = lockstring
channel/ban channelname (list bans)
channel/ban[/quiet] channelname[, channelname, …] = subscribername [: reason]
channel/unban[/quiet] channelname[, channelname, …] = subscribername
channel/boot[/quiet] channelname[,channelname,…] = subscribername [: reason]</p>
</dd>
</dl>
<section id="id5">
<h2>subtopics<a class="headerlink" href="#id5" title="Link to this heading"></a></h2>
<section id="id6">
<h3>sending<a class="headerlink" href="#id6" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel channelname msg</dt><dd><p>channel channel name = msg (with space in channel name)</p>
</dd>
</dl>
<p>This sends a message to the channel. Note that you will rarely use this
command like this; instead you can use the alias</p>
<blockquote>
<div><p>channelname &lt;msg&gt;
channelalias &lt;msg&gt;</p>
</div></blockquote>
<p>For example</p>
<blockquote>
<div><p>public Hello World
pub Hello World</p>
</div></blockquote>
<p>(this shortcut doesnt work for aliases containing spaces)</p>
<p>See channel/alias for help on setting channel aliases.</p>
</section>
<section id="id7">
<h3>alias and unalias<a class="headerlink" href="#id7" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/alias channel = alias[;alias[;alias…]]</dt><dd><p>channel/unalias alias
channel - this will list your subs and aliases to each channel</p>
</dd>
</dl>
<p>Set one or more personal aliases for referencing a channel. For example:</p>
<blockquote>
<div><p>channel/alias warriors guild = warrior;wguild;warchannel;warrior guild</p>
</div></blockquote>
<p>You can now send to the channel using all of these:</p>
<blockquote>
<div><p>warriors guild Hello
warrior Hello
wguild Hello
warchannel Hello</p>
</div></blockquote>
<p>Note that this will not work if the alias has a space in it. So the
warrior guild alias must be used with the <strong>channel</strong> command:</p>
<blockquote>
<div><p>channel warrior guild = Hello</p>
</div></blockquote>
<p>Channel-aliases can be removed one at a time, using the /unalias switch.</p>
</section>
<section id="id8">
<h3>who<a class="headerlink" href="#id8" title="Link to this heading"></a></h3>
<p>Usage: channel/who channelname</p>
<p>List the channels subscribers. Shows who are currently offline or are
muting the channel. Subscribers who are muting will not see messages sent
to the channel (use channel/mute to mute a channel).</p>
</section>
<section id="id9">
<h3>history<a class="headerlink" href="#id9" title="Link to this heading"></a></h3>
<p>Usage: channel/history channel [= index]</p>
<p>This will display the last <a href="#id10"><span class="problematic" id="id11">|</span></a>c20|n lines of channel history. By supplying an
index number, you will step that many lines back before viewing those 20 lines.</p>
<p>For example:</p>
<blockquote>
<div><p>channel/history public = 35</p>
</div></blockquote>
<p>will go back 35 lines and show the previous 20 lines from that point (so
lines -35 to -55).</p>
</section>
<section id="id12">
<h3>sub and unsub<a class="headerlink" href="#id12" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/sub channel [=alias[;alias;…]]</dt><dd><p>channel/unsub channel</p>
</dd>
</dl>
<p>This subscribes you to a channel and optionally assigns personal shortcuts
for you to use to send to that channel (see aliases). When you unsub, all
your personal aliases will also be removed.</p>
</section>
<section id="id13">
<h3>mute and unmute<a class="headerlink" href="#id13" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/mute channelname</dt><dd><p>channel/unmute channelname</p>
</dd>
</dl>
<p>Muting silences all output from the channel without actually
un-subscribing. Other channel members will see that you are muted in the /who
list. Sending a message to the channel will automatically unmute you.</p>
</section>
<section id="id14">
<h3>create and destroy<a class="headerlink" href="#id14" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]</dt><dd><p>channel/destroy channelname [= reason]</p>
</dd>
</dl>
<p>Creates a new channel (or destroys one you control). You will automatically
join the channel you create and everyone will be kicked and loose all aliases
to a destroyed channel.</p>
</section>
<section id="id15">
<h3>lock and unlock<a class="headerlink" href="#id15" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage: channel/lock channelname = lockstring</dt><dd><p>channel/unlock channelname = lockstring</p>
</dd>
</dl>
<p>Note: this is an admin command.</p>
<p>A lockstring is on the form locktype:lockfunc(). Channels understand three
locktypes:</p>
<blockquote>
<div><p>listen - who may listen or join the channel.
send - who may send messages to the channel
control - who controls the channel. This is usually the one creating</p>
<blockquote>
<div><p>the channel.</p>
</div></blockquote>
</div></blockquote>
<p>Common lockfuncs are all() and perm(). To make a channel everyone can
listen to but only builders can talk on, use this:</p>
<blockquote>
<div><p>listen:all()
send: perm(Builders)</p>
</div></blockquote>
</section>
<section id="id16">
<h3>boot and ban<a class="headerlink" href="#id16" title="Link to this heading"></a></h3>
<dl class="simple">
<dt>Usage:</dt><dd><p>channel/boot[/quiet] channelname[,channelname,…] = subscribername [: reason]
channel/ban channelname[, channelname, …] = subscribername [: reason]
channel/unban channelname[, channelname, …] = subscribername
channel/unban channelname
channel/ban channelname (list bans)</p>
</dd>
</dl>
<p>Booting will kick a named subscriber from channel(s) temporarily. The
reason will be passed to the booted user. Unless the /quiet switch is
used, the channel will also be informed of the action. A booted user is
still able to re-connect, but theyll have to set up their aliases again.</p>
<p>Banning will blacklist a user from (re)joining the provided channels. It
will then proceed to boot them from those channels if they were connected.
The reason and <strong>/quiet</strong> works the same as for booting.</p>
<p class="rubric">Example</p>
<p>boot mychannel1 = EvilUser : Kicking you to cool down a bit.
ban mychannel1,mychannel2= EvilUser : Was banned for spamming.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdObjectChannel.account_caller">
<span class="sig-name descname"><span class="pre">account_caller</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdObjectChannel.account_caller" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdObjectChannel.aliases">
<span class="sig-name descname"><span class="pre">aliases</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">['&#64;chan',</span> <span class="pre">'&#64;channels']</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdObjectChannel.aliases" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdObjectChannel.help_category">
<span class="sig-name descname"><span class="pre">help_category</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'comms'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdObjectChannel.help_category" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdObjectChannel.key">
<span class="sig-name descname"><span class="pre">key</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'&#64;channel'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdObjectChannel.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdObjectChannel.lock_storage">
<span class="sig-name descname"><span class="pre">lock_storage</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:not</span> <span class="pre">pperm(channel_banned);admin:all();manage:all();changelocks:perm(Admin)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdObjectChannel.lock_storage" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdObjectChannel.search_index_entry">
<span class="sig-name descname"><span class="pre">search_index_entry</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'aliases':</span> <span class="pre">'&#64;chan</span> <span class="pre">&#64;channels',</span> <span class="pre">'category':</span> <span class="pre">'comms',</span> <span class="pre">'key':</span> <span class="pre">'&#64;channel',</span> <span class="pre">'no_prefix':</span> <span class="pre">'channel</span> <span class="pre">chan</span> <span class="pre">channels',</span> <span class="pre">'tags':</span> <span class="pre">'',</span> <span class="pre">'text':</span> <span class="pre">&quot;\nUse</span> <span class="pre">and</span> <span class="pre">manage</span> <span class="pre">in-game</span> <span class="pre">channels.\n\nUsage:\n</span>&#160; <span class="pre">channel</span> <span class="pre">channelname</span> <span class="pre">&lt;msg&gt;\n</span>&#160; <span class="pre">channel</span> <span class="pre">channel</span> <span class="pre">name</span> <span class="pre">=</span> <span class="pre">&lt;msg&gt;\n</span>&#160; <span class="pre">channel</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">(show</span> <span class="pre">all</span> <span class="pre">subscription)\n</span>&#160; <span class="pre">channel/all</span>&#160;&#160;&#160; <span class="pre">(show</span> <span class="pre">available</span> <span class="pre">channels)\n</span>&#160; <span class="pre">channel/alias</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">alias[;alias...]\n</span>&#160; <span class="pre">channel/unalias</span> <span class="pre">alias\n</span>&#160; <span class="pre">channel/who</span> <span class="pre">channelname\n</span>&#160; <span class="pre">channel/history</span> <span class="pre">channelname</span> <span class="pre">[=</span> <span class="pre">index]\n</span>&#160; <span class="pre">channel/sub</span> <span class="pre">channelname</span> <span class="pre">[=</span> <span class="pre">alias[;alias...]]\n</span>&#160; <span class="pre">channel/unsub</span> <span class="pre">channelname[,channelname,</span> <span class="pre">...]\n</span>&#160; <span class="pre">channel/mute</span> <span class="pre">channelname[,channelname,...]\n</span>&#160; <span class="pre">channel/unmute</span> <span class="pre">channelname[,channelname,...]\n\n</span>&#160; <span class="pre">channel/create</span> <span class="pre">channelname[;alias;alias[:typeclass]]</span> <span class="pre">[=</span> <span class="pre">description]\n</span>&#160; <span class="pre">channel/destroy</span> <span class="pre">channelname</span> <span class="pre">[=</span> <span class="pre">reason]\n</span>&#160; <span class="pre">channel/desc</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">description\n</span>&#160; <span class="pre">channel/lock</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">lockstring\n</span>&#160; <span class="pre">channel/unlock</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">lockstring\n</span>&#160; <span class="pre">channel/ban</span> <span class="pre">channelname</span>&#160;&#160; <span class="pre">(list</span> <span class="pre">bans)\n</span>&#160; <span class="pre">channel/ban[/quiet]</span> <span class="pre">channelname[,</span> <span class="pre">channelname,</span> <span class="pre">...]</span> <span class="pre">=</span> <span class="pre">subscribername</span> <span class="pre">[:</span> <span class="pre">reason]\n</span>&#160; <span class="pre">channel/unban[/quiet]</span> <span class="pre">channelname[,</span> <span class="pre">channelname,</span> <span class="pre">...]</span> <span class="pre">=</span> <span class="pre">subscribername\n</span>&#160; <span class="pre">channel/boot[/quiet]</span> <span class="pre">channelname[,channelname,...]</span> <span class="pre">=</span> <span class="pre">subscribername</span> <span class="pre">[:</span> <span class="pre">reason]\n\n#</span> <span class="pre">subtopics\n\n##</span> <span class="pre">sending\n\nUsage:</span> <span class="pre">channel</span> <span class="pre">channelname</span> <span class="pre">msg\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel</span> <span class="pre">channel</span> <span class="pre">name</span> <span class="pre">=</span> <span class="pre">msg</span>&#160; <span class="pre">(with</span> <span class="pre">space</span> <span class="pre">in</span> <span class="pre">channel</span> <span class="pre">name)\n\nThis</span> <span class="pre">sends</span> <span class="pre">a</span> <span class="pre">message</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel.</span> <span class="pre">Note</span> <span class="pre">that</span> <span class="pre">you</span> <span class="pre">will</span> <span class="pre">rarely</span> <span class="pre">use</span> <span class="pre">this\ncommand</span> <span class="pre">like</span> <span class="pre">this;</span> <span class="pre">instead</span> <span class="pre">you</span> <span class="pre">can</span> <span class="pre">use</span> <span class="pre">the</span> <span class="pre">alias\n\n</span>&#160;&#160;&#160; <span class="pre">channelname</span> <span class="pre">&lt;msg&gt;\n</span>&#160;&#160;&#160; <span class="pre">channelalias</span> <span class="pre">&lt;msg&gt;\n\nFor</span> <span class="pre">example\n\n</span>&#160;&#160;&#160; <span class="pre">public</span> <span class="pre">Hello</span> <span class="pre">World\n</span>&#160;&#160;&#160; <span class="pre">pub</span> <span class="pre">Hello</span> <span class="pre">World\n\n(this</span> <span class="pre">shortcut</span> <span class="pre">doesn't</span> <span class="pre">work</span> <span class="pre">for</span> <span class="pre">aliases</span> <span class="pre">containing</span> <span class="pre">spaces)\n\nSee</span> <span class="pre">channel/alias</span> <span class="pre">for</span> <span class="pre">help</span> <span class="pre">on</span> <span class="pre">setting</span> <span class="pre">channel</span> <span class="pre">aliases.\n\n##</span> <span class="pre">alias</span> <span class="pre">and</span> <span class="pre">unalias\n\nUsage:</span> <span class="pre">channel/alias</span> <span class="pre">channel</span> <span class="pre">=</span> <span class="pre">alias[;alias[;alias...]]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unalias</span> <span class="pre">alias\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel</span>&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">this</span> <span class="pre">will</span> <span class="pre">list</span> <span class="pre">your</span> <span class="pre">subs</span> <span class="pre">and</span> <span class="pre">aliases</span> <span class="pre">to</span> <span class="pre">each</span> <span class="pre">channel\n\nSet</span> <span class="pre">one</span> <span class="pre">or</span> <span class="pre">more</span> <span class="pre">personal</span> <span class="pre">aliases</span> <span class="pre">for</span> <span class="pre">referencing</span> <span class="pre">a</span> <span class="pre">channel.</span> <span class="pre">For</span> <span class="pre">example:\n\n</span>&#160;&#160;&#160; <span class="pre">channel/alias</span> <span class="pre">warrior's</span> <span class="pre">guild</span> <span class="pre">=</span> <span class="pre">warrior;wguild;warchannel;warrior</span> <span class="pre">guild\n\nYou</span> <span class="pre">can</span> <span class="pre">now</span> <span class="pre">send</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">using</span> <span class="pre">all</span> <span class="pre">of</span> <span class="pre">these:\n\n</span>&#160;&#160;&#160; <span class="pre">warrior's</span> <span class="pre">guild</span> <span class="pre">Hello\n</span>&#160;&#160;&#160; <span class="pre">warrior</span> <span class="pre">Hello\n</span>&#160;&#160;&#160; <span class="pre">wguild</span> <span class="pre">Hello\n</span>&#160;&#160;&#160; <span class="pre">warchannel</span> <span class="pre">Hello\n\nNote</span> <span class="pre">that</span> <span class="pre">this</span> <span class="pre">will</span> <span class="pre">not</span> <span class="pre">work</span> <span class="pre">if</span> <span class="pre">the</span> <span class="pre">alias</span> <span class="pre">has</span> <span class="pre">a</span> <span class="pre">space</span> <span class="pre">in</span> <span class="pre">it.</span> <span class="pre">So</span> <span class="pre">the\n'warrior</span> <span class="pre">guild'</span> <span class="pre">alias</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">used</span> <span class="pre">with</span> <span class="pre">the</span> <span class="pre">`channel`</span> <span class="pre">command:\n\n</span>&#160;&#160;&#160; <span class="pre">channel</span> <span class="pre">warrior</span> <span class="pre">guild</span> <span class="pre">=</span> <span class="pre">Hello\n\nChannel-aliases</span> <span class="pre">can</span> <span class="pre">be</span> <span class="pre">removed</span> <span class="pre">one</span> <span class="pre">at</span> <span class="pre">a</span> <span class="pre">time,</span> <span class="pre">using</span> <span class="pre">the</span> <span class="pre">'/unalias'</span> <span class="pre">switch.\n\n##</span> <span class="pre">who\n\nUsage:</span> <span class="pre">channel/who</span> <span class="pre">channelname\n\nList</span> <span class="pre">the</span> <span class="pre">channel's</span> <span class="pre">subscribers.</span> <span class="pre">Shows</span> <span class="pre">who</span> <span class="pre">are</span> <span class="pre">currently</span> <span class="pre">offline</span> <span class="pre">or</span> <span class="pre">are\nmuting</span> <span class="pre">the</span> <span class="pre">channel.</span> <span class="pre">Subscribers</span> <span class="pre">who</span> <span class="pre">are</span> <span class="pre">'muting'</span> <span class="pre">will</span> <span class="pre">not</span> <span class="pre">see</span> <span class="pre">messages</span> <span class="pre">sent\nto</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">(use</span> <span class="pre">channel/mute</span> <span class="pre">to</span> <span class="pre">mute</span> <span class="pre">a</span> <span class="pre">channel).\n\n##</span> <span class="pre">history\n\nUsage:</span> <span class="pre">channel/history</span> <span class="pre">channel</span> <span class="pre">[=</span> <span class="pre">index]\n\nThis</span> <span class="pre">will</span> <span class="pre">display</span> <span class="pre">the</span> <span class="pre">last</span> <span class="pre">|c20|n</span> <span class="pre">lines</span> <span class="pre">of</span> <span class="pre">channel</span> <span class="pre">history.</span> <span class="pre">By</span> <span class="pre">supplying</span> <span class="pre">an\nindex</span> <span class="pre">number,</span> <span class="pre">you</span> <span class="pre">will</span> <span class="pre">step</span> <span class="pre">that</span> <span class="pre">many</span> <span class="pre">lines</span> <span class="pre">back</span> <span class="pre">before</span> <span class="pre">viewing</span> <span class="pre">those</span> <span class="pre">20</span> <span class="pre">lines.\n\nFor</span> <span class="pre">example:\n\n</span>&#160;&#160;&#160; <span class="pre">channel/history</span> <span class="pre">public</span> <span class="pre">=</span> <span class="pre">35\n\nwill</span> <span class="pre">go</span> <span class="pre">back</span> <span class="pre">35</span> <span class="pre">lines</span> <span class="pre">and</span> <span class="pre">show</span> <span class="pre">the</span> <span class="pre">previous</span> <span class="pre">20</span> <span class="pre">lines</span> <span class="pre">from</span> <span class="pre">that</span> <span class="pre">point</span> <span class="pre">(so\nlines</span> <span class="pre">-35</span> <span class="pre">to</span> <span class="pre">-55).\n\n##</span> <span class="pre">sub</span> <span class="pre">and</span> <span class="pre">unsub\n\nUsage:</span> <span class="pre">channel/sub</span> <span class="pre">channel</span> <span class="pre">[=alias[;alias;...]]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unsub</span> <span class="pre">channel\n\nThis</span> <span class="pre">subscribes</span> <span class="pre">you</span> <span class="pre">to</span> <span class="pre">a</span> <span class="pre">channel</span> <span class="pre">and</span> <span class="pre">optionally</span> <span class="pre">assigns</span> <span class="pre">personal</span> <span class="pre">shortcuts\nfor</span> <span class="pre">you</span> <span class="pre">to</span> <span class="pre">use</span> <span class="pre">to</span> <span class="pre">send</span> <span class="pre">to</span> <span class="pre">that</span> <span class="pre">channel</span> <span class="pre">(see</span> <span class="pre">aliases).</span> <span class="pre">When</span> <span class="pre">you</span> <span class="pre">unsub,</span> <span class="pre">all\nyour</span> <span class="pre">personal</span> <span class="pre">aliases</span> <span class="pre">will</span> <span class="pre">also</span> <span class="pre">be</span> <span class="pre">removed.\n\n##</span> <span class="pre">mute</span> <span class="pre">and</span> <span class="pre">unmute\n\nUsage:</span> <span class="pre">channel/mute</span> <span class="pre">channelname\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unmute</span> <span class="pre">channelname\n\nMuting</span> <span class="pre">silences</span> <span class="pre">all</span> <span class="pre">output</span> <span class="pre">from</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">without</span> <span class="pre">actually\nun-subscribing.</span> <span class="pre">Other</span> <span class="pre">channel</span> <span class="pre">members</span> <span class="pre">will</span> <span class="pre">see</span> <span class="pre">that</span> <span class="pre">you</span> <span class="pre">are</span> <span class="pre">muted</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">/who\nlist.</span> <span class="pre">Sending</span> <span class="pre">a</span> <span class="pre">message</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">will</span> <span class="pre">automatically</span> <span class="pre">unmute</span> <span class="pre">you.\n\n##</span> <span class="pre">create</span> <span class="pre">and</span> <span class="pre">destroy\n\nUsage:</span> <span class="pre">channel/create</span> <span class="pre">channelname[;alias;alias[:typeclass]]</span> <span class="pre">[=</span> <span class="pre">description]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/destroy</span> <span class="pre">channelname</span> <span class="pre">[=</span> <span class="pre">reason]\n\nCreates</span> <span class="pre">a</span> <span class="pre">new</span> <span class="pre">channel</span> <span class="pre">(or</span> <span class="pre">destroys</span> <span class="pre">one</span> <span class="pre">you</span> <span class="pre">control).</span> <span class="pre">You</span> <span class="pre">will</span> <span class="pre">automatically\njoin</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">you</span> <span class="pre">create</span> <span class="pre">and</span> <span class="pre">everyone</span> <span class="pre">will</span> <span class="pre">be</span> <span class="pre">kicked</span> <span class="pre">and</span> <span class="pre">loose</span> <span class="pre">all</span> <span class="pre">aliases\nto</span> <span class="pre">a</span> <span class="pre">destroyed</span> <span class="pre">channel.\n\n##</span> <span class="pre">lock</span> <span class="pre">and</span> <span class="pre">unlock\n\nUsage:</span> <span class="pre">channel/lock</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">lockstring\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unlock</span> <span class="pre">channelname</span> <span class="pre">=</span> <span class="pre">lockstring\n\nNote:</span> <span class="pre">this</span> <span class="pre">is</span> <span class="pre">an</span> <span class="pre">admin</span> <span class="pre">command.\n\nA</span> <span class="pre">lockstring</span> <span class="pre">is</span> <span class="pre">on</span> <span class="pre">the</span> <span class="pre">form</span> <span class="pre">locktype:lockfunc().</span> <span class="pre">Channels</span> <span class="pre">understand</span> <span class="pre">three\nlocktypes:\n</span>&#160;&#160;&#160; <span class="pre">listen</span> <span class="pre">-</span> <span class="pre">who</span> <span class="pre">may</span> <span class="pre">listen</span> <span class="pre">or</span> <span class="pre">join</span> <span class="pre">the</span> <span class="pre">channel.\n</span>&#160;&#160;&#160; <span class="pre">send</span> <span class="pre">-</span> <span class="pre">who</span> <span class="pre">may</span> <span class="pre">send</span> <span class="pre">messages</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel\n</span>&#160;&#160;&#160; <span class="pre">control</span> <span class="pre">-</span> <span class="pre">who</span> <span class="pre">controls</span> <span class="pre">the</span> <span class="pre">channel.</span> <span class="pre">This</span> <span class="pre">is</span> <span class="pre">usually</span> <span class="pre">the</span> <span class="pre">one</span> <span class="pre">creating\n</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">the</span> <span class="pre">channel.\n\nCommon</span> <span class="pre">lockfuncs</span> <span class="pre">are</span> <span class="pre">all()</span> <span class="pre">and</span> <span class="pre">perm().</span> <span class="pre">To</span> <span class="pre">make</span> <span class="pre">a</span> <span class="pre">channel</span> <span class="pre">everyone</span> <span class="pre">can\nlisten</span> <span class="pre">to</span> <span class="pre">but</span> <span class="pre">only</span> <span class="pre">builders</span> <span class="pre">can</span> <span class="pre">talk</span> <span class="pre">on,</span> <span class="pre">use</span> <span class="pre">this:\n\n</span>&#160;&#160;&#160; <span class="pre">listen:all()\n</span>&#160;&#160;&#160; <span class="pre">send:</span> <span class="pre">perm(Builders)\n\n##</span> <span class="pre">boot</span> <span class="pre">and</span> <span class="pre">ban\n\nUsage:\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/boot[/quiet]</span> <span class="pre">channelname[,channelname,...]</span> <span class="pre">=</span> <span class="pre">subscribername</span> <span class="pre">[:</span> <span class="pre">reason]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/ban</span> <span class="pre">channelname[,</span> <span class="pre">channelname,</span> <span class="pre">...]</span> <span class="pre">=</span> <span class="pre">subscribername</span> <span class="pre">[:</span> <span class="pre">reason]\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unban</span> <span class="pre">channelname[,</span> <span class="pre">channelname,</span> <span class="pre">...]</span> <span class="pre">=</span> <span class="pre">subscribername\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/unban</span> <span class="pre">channelname\n</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel/ban</span> <span class="pre">channelname</span>&#160;&#160;&#160; <span class="pre">(list</span> <span class="pre">bans)\n\nBooting</span> <span class="pre">will</span> <span class="pre">kick</span> <span class="pre">a</span> <span class="pre">named</span> <span class="pre">subscriber</span> <span class="pre">from</span> <span class="pre">channel(s)</span> <span class="pre">temporarily.</span> <span class="pre">The\n'reason'</span> <span class="pre">will</span> <span class="pre">be</span> <span class="pre">passed</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">booted</span> <span class="pre">user.</span> <span class="pre">Unless</span> <span class="pre">the</span> <span class="pre">/quiet</span> <span class="pre">switch</span> <span class="pre">is\nused,</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">will</span> <span class="pre">also</span> <span class="pre">be</span> <span class="pre">informed</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">action.</span> <span class="pre">A</span> <span class="pre">booted</span> <span class="pre">user</span> <span class="pre">is\nstill</span> <span class="pre">able</span> <span class="pre">to</span> <span class="pre">re-connect,</span> <span class="pre">but</span> <span class="pre">they'll</span> <span class="pre">have</span> <span class="pre">to</span> <span class="pre">set</span> <span class="pre">up</span> <span class="pre">their</span> <span class="pre">aliases</span> <span class="pre">again.\n\nBanning</span> <span class="pre">will</span> <span class="pre">blacklist</span> <span class="pre">a</span> <span class="pre">user</span> <span class="pre">from</span> <span class="pre">(re)joining</span> <span class="pre">the</span> <span class="pre">provided</span> <span class="pre">channels.</span> <span class="pre">It\nwill</span> <span class="pre">then</span> <span class="pre">proceed</span> <span class="pre">to</span> <span class="pre">boot</span> <span class="pre">them</span> <span class="pre">from</span> <span class="pre">those</span> <span class="pre">channels</span> <span class="pre">if</span> <span class="pre">they</span> <span class="pre">were</span> <span class="pre">connected.\nThe</span> <span class="pre">'reason'</span> <span class="pre">and</span> <span class="pre">`/quiet`</span> <span class="pre">works</span> <span class="pre">the</span> <span class="pre">same</span> <span class="pre">as</span> <span class="pre">for</span> <span class="pre">booting.\n\nExample:\n</span>&#160;&#160;&#160; <span class="pre">boot</span> <span class="pre">mychannel1</span> <span class="pre">=</span> <span class="pre">EvilUser</span> <span class="pre">:</span> <span class="pre">Kicking</span> <span class="pre">you</span> <span class="pre">to</span> <span class="pre">cool</span> <span class="pre">down</span> <span class="pre">a</span> <span class="pre">bit.\n</span>&#160;&#160;&#160; <span class="pre">ban</span> <span class="pre">mychannel1,mychannel2=</span> <span class="pre">EvilUser</span> <span class="pre">:</span> <span class="pre">Was</span> <span class="pre">banned</span> <span class="pre">for</span> <span class="pre">spamming.\n\n&quot;}</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdObjectChannel.search_index_entry" title="Link to this definition"></a></dt>
<dd></dd></dl>
</section>
</section>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CmdPage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdPage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdPage" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MuxCommand</span></code></a></p>
<p>send a private message to another account</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>page &lt;account&gt; &lt;message&gt;
page[/switches] [&lt;account&gt;,&lt;account&gt;,… = &lt;message&gt;]
tell
page &lt;number&gt;</p>
</dd>
<dt>Switches:</dt><dd><p>last - shows who you last messaged
list - show your last &lt;number&gt; of tells/pages (default)</p>
</dd>
</dl>
<p>Send a message to target user (if online). If no argument is given, you
will get a list of your latest messages. The equal sign is needed for
multiple targets or if sending to target with space in the name.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.key">
<span class="sig-name descname"><span class="pre">key</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'page'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.aliases">
<span class="sig-name descname"><span class="pre">aliases</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">['tell']</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.aliases" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.switch_options">
<span class="sig-name descname"><span class="pre">switch_options</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">('last',</span> <span class="pre">'list')</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.switch_options" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.locks">
<span class="sig-name descname"><span class="pre">locks</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:not</span> <span class="pre">pperm(page_banned)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.locks" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.help_category">
<span class="sig-name descname"><span class="pre">help_category</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'comms'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.help_category" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.account_caller">
<span class="sig-name descname"><span class="pre">account_caller</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.account_caller" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.func">
<span class="sig-name descname"><span class="pre">func</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdPage.func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.func" title="Link to this definition"></a></dt>
<dd><p>Implement function using the Msg methods</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.lock_storage">
<span class="sig-name descname"><span class="pre">lock_storage</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:not</span> <span class="pre">pperm(page_banned)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.lock_storage" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdPage.search_index_entry">
<span class="sig-name descname"><span class="pre">search_index_entry</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'aliases':</span> <span class="pre">'tell',</span> <span class="pre">'category':</span> <span class="pre">'comms',</span> <span class="pre">'key':</span> <span class="pre">'page',</span> <span class="pre">'no_prefix':</span> <span class="pre">'</span> <span class="pre">tell',</span> <span class="pre">'tags':</span> <span class="pre">'',</span> <span class="pre">'text':</span> <span class="pre">&quot;\nsend</span> <span class="pre">a</span> <span class="pre">private</span> <span class="pre">message</span> <span class="pre">to</span> <span class="pre">another</span> <span class="pre">account\n\nUsage:\n</span>&#160; <span class="pre">page</span> <span class="pre">&lt;account&gt;</span> <span class="pre">&lt;message&gt;\n</span>&#160; <span class="pre">page[/switches]</span> <span class="pre">[&lt;account&gt;,&lt;account&gt;,...</span> <span class="pre">=</span> <span class="pre">&lt;message&gt;]\n</span>&#160; <span class="pre">tell</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">''\n</span>&#160; <span class="pre">page</span> <span class="pre">&lt;number&gt;\n\nSwitches:\n</span>&#160; <span class="pre">last</span> <span class="pre">-</span> <span class="pre">shows</span> <span class="pre">who</span> <span class="pre">you</span> <span class="pre">last</span> <span class="pre">messaged\n</span>&#160; <span class="pre">list</span> <span class="pre">-</span> <span class="pre">show</span> <span class="pre">your</span> <span class="pre">last</span> <span class="pre">&lt;number&gt;</span> <span class="pre">of</span> <span class="pre">tells/pages</span> <span class="pre">(default)\n\nSend</span> <span class="pre">a</span> <span class="pre">message</span> <span class="pre">to</span> <span class="pre">target</span> <span class="pre">user</span> <span class="pre">(if</span> <span class="pre">online).</span> <span class="pre">If</span> <span class="pre">no</span> <span class="pre">argument</span> <span class="pre">is</span> <span class="pre">given,</span> <span class="pre">you\nwill</span> <span class="pre">get</span> <span class="pre">a</span> <span class="pre">list</span> <span class="pre">of</span> <span class="pre">your</span> <span class="pre">latest</span> <span class="pre">messages.</span> <span class="pre">The</span> <span class="pre">equal</span> <span class="pre">sign</span> <span class="pre">is</span> <span class="pre">needed</span> <span class="pre">for\nmultiple</span> <span class="pre">targets</span> <span class="pre">or</span> <span class="pre">if</span> <span class="pre">sending</span> <span class="pre">to</span> <span class="pre">target</span> <span class="pre">with</span> <span class="pre">space</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">name.\n\n&quot;}</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdPage.search_index_entry" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CmdIRC2Chan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdIRC2Chan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MuxCommand</span></code></a></p>
<p>Link an evennia channel to an external IRC channel</p>
<dl>
<dt>Usage:</dt><dd><p>irc2chan[/switches] &lt;evennia_channel&gt; = &lt;ircnetwork&gt; &lt;port&gt; &lt;#irchannel&gt; &lt;botname&gt;[:typeclass]
irc2chan/delete botname|#dbid</p>
</dd>
<dt>Switches:</dt><dd><dl class="option-list">
<dt><kbd><span class="option">/delete</span></kbd></dt>
<dd><ul class="simple">
<li><p>this will delete the bot and remove the irc connection</p></li>
</ul>
<p>to the channel. Requires the botname or #dbid as input.</p>
</dd>
<dt><kbd><span class="option">/remove</span></kbd></dt>
<dd><ul class="simple">
<li><p>alias to /delete</p></li>
</ul>
</dd>
</dl>
<p>/disconnect - alias to /delete
/list - show all irc&lt;-&gt;evennia mappings
/ssl - use an SSL-encrypted connection</p>
</dd>
</dl>
<p class="rubric">Example</p>
<p>irc2chan myircchan = irc.dalnet.net 6667 #mychannel evennia-bot
irc2chan public = irc.freenode.net 6667 #evgaming #evbot:accounts.mybot.MyBot</p>
<p>This creates an IRC bot that connects to a given IRC network and
channel. If a custom typeclass path is given, this will be used
instead of the default bot class.
The bot will relay everything said in the evennia channel to the
IRC channel and vice versa. The bot will automatically connect at
server start, so this command need only be given once. The
/disconnect switch will permanently delete the bot. To only
temporarily deactivate it, use the <a href="#id17"><span class="problematic" id="id18">|</span></a>wservices|n command instead.
Provide an optional bot class path to use a custom bot.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan.key">
<span class="sig-name descname"><span class="pre">key</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'irc2chan'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan.switch_options">
<span class="sig-name descname"><span class="pre">switch_options</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">('delete',</span> <span class="pre">'remove',</span> <span class="pre">'disconnect',</span> <span class="pre">'list',</span> <span class="pre">'ssl')</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan.switch_options" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan.locks">
<span class="sig-name descname"><span class="pre">locks</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(IRC_ENABLED)</span> <span class="pre">and</span> <span class="pre">pperm(Developer)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan.locks" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan.help_category">
<span class="sig-name descname"><span class="pre">help_category</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'comms'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan.help_category" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan.func">
<span class="sig-name descname"><span class="pre">func</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdIRC2Chan.func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan.func" title="Link to this definition"></a></dt>
<dd><p>Setup the irc-channel mapping</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan.aliases">
<span class="sig-name descname"><span class="pre">aliases</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan.aliases" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan.lock_storage">
<span class="sig-name descname"><span class="pre">lock_storage</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(IRC_ENABLED)</span> <span class="pre">and</span> <span class="pre">pperm(Developer)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan.lock_storage" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRC2Chan.search_index_entry">
<span class="sig-name descname"><span class="pre">search_index_entry</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'aliases':</span> <span class="pre">'',</span> <span class="pre">'category':</span> <span class="pre">'comms',</span> <span class="pre">'key':</span> <span class="pre">'irc2chan',</span> <span class="pre">'no_prefix':</span> <span class="pre">'</span> <span class="pre">',</span> <span class="pre">'tags':</span> <span class="pre">'',</span> <span class="pre">'text':</span> <span class="pre">'\nLink</span> <span class="pre">an</span> <span class="pre">evennia</span> <span class="pre">channel</span> <span class="pre">to</span> <span class="pre">an</span> <span class="pre">external</span> <span class="pre">IRC</span> <span class="pre">channel\n\nUsage:\n</span>&#160; <span class="pre">irc2chan[/switches]</span> <span class="pre">&lt;evennia_channel&gt;</span> <span class="pre">=</span> <span class="pre">&lt;ircnetwork&gt;</span> <span class="pre">&lt;port&gt;</span> <span class="pre">&lt;#irchannel&gt;</span> <span class="pre">&lt;botname&gt;[:typeclass]\n</span>&#160; <span class="pre">irc2chan/delete</span> <span class="pre">botname|#dbid\n\nSwitches:\n</span>&#160; <span class="pre">/delete</span>&#160;&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">this</span> <span class="pre">will</span> <span class="pre">delete</span> <span class="pre">the</span> <span class="pre">bot</span> <span class="pre">and</span> <span class="pre">remove</span> <span class="pre">the</span> <span class="pre">irc</span> <span class="pre">connection\n</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">to</span> <span class="pre">the</span> <span class="pre">channel.</span> <span class="pre">Requires</span> <span class="pre">the</span> <span class="pre">botname</span> <span class="pre">or</span> <span class="pre">#dbid</span> <span class="pre">as</span> <span class="pre">input.\n</span>&#160; <span class="pre">/remove</span>&#160;&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">alias</span> <span class="pre">to</span> <span class="pre">/delete\n</span>&#160; <span class="pre">/disconnect</span> <span class="pre">-</span> <span class="pre">alias</span> <span class="pre">to</span> <span class="pre">/delete\n</span>&#160; <span class="pre">/list</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">show</span> <span class="pre">all</span> <span class="pre">irc&lt;-&gt;evennia</span> <span class="pre">mappings\n</span>&#160; <span class="pre">/ssl</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">use</span> <span class="pre">an</span> <span class="pre">SSL-encrypted</span> <span class="pre">connection\n\nExample:\n</span>&#160; <span class="pre">irc2chan</span> <span class="pre">myircchan</span> <span class="pre">=</span> <span class="pre">irc.dalnet.net</span> <span class="pre">6667</span> <span class="pre">#mychannel</span> <span class="pre">evennia-bot\n</span>&#160; <span class="pre">irc2chan</span> <span class="pre">public</span> <span class="pre">=</span> <span class="pre">irc.freenode.net</span> <span class="pre">6667</span> <span class="pre">#evgaming</span> <span class="pre">#evbot:accounts.mybot.MyBot\n\nThis</span> <span class="pre">creates</span> <span class="pre">an</span> <span class="pre">IRC</span> <span class="pre">bot</span> <span class="pre">that</span> <span class="pre">connects</span> <span class="pre">to</span> <span class="pre">a</span> <span class="pre">given</span> <span class="pre">IRC</span> <span class="pre">network</span> <span class="pre">and\nchannel.</span> <span class="pre">If</span> <span class="pre">a</span> <span class="pre">custom</span> <span class="pre">typeclass</span> <span class="pre">path</span> <span class="pre">is</span> <span class="pre">given,</span> <span class="pre">this</span> <span class="pre">will</span> <span class="pre">be</span> <span class="pre">used\ninstead</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">default</span> <span class="pre">bot</span> <span class="pre">class.\nThe</span> <span class="pre">bot</span> <span class="pre">will</span> <span class="pre">relay</span> <span class="pre">everything</span> <span class="pre">said</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">evennia</span> <span class="pre">channel</span> <span class="pre">to</span> <span class="pre">the\nIRC</span> <span class="pre">channel</span> <span class="pre">and</span> <span class="pre">vice</span> <span class="pre">versa.</span> <span class="pre">The</span> <span class="pre">bot</span> <span class="pre">will</span> <span class="pre">automatically</span> <span class="pre">connect</span> <span class="pre">at\nserver</span> <span class="pre">start,</span> <span class="pre">so</span> <span class="pre">this</span> <span class="pre">command</span> <span class="pre">need</span> <span class="pre">only</span> <span class="pre">be</span> <span class="pre">given</span> <span class="pre">once.</span> <span class="pre">The\n/disconnect</span> <span class="pre">switch</span> <span class="pre">will</span> <span class="pre">permanently</span> <span class="pre">delete</span> <span class="pre">the</span> <span class="pre">bot.</span> <span class="pre">To</span> <span class="pre">only\ntemporarily</span> <span class="pre">deactivate</span> <span class="pre">it,</span> <span class="pre">use</span> <span class="pre">the</span>&#160; <span class="pre">|wservices|n</span> <span class="pre">command</span> <span class="pre">instead.\nProvide</span> <span class="pre">an</span> <span class="pre">optional</span> <span class="pre">bot</span> <span class="pre">class</span> <span class="pre">path</span> <span class="pre">to</span> <span class="pre">use</span> <span class="pre">a</span> <span class="pre">custom</span> <span class="pre">bot.\n'}</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRC2Chan.search_index_entry" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRCStatus">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CmdIRCStatus</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdIRCStatus"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdIRCStatus" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MuxCommand</span></code></a></p>
<p>Check and reboot IRC bot.</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>ircstatus [#dbref ping | nicklist | reconnect]</p>
</dd>
</dl>
<p>If not given arguments, will return a list of all bots (like
irc2chan/list). The ping argument will ping the IRC network to
see if the connection is still responsive. The nicklist argument
(aliases are who and users) will return a list of users on the
remote IRC channel. Finally, reconnect will force the client to
disconnect and reconnect again. This may be a last resort if the
client has silently lost connection (this may happen if the remote
network experience network issues). During the reconnection
messages sent to either channel will be lost.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRCStatus.key">
<span class="sig-name descname"><span class="pre">key</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'ircstatus'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRCStatus.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRCStatus.locks">
<span class="sig-name descname"><span class="pre">locks</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(IRC_ENABLED)</span> <span class="pre">and</span> <span class="pre">perm(ircstatus)</span> <span class="pre">or</span> <span class="pre">perm(Builder))'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRCStatus.locks" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRCStatus.help_category">
<span class="sig-name descname"><span class="pre">help_category</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'comms'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRCStatus.help_category" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRCStatus.func">
<span class="sig-name descname"><span class="pre">func</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdIRCStatus.func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdIRCStatus.func" title="Link to this definition"></a></dt>
<dd><p>Handles the functioning of the command.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRCStatus.aliases">
<span class="sig-name descname"><span class="pre">aliases</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRCStatus.aliases" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRCStatus.lock_storage">
<span class="sig-name descname"><span class="pre">lock_storage</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(IRC_ENABLED)</span> <span class="pre">and</span> <span class="pre">perm(ircstatus)</span> <span class="pre">or</span> <span class="pre">perm(Builder))'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRCStatus.lock_storage" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdIRCStatus.search_index_entry">
<span class="sig-name descname"><span class="pre">search_index_entry</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'aliases':</span> <span class="pre">'',</span> <span class="pre">'category':</span> <span class="pre">'comms',</span> <span class="pre">'key':</span> <span class="pre">'ircstatus',</span> <span class="pre">'no_prefix':</span> <span class="pre">'</span> <span class="pre">',</span> <span class="pre">'tags':</span> <span class="pre">'',</span> <span class="pre">'text':</span> <span class="pre">&quot;\nCheck</span> <span class="pre">and</span> <span class="pre">reboot</span> <span class="pre">IRC</span> <span class="pre">bot.\n\nUsage:\n</span>&#160;&#160;&#160; <span class="pre">ircstatus</span> <span class="pre">[#dbref</span> <span class="pre">ping</span> <span class="pre">|</span> <span class="pre">nicklist</span> <span class="pre">|</span> <span class="pre">reconnect]\n\nIf</span> <span class="pre">not</span> <span class="pre">given</span> <span class="pre">arguments,</span> <span class="pre">will</span> <span class="pre">return</span> <span class="pre">a</span> <span class="pre">list</span> <span class="pre">of</span> <span class="pre">all</span> <span class="pre">bots</span> <span class="pre">(like\nirc2chan/list).</span> <span class="pre">The</span> <span class="pre">'ping'</span> <span class="pre">argument</span> <span class="pre">will</span> <span class="pre">ping</span> <span class="pre">the</span> <span class="pre">IRC</span> <span class="pre">network</span> <span class="pre">to\nsee</span> <span class="pre">if</span> <span class="pre">the</span> <span class="pre">connection</span> <span class="pre">is</span> <span class="pre">still</span> <span class="pre">responsive.</span> <span class="pre">The</span> <span class="pre">'nicklist'</span> <span class="pre">argument\n(aliases</span> <span class="pre">are</span> <span class="pre">'who'</span> <span class="pre">and</span> <span class="pre">'users')</span> <span class="pre">will</span> <span class="pre">return</span> <span class="pre">a</span> <span class="pre">list</span> <span class="pre">of</span> <span class="pre">users</span> <span class="pre">on</span> <span class="pre">the\nremote</span> <span class="pre">IRC</span> <span class="pre">channel.</span>&#160; <span class="pre">Finally,</span> <span class="pre">'reconnect'</span> <span class="pre">will</span> <span class="pre">force</span> <span class="pre">the</span> <span class="pre">client</span> <span class="pre">to\ndisconnect</span> <span class="pre">and</span> <span class="pre">reconnect</span> <span class="pre">again.</span> <span class="pre">This</span> <span class="pre">may</span> <span class="pre">be</span> <span class="pre">a</span> <span class="pre">last</span> <span class="pre">resort</span> <span class="pre">if</span> <span class="pre">the\nclient</span> <span class="pre">has</span> <span class="pre">silently</span> <span class="pre">lost</span> <span class="pre">connection</span> <span class="pre">(this</span> <span class="pre">may</span> <span class="pre">happen</span> <span class="pre">if</span> <span class="pre">the</span> <span class="pre">remote\nnetwork</span> <span class="pre">experience</span> <span class="pre">network</span> <span class="pre">issues).</span> <span class="pre">During</span> <span class="pre">the</span> <span class="pre">reconnection\nmessages</span> <span class="pre">sent</span> <span class="pre">to</span> <span class="pre">either</span> <span class="pre">channel</span> <span class="pre">will</span> <span class="pre">be</span> <span class="pre">lost.\n\n&quot;}</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdIRCStatus.search_index_entry" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CmdRSS2Chan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdRSS2Chan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MuxCommand</span></code></a></p>
<p>link an evennia channel to an external RSS feed</p>
<dl>
<dt>Usage:</dt><dd><p>rss2chan[/switches] &lt;evennia_channel&gt; = &lt;rss_url&gt;</p>
</dd>
<dt>Switches:</dt><dd><dl class="simple">
<dt>/disconnect - this will stop the feed and remove the connection to the</dt><dd><p>channel.</p>
</dd>
</dl>
<dl class="option-list">
<dt><kbd><span class="option">/remove</span></kbd></dt>
<dd><ul class="simple">
<li><p></p></li>
</ul>
</dd>
<dt><kbd><span class="option">/list</span></kbd></dt>
<dd><ul class="simple">
<li><p>show all rss-&gt;evennia mappings</p></li>
</ul>
</dd>
</dl>
</dd>
</dl>
<p class="rubric">Example</p>
<p>rss2chan rsschan = <a class="reference external" href="http://code.google.com/feeds/p/evennia/updates/basic">http://code.google.com/feeds/p/evennia/updates/basic</a></p>
<p>This creates an RSS reader that connects to a given RSS feed url. Updates
will be echoed as a title and news link to the given channel. The rate of
updating is set with the RSS_UPDATE_INTERVAL variable in settings (default
is every 10 minutes).</p>
<p>When disconnecting you need to supply both the channel and url again so as
to identify the connection uniquely.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan.key">
<span class="sig-name descname"><span class="pre">key</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'rss2chan'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan.switch_options">
<span class="sig-name descname"><span class="pre">switch_options</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">('disconnect',</span> <span class="pre">'remove',</span> <span class="pre">'list')</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan.switch_options" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan.locks">
<span class="sig-name descname"><span class="pre">locks</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(RSS_ENABLED)</span> <span class="pre">and</span> <span class="pre">pperm(Developer)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan.locks" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan.help_category">
<span class="sig-name descname"><span class="pre">help_category</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'comms'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan.help_category" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan.func">
<span class="sig-name descname"><span class="pre">func</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdRSS2Chan.func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan.func" title="Link to this definition"></a></dt>
<dd><p>Setup the rss-channel mapping</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan.aliases">
<span class="sig-name descname"><span class="pre">aliases</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan.aliases" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan.lock_storage">
<span class="sig-name descname"><span class="pre">lock_storage</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(RSS_ENABLED)</span> <span class="pre">and</span> <span class="pre">pperm(Developer)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan.lock_storage" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdRSS2Chan.search_index_entry">
<span class="sig-name descname"><span class="pre">search_index_entry</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'aliases':</span> <span class="pre">'',</span> <span class="pre">'category':</span> <span class="pre">'comms',</span> <span class="pre">'key':</span> <span class="pre">'rss2chan',</span> <span class="pre">'no_prefix':</span> <span class="pre">'</span> <span class="pre">',</span> <span class="pre">'tags':</span> <span class="pre">'',</span> <span class="pre">'text':</span> <span class="pre">'\nlink</span> <span class="pre">an</span> <span class="pre">evennia</span> <span class="pre">channel</span> <span class="pre">to</span> <span class="pre">an</span> <span class="pre">external</span> <span class="pre">RSS</span> <span class="pre">feed\n\nUsage:\n</span>&#160; <span class="pre">rss2chan[/switches]</span> <span class="pre">&lt;evennia_channel&gt;</span> <span class="pre">=</span> <span class="pre">&lt;rss_url&gt;\n\nSwitches:\n</span>&#160; <span class="pre">/disconnect</span> <span class="pre">-</span> <span class="pre">this</span> <span class="pre">will</span> <span class="pre">stop</span> <span class="pre">the</span> <span class="pre">feed</span> <span class="pre">and</span> <span class="pre">remove</span> <span class="pre">the</span> <span class="pre">connection</span> <span class="pre">to</span> <span class="pre">the\n</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">channel.\n</span>&#160; <span class="pre">/remove</span>&#160;&#160;&#160;&#160; <span class="pre">-</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">&quot;\n</span>&#160; <span class="pre">/list</span>&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">show</span> <span class="pre">all</span> <span class="pre">rss-&gt;evennia</span> <span class="pre">mappings\n\nExample:\n</span>&#160; <span class="pre">rss2chan</span> <span class="pre">rsschan</span> <span class="pre">=</span> <span class="pre">http://code.google.com/feeds/p/evennia/updates/basic\n\nThis</span> <span class="pre">creates</span> <span class="pre">an</span> <span class="pre">RSS</span> <span class="pre">reader</span>&#160; <span class="pre">that</span> <span class="pre">connects</span> <span class="pre">to</span> <span class="pre">a</span> <span class="pre">given</span> <span class="pre">RSS</span> <span class="pre">feed</span> <span class="pre">url.</span> <span class="pre">Updates\nwill</span> <span class="pre">be</span> <span class="pre">echoed</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">title</span> <span class="pre">and</span> <span class="pre">news</span> <span class="pre">link</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">given</span> <span class="pre">channel.</span> <span class="pre">The</span> <span class="pre">rate</span> <span class="pre">of\nupdating</span> <span class="pre">is</span> <span class="pre">set</span> <span class="pre">with</span> <span class="pre">the</span> <span class="pre">RSS_UPDATE_INTERVAL</span> <span class="pre">variable</span> <span class="pre">in</span> <span class="pre">settings</span> <span class="pre">(default\nis</span> <span class="pre">every</span> <span class="pre">10</span> <span class="pre">minutes).\n\nWhen</span> <span class="pre">disconnecting</span> <span class="pre">you</span> <span class="pre">need</span> <span class="pre">to</span> <span class="pre">supply</span> <span class="pre">both</span> <span class="pre">the</span> <span class="pre">channel</span> <span class="pre">and</span> <span class="pre">url</span> <span class="pre">again</span> <span class="pre">so</span> <span class="pre">as\nto</span> <span class="pre">identify</span> <span class="pre">the</span> <span class="pre">connection</span> <span class="pre">uniquely.\n'}</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdRSS2Chan.search_index_entry" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CmdGrapevine2Chan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdGrapevine2Chan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MuxCommand</span></code></a></p>
<p>Link an Evennia channel to an external Grapevine channel</p>
<dl>
<dt>Usage:</dt><dd><p>grapevine2chan[/switches] &lt;evennia_channel&gt; = &lt;grapevine_channel&gt;
grapevine2chan/disconnect &lt;connection #id&gt;</p>
</dd>
<dt>Switches:</dt><dd><dl class="option-list">
<dt><kbd><span class="option">/list</span></kbd></dt>
<dd><ul class="simple">
<li><p>(or no switch): show existing grapevine &lt;-&gt; Evennia</p></li>
</ul>
<p>mappings and available grapevine chans</p>
</dd>
<dt><kbd><span class="option">/remove</span></kbd></dt>
<dd><ul class="simple">
<li><p>alias to disconnect</p></li>
</ul>
</dd>
<dt><kbd><span class="option">/delete</span></kbd></dt>
<dd><ul class="simple">
<li><p>alias to disconnect</p></li>
</ul>
</dd>
</dl>
</dd>
</dl>
<p class="rubric">Example</p>
<p>grapevine2chan mygrapevine = gossip</p>
<p>This creates a link between an in-game Evennia channel and an external
Grapevine channel. The game must be registered with the Grapevine network
(register at <a class="reference external" href="https://grapevine.haus">https://grapevine.haus</a>) and the GRAPEVINE_* auth information
must be added to game settings.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan.key">
<span class="sig-name descname"><span class="pre">key</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'grapevine2chan'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan.switch_options">
<span class="sig-name descname"><span class="pre">switch_options</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">('disconnect',</span> <span class="pre">'remove',</span> <span class="pre">'delete',</span> <span class="pre">'list')</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan.switch_options" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan.locks">
<span class="sig-name descname"><span class="pre">locks</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(GRAPEVINE_ENABLED)</span> <span class="pre">and</span> <span class="pre">pperm(Developer)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan.locks" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan.help_category">
<span class="sig-name descname"><span class="pre">help_category</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'comms'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan.help_category" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan.func">
<span class="sig-name descname"><span class="pre">func</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdGrapevine2Chan.func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan.func" title="Link to this definition"></a></dt>
<dd><p>Setup the Grapevine channel mapping</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan.aliases">
<span class="sig-name descname"><span class="pre">aliases</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan.aliases" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan.lock_storage">
<span class="sig-name descname"><span class="pre">lock_storage</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(GRAPEVINE_ENABLED)</span> <span class="pre">and</span> <span class="pre">pperm(Developer)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan.lock_storage" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdGrapevine2Chan.search_index_entry">
<span class="sig-name descname"><span class="pre">search_index_entry</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'aliases':</span> <span class="pre">'',</span> <span class="pre">'category':</span> <span class="pre">'comms',</span> <span class="pre">'key':</span> <span class="pre">'grapevine2chan',</span> <span class="pre">'no_prefix':</span> <span class="pre">'</span> <span class="pre">',</span> <span class="pre">'tags':</span> <span class="pre">'',</span> <span class="pre">'text':</span> <span class="pre">'\nLink</span> <span class="pre">an</span> <span class="pre">Evennia</span> <span class="pre">channel</span> <span class="pre">to</span> <span class="pre">an</span> <span class="pre">external</span> <span class="pre">Grapevine</span> <span class="pre">channel\n\nUsage:\n</span>&#160; <span class="pre">grapevine2chan[/switches]</span> <span class="pre">&lt;evennia_channel&gt;</span> <span class="pre">=</span> <span class="pre">&lt;grapevine_channel&gt;\n</span>&#160; <span class="pre">grapevine2chan/disconnect</span> <span class="pre">&lt;connection</span> <span class="pre">#id&gt;\n\nSwitches:\n</span>&#160;&#160;&#160; <span class="pre">/list</span>&#160;&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">(or</span> <span class="pre">no</span> <span class="pre">switch):</span> <span class="pre">show</span> <span class="pre">existing</span> <span class="pre">grapevine</span> <span class="pre">&lt;-&gt;</span> <span class="pre">Evennia\n</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="pre">mappings</span> <span class="pre">and</span> <span class="pre">available</span> <span class="pre">grapevine</span> <span class="pre">chans\n</span>&#160;&#160;&#160; <span class="pre">/remove</span>&#160;&#160; <span class="pre">-</span> <span class="pre">alias</span> <span class="pre">to</span> <span class="pre">disconnect\n</span>&#160;&#160;&#160; <span class="pre">/delete</span>&#160;&#160; <span class="pre">-</span> <span class="pre">alias</span> <span class="pre">to</span> <span class="pre">disconnect\n\nExample:\n</span>&#160;&#160;&#160; <span class="pre">grapevine2chan</span> <span class="pre">mygrapevine</span> <span class="pre">=</span> <span class="pre">gossip\n\nThis</span> <span class="pre">creates</span> <span class="pre">a</span> <span class="pre">link</span> <span class="pre">between</span> <span class="pre">an</span> <span class="pre">in-game</span> <span class="pre">Evennia</span> <span class="pre">channel</span> <span class="pre">and</span> <span class="pre">an</span> <span class="pre">external\nGrapevine</span> <span class="pre">channel.</span> <span class="pre">The</span> <span class="pre">game</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">registered</span> <span class="pre">with</span> <span class="pre">the</span> <span class="pre">Grapevine</span> <span class="pre">network\n(register</span> <span class="pre">at</span> <span class="pre">https://grapevine.haus)</span> <span class="pre">and</span> <span class="pre">the</span> <span class="pre">GRAPEVINE_*</span> <span class="pre">auth</span> <span class="pre">information\nmust</span> <span class="pre">be</span> <span class="pre">added</span> <span class="pre">to</span> <span class="pre">game</span> <span class="pre">settings.\n'}</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdGrapevine2Chan.search_index_entry" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CmdDiscord2Chan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdDiscord2Chan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MuxCommand</span></code></a></p>
<p>Link an Evennia channel to an external Discord channel</p>
<dl>
<dt>Usage:</dt><dd><p>discord2chan[/switches]
discord2chan[/switches] &lt;evennia_channel&gt; [= &lt;discord_channel_id&gt;]</p>
</dd>
<dt>Switches:</dt><dd><dl class="option-list">
<dt><kbd><span class="option">/list</span></kbd></dt>
<dd><ul class="simple">
<li><p>(or no switch) show existing Evennia &lt;-&gt; Discord links</p></li>
</ul>
</dd>
<dt><kbd><span class="option">/remove</span></kbd></dt>
<dd><ul class="simple">
<li><p>remove an existing link by link ID</p></li>
</ul>
</dd>
<dt><kbd><span class="option">/delete</span></kbd></dt>
<dd><ul class="simple">
<li><p>alias to remove</p></li>
</ul>
</dd>
<dt><kbd><span class="option">/guild</span></kbd></dt>
<dd><ul class="simple">
<li><p>toggle the Discord server tag on/off</p></li>
</ul>
</dd>
</dl>
<p>/channel - toggle the Evennia/Discord channel tags on/off
/start - tell the bot to start, in case it lost its connection</p>
</dd>
</dl>
<p class="rubric">Example</p>
<p>discord2chan mydiscord = 555555555555555</p>
<p>This creates a link between an in-game Evennia channel and an external
Discord channel. You must have a valid Discord bot application
( <a class="reference external" href="https://discord.com/developers/applications">https://discord.com/developers/applications</a> ) and your DISCORD_BOT_TOKEN
must be added to settings. (Please put it in secret_settings !)</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan.key">
<span class="sig-name descname"><span class="pre">key</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'discord2chan'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan.aliases">
<span class="sig-name descname"><span class="pre">aliases</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">['discord']</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.aliases" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan.switch_options">
<span class="sig-name descname"><span class="pre">switch_options</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">('channel',</span> <span class="pre">'delete',</span> <span class="pre">'guild',</span> <span class="pre">'list',</span> <span class="pre">'remove',</span> <span class="pre">'start')</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.switch_options" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan.locks">
<span class="sig-name descname"><span class="pre">locks</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(DISCORD_ENABLED)</span> <span class="pre">and</span> <span class="pre">pperm(Developer)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.locks" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan.help_category">
<span class="sig-name descname"><span class="pre">help_category</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'comms'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.help_category" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan.func">
<span class="sig-name descname"><span class="pre">func</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/default/comms.html#CmdDiscord2Chan.func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.func" title="Link to this definition"></a></dt>
<dd><p>Manage the Evennia&lt;-&gt;Discord channel links</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan.lock_storage">
<span class="sig-name descname"><span class="pre">lock_storage</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cmd:serversetting(DISCORD_ENABLED)</span> <span class="pre">and</span> <span class="pre">pperm(Developer)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.lock_storage" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CmdDiscord2Chan.search_index_entry">
<span class="sig-name descname"><span class="pre">search_index_entry</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{'aliases':</span> <span class="pre">'discord',</span> <span class="pre">'category':</span> <span class="pre">'comms',</span> <span class="pre">'key':</span> <span class="pre">'discord2chan',</span> <span class="pre">'no_prefix':</span> <span class="pre">'</span> <span class="pre">discord',</span> <span class="pre">'tags':</span> <span class="pre">'',</span> <span class="pre">'text':</span> <span class="pre">'\nLink</span> <span class="pre">an</span> <span class="pre">Evennia</span> <span class="pre">channel</span> <span class="pre">to</span> <span class="pre">an</span> <span class="pre">external</span> <span class="pre">Discord</span> <span class="pre">channel\n\nUsage:\n</span>&#160; <span class="pre">discord2chan[/switches]\n</span>&#160; <span class="pre">discord2chan[/switches]</span> <span class="pre">&lt;evennia_channel&gt;</span> <span class="pre">[=</span> <span class="pre">&lt;discord_channel_id&gt;]\n\nSwitches:\n</span>&#160;&#160;&#160; <span class="pre">/list</span>&#160;&#160;&#160; <span class="pre">-</span> <span class="pre">(or</span> <span class="pre">no</span> <span class="pre">switch)</span> <span class="pre">show</span> <span class="pre">existing</span> <span class="pre">Evennia</span> <span class="pre">&lt;-&gt;</span> <span class="pre">Discord</span> <span class="pre">links\n</span>&#160;&#160;&#160; <span class="pre">/remove</span>&#160; <span class="pre">-</span> <span class="pre">remove</span> <span class="pre">an</span> <span class="pre">existing</span> <span class="pre">link</span> <span class="pre">by</span> <span class="pre">link</span> <span class="pre">ID\n</span>&#160;&#160;&#160; <span class="pre">/delete</span>&#160; <span class="pre">-</span> <span class="pre">alias</span> <span class="pre">to</span> <span class="pre">remove\n</span>&#160;&#160;&#160; <span class="pre">/guild</span>&#160;&#160; <span class="pre">-</span> <span class="pre">toggle</span> <span class="pre">the</span> <span class="pre">Discord</span> <span class="pre">server</span> <span class="pre">tag</span> <span class="pre">on/off\n</span>&#160;&#160;&#160; <span class="pre">/channel</span> <span class="pre">-</span> <span class="pre">toggle</span> <span class="pre">the</span> <span class="pre">Evennia/Discord</span> <span class="pre">channel</span> <span class="pre">tags</span> <span class="pre">on/off\n</span>&#160;&#160;&#160; <span class="pre">/start</span>&#160;&#160; <span class="pre">-</span> <span class="pre">tell</span> <span class="pre">the</span> <span class="pre">bot</span> <span class="pre">to</span> <span class="pre">start,</span> <span class="pre">in</span> <span class="pre">case</span> <span class="pre">it</span> <span class="pre">lost</span> <span class="pre">its</span> <span class="pre">connection\n\nExample:\n</span>&#160;&#160;&#160; <span class="pre">discord2chan</span> <span class="pre">mydiscord</span> <span class="pre">=</span> <span class="pre">555555555555555\n\nThis</span> <span class="pre">creates</span> <span class="pre">a</span> <span class="pre">link</span> <span class="pre">between</span> <span class="pre">an</span> <span class="pre">in-game</span> <span class="pre">Evennia</span> <span class="pre">channel</span> <span class="pre">and</span> <span class="pre">an</span> <span class="pre">external\nDiscord</span> <span class="pre">channel.</span> <span class="pre">You</span> <span class="pre">must</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">valid</span> <span class="pre">Discord</span> <span class="pre">bot</span> <span class="pre">application\n(</span> <span class="pre">https://discord.com/developers/applications</span> <span class="pre">)</span> <span class="pre">and</span> <span class="pre">your</span> <span class="pre">DISCORD_BOT_TOKEN\nmust</span> <span class="pre">be</span> <span class="pre">added</span> <span class="pre">to</span> <span class="pre">settings.</span> <span class="pre">(Please</span> <span class="pre">put</span> <span class="pre">it</span> <span class="pre">in</span> <span class="pre">secret_settings</span> <span class="pre">!)\n'}</span></em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.search_index_entry" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">AccountDB</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/models.html#AccountDB"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.AccountDB" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject" title="evennia.typeclasses.models.TypedObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">TypedObject</span></code></a>, <a class="reference internal" href="evennia.accounts.models.html#evennia.accounts.models.AbstractUser" title="django.contrib.auth.models.AbstractUser"><code class="xref py py-class docutils literal notranslate"><span class="pre">AbstractUser</span></code></a></p>
<p>This is a special model using Djangos profile functionality
and extends the default Django User model. It is defined as such
by use of the variable AUTH_PROFILE_MODULE in the settings.
One accesses the fields/methods. We try use this model as much
as possible rather than User, since we can customize this to
our liking.</p>
<p>The TypedObject supplies the following (inherited) properties:</p>
<blockquote>
<div><ul class="simple">
<li><p>key - main name</p></li>
<li><p>typeclass_path - the path to the decorating typeclass</p></li>
<li><p>typeclass - auto-linked typeclass</p></li>
<li><p>date_created - time stamp of object creation</p></li>
<li><p>permissions - perm strings</p></li>
<li><p>dbref - #id of object</p></li>
<li><p>db - persistent attribute storage</p></li>
<li><p>ndb - non-persistent attribute storage</p></li>
</ul>
</div></blockquote>
<p>The AccountDB adds the following properties:</p>
<blockquote>
<div><ul class="simple">
<li><p>is_connected - If any Session is currently connected to this Account</p></li>
<li><p>name - alias for user.username</p></li>
<li><p>sessions - sessions connected to this account</p></li>
<li><p>is_superuser - bool if this account is a superuser</p></li>
<li><p>is_bot - bool if this account is a bot and not a real account</p></li>
</ul>
</div></blockquote>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.DoesNotExist">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">DoesNotExist</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.DoesNotExist" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.dbserialize.html#evennia.utils.dbserialize.ObjectDoesNotExist" title="django.core.exceptions.ObjectDoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">ObjectDoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.MultipleObjectsReturned">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">MultipleObjectsReturned</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.MultipleObjectsReturned" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.account_subscription_set">
<span class="sig-name descname"><span class="pre">account_subscription_set</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.account_subscription_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.cmdset_storage">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">cmdset_storage</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.cmdset_storage" title="Link to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.name. Returns a list of cmdset_storage.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.date_joined">
<span class="sig-name descname"><span class="pre">date_joined</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.date_joined" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_attributes">
<span class="sig-name descname"><span class="pre">db_attributes</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_attributes" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_cmdset_storage">
<span class="sig-name descname"><span class="pre">db_cmdset_storage</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_cmdset_storage" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_date_created">
<span class="sig-name descname"><span class="pre">db_date_created</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_date_created" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_is_bot">
<span class="sig-name descname"><span class="pre">db_is_bot</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_is_bot" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_is_connected">
<span class="sig-name descname"><span class="pre">db_is_connected</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_is_connected" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_key">
<span class="sig-name descname"><span class="pre">db_key</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_key" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_lock_storage">
<span class="sig-name descname"><span class="pre">db_lock_storage</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_lock_storage" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_tags">
<span class="sig-name descname"><span class="pre">db_tags</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_tags" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.db_typeclass_path">
<span class="sig-name descname"><span class="pre">db_typeclass_path</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.db_typeclass_path" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.email">
<span class="sig-name descname"><span class="pre">email</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.email" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.first_name">
<span class="sig-name descname"><span class="pre">first_name</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.first_name" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.get_next_by_date_joined">
<span class="sig-name descname"><span class="pre">get_next_by_date_joined</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field=&lt;django.db.models.fields.DateTimeField:</span> <span class="pre">date_joined&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_next=True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.get_next_by_date_joined" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.get_next_by_db_date_created">
<span class="sig-name descname"><span class="pre">get_next_by_db_date_created</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field=&lt;django.db.models.fields.DateTimeField:</span> <span class="pre">db_date_created&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_next=True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.get_next_by_db_date_created" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.get_previous_by_date_joined">
<span class="sig-name descname"><span class="pre">get_previous_by_date_joined</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field=&lt;django.db.models.fields.DateTimeField:</span> <span class="pre">date_joined&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_next=False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.get_previous_by_date_joined" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.get_previous_by_db_date_created">
<span class="sig-name descname"><span class="pre">get_previous_by_db_date_created</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field=&lt;django.db.models.fields.DateTimeField:</span> <span class="pre">db_date_created&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_next=False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.get_previous_by_db_date_created" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.groups">
<span class="sig-name descname"><span class="pre">groups</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.groups" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.hide_from_accounts_set">
<span class="sig-name descname"><span class="pre">hide_from_accounts_set</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.hide_from_accounts_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.id">
<span class="sig-name descname"><span class="pre">id</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.id" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.is_active">
<span class="sig-name descname"><span class="pre">is_active</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.is_active" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.is_bot">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">is_bot</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.is_bot" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_is_bot</strong>.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.is_connected">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">is_connected</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.is_connected" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_is_connected</strong>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.is_staff">
<span class="sig-name descname"><span class="pre">is_staff</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.is_staff" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.is_superuser">
<span class="sig-name descname"><span class="pre">is_superuser</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.is_superuser" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.key">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">key</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.key" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.last_login">
<span class="sig-name descname"><span class="pre">last_login</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.last_login" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.last_name">
<span class="sig-name descname"><span class="pre">last_name</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.last_name" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.logentry_set">
<span class="sig-name descname"><span class="pre">logentry_set</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.logentry_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Parent.children**</strong> is a <strong>**ReverseManyToOneDescriptor**</strong> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.name">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.name" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.objectdb_set">
<span class="sig-name descname"><span class="pre">objectdb_set</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.objectdb_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Parent.children**</strong> is a <strong>**ReverseManyToOneDescriptor**</strong> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.objects">
<span class="sig-name descname"><span class="pre">objects</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;evennia.accounts.manager.AccountDBManager</span> <span class="pre">object&gt;</span></em><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.objects" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.password">
<span class="sig-name descname"><span class="pre">password</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.password" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.accounts.models.AccountDB'</span></em><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.receiver_account_set">
<span class="sig-name descname"><span class="pre">receiver_account_set</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.receiver_account_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.scriptdb_set">
<span class="sig-name descname"><span class="pre">scriptdb_set</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.scriptdb_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Parent.children**</strong> is a <strong>**ReverseManyToOneDescriptor**</strong> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.sender_account_set">
<span class="sig-name descname"><span class="pre">sender_account_set</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.sender_account_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'SharedMemoryModelBase'</span></em><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.uid">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">uid</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.uid" title="Link to this definition"></a></dt>
<dd><p>Getter. Retrieves the user id</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.user_permissions">
<span class="sig-name descname"><span class="pre">user_permissions</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.user_permissions" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.AccountDB.username">
<span class="sig-name descname"><span class="pre">username</span></span><a class="headerlink" href="#evennia.commands.default.comms.AccountDB.username" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.CHANNEL_DEFAULT_TYPECLASS">
<span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">CHANNEL_DEFAULT_TYPECLASS</span></span><a class="headerlink" href="#evennia.commands.default.comms.CHANNEL_DEFAULT_TYPECLASS" title="Link to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="evennia.comms.comms.html#evennia.comms.comms.DefaultChannel" title="evennia.comms.comms.DefaultChannel"><code class="xref py py-class docutils literal notranslate"><span class="pre">DefaultChannel</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.COMMAND_DEFAULT_CLASS">
<span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">COMMAND_DEFAULT_CLASS</span></span><a class="headerlink" href="#evennia.commands.default.comms.COMMAND_DEFAULT_CLASS" title="Link to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">MuxCommand</span></code></a></p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">DefaultChannel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.comms.models.html#evennia.comms.models.ChannelDB" title="evennia.comms.models.ChannelDB"><code class="xref py py-class docutils literal notranslate"><span class="pre">ChannelDB</span></code></a></p>
<p>This is the base class for all Channel Comms. Inherit from this to
create different types of communication channels.</p>
<p>Class-level variables:
- <strong>send_to_online_only</strong> (bool, default True) - if set, will only try to</p>
<blockquote>
<div><p>send to subscribers that are actually active. This is a useful optimization.</p>
</div></blockquote>
<ul class="simple">
<li><p><strong>log_file</strong> (str, default <strong>“channel_{channelname}.log”</strong>). This is the
log file to which the channel history will be saved. The <strong>{channelname}</strong> tag
will be replaced by the key of the Channel. If an Attribute log_file
is set, this will be used instead. If this is None and no Attribute is found,
no history will be saved.</p></li>
<li><p><strong>channel_prefix_string</strong> (str, default <strong>“[{channelname} ]”</strong>) - this is used
as a simple template to get the channel prefix with <strong>.channel_prefix()</strong>. It is used
in front of every channel message; use <strong>{channelmessage}</strong> token to insert the
name of the current channel. Set to <strong>None</strong> if you want no prefix (or want to
handle it in a hook during message generation instead.</p></li>
<li><p><strong>channel_msg_nick_pattern**(str, default **”{alias}s*?|{alias}s+?(?P&lt;arg1&gt;.+?)”) -
this is what used when a channel subscriber gets a channel nick assigned to this
channel. The nickhandler uses the pattern to pick out this channels name from user
input. The **{alias}</strong> token will get both the channels key and any set/custom aliases
per subscriber. You need to allow for an <strong>&lt;arg1&gt;</strong> regex group to catch any message
that should be send to the channel. You usually dont need to change this pattern
unless you are changing channel command-style entirely.</p></li>
<li><p><strong>channel_msg_nick_replacement</strong> (str, default <strong>“channel {channelname} = $1”</strong> - this
is used by the nickhandler to generate a replacement string once the nickhandler (using
the <strong>channel_msg_nick_pattern</strong>) identifies that the channel should be addressed
to send a message to it. The <strong>&lt;arg1&gt;</strong> regex pattern match from <strong>channel_msg_nick_pattern</strong>
will end up at the <strong>$1</strong> position in the replacement. Together, this allows you do e.g.
public Hello and have that become a mapping to <strong>channel public = Hello</strong>. By default,
the account-level <strong>channel</strong> command is used. If you were to rename that command you must
tweak the output to something like <strong>yourchannelcommandname {channelname} = $1</strong>.</p></li>
</ul>
<ul>
<li><dl class="simple">
<dt>Properties:</dt><dd><p>mutelist
banlist
wholist</p>
</dd>
</dl>
</li>
<li><dl>
<dt>Working methods:</dt><dd><p>get_log_filename()
set_log_filename(filename)
has_connection(account) - check if the given account listens to this channel
connect(account) - connect account to this channel
disconnect(account) - disconnect account from channel
access(access_obj, access_type=listen, default=False) - check the</p>
<blockquote>
<div><p>access on this channel (default access_type is listen)</p>
</div></blockquote>
<p>create(key, creator=None, <a href="#id19"><span class="problematic" id="id20">*</span></a>args, <a href="#id21"><span class="problematic" id="id22">**</span></a>kwargs)
delete() - delete this channel
message_transform(msg, emit=False, prefix=True,</p>
<blockquote>
<div><p>sender_strings=None, external=False) - called by
the comm system and triggers the hooks below</p>
</div></blockquote>
<dl class="simple">
<dt>msg(msgobj, header=None, senders=None, sender_strings=None,</dt><dd><dl class="simple">
<dt>persistent=None, online=False, emit=False, external=False) - main</dt><dd><p>send method, builds and sends a new message to channel.</p>
</dd>
</dl>
</dd>
<dt>tempmsg(msg, header=None, senders=None) - wrapper for sending non-persistent</dt><dd><p>messages.</p>
</dd>
<dt>distribute_message(msg, online=False) - send a message to all</dt><dd><p>connected accounts on channel, optionally sending only
to accounts that are currently online (optimized for very large sends)</p>
</dd>
</dl>
<p>mute(subscriber, <a href="#id23"><span class="problematic" id="id24">**</span></a>kwargs)
unmute(subscriber, <a href="#id25"><span class="problematic" id="id26">**</span></a>kwargs)
ban(target, <a href="#id27"><span class="problematic" id="id28">**</span></a>kwargs)
unban(target, <a href="#id29"><span class="problematic" id="id30">**</span></a>kwargs)
add_user_channel_alias(user, alias, <a href="#id31"><span class="problematic" id="id32">**</span></a>kwargs)
remove_user_channel_alias(user, alias, <a href="#id33"><span class="problematic" id="id34">**</span></a>kwargs)</p>
</dd>
</dl>
</li>
</ul>
<dl>
<dt>Useful hooks:</dt><dd><p>at_channel_creation() - called once, when the channel is created
basetype_setup()
at_init()
at_first_save()
channel_prefix() - how the channel should be</p>
<blockquote>
<div><p>prefixed when returning to user. Returns a string</p>
</div></blockquote>
<dl class="simple">
<dt>format_senders(senders) - should return how to display multiple</dt><dd><p>senders to a channel</p>
</dd>
<dt>pose_transform(msg, sender_string) - should detect if the</dt><dd><p>sender is posing, and if so, modify the string</p>
</dd>
<dt>format_external(msg, senders, emit=False) - format messages sent</dt><dd><p>from outside the game, like from IRC</p>
</dd>
<dt>format_message(msg, emit=False) - format the message body before</dt><dd><p>displaying it to the user. emit generally means that the
message should not be displayed with the senders name.</p>
</dd>
</dl>
<p>channel_prefix()</p>
<p>pre_join_channel(joiner) - if returning False, abort join
post_join_channel(joiner) - called right after successful join
pre_leave_channel(leaver) - if returning False, abort leave
post_leave_channel(leaver) - called right after successful leave
at_pre_msg(message, <a href="#id35"><span class="problematic" id="id36">**</span></a>kwargs)
at_post_msg(message, <a href="#id37"><span class="problematic" id="id38">**</span></a>kwargs)
web_get_admin_url()
web_get_create_url()
web_get_detail_url()
web_get_update_url()
web_get_delete_url()</p>
</dd>
</dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.DoesNotExist">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">DoesNotExist</span></span><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.DoesNotExist" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.comms.models.html#evennia.comms.models.ChannelDB.DoesNotExist" title="evennia.comms.models.ChannelDB.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.MultipleObjectsReturned">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">MultipleObjectsReturned</span></span><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.MultipleObjectsReturned" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.comms.models.html#evennia.comms.models.ChannelDB.MultipleObjectsReturned" title="evennia.comms.models.ChannelDB.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.access">
<span class="sig-name descname"><span class="pre">access</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">accessing_obj</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'listen'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_superuser_bypass</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.access"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.access" title="Link to this definition"></a></dt>
<dd><p>Determines if another object has permission to access.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>accessing_obj</strong> (<em>Object</em>) Object trying to access this one.</p></li>
<li><p><strong>access_type</strong> (<em>str</em><em>, </em><em>optional</em>) Type of access sought.</p></li>
<li><p><strong>default</strong> (<em>bool</em><em>, </em><em>optional</em>) What to return if no lock of access_type was found</p></li>
<li><p><strong>no_superuser_bypass</strong> (<em>bool</em><em>, </em><em>optional</em>) Turns off superuser
lock bypass. Be careful with this one.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>return (bool)</em> Result of lock check.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.add_user_channel_alias">
<span class="sig-name descname"><span class="pre">add_user_channel_alias</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">alias</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.add_user_channel_alias"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.add_user_channel_alias" title="Link to this definition"></a></dt>
<dd><p>Add a personal user-alias for this channel to a given subscriber.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>user</strong> (<em>Object</em><em> or </em><em>Account</em>) The one to alias this channel.</p></li>
<li><p><strong>alias</strong> (<em>str</em>) The desired alias.</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This is tightly coupled to the default <strong>channel</strong> command. If you
change that, you need to change this as well.</p>
<p>We add two nicks - one is a plain <strong>alias -&gt; channel.key</strong> that
users need to be able to reference this channel easily. The other
is a templated nick to easily be able to send messages to the
channel without needing to give the full <strong>channel</strong> command. The
structure of this nick is given by <strong>self.channel_msg_nick_pattern</strong>
and <strong>self.channel_msg_nick_replacement</strong>. By default it maps
<strong>alias &lt;msg&gt; -&gt; channel &lt;channelname&gt; = &lt;msg&gt;</strong>, so that you can
for example just write <strong>pub Hello</strong> to send a message.</p>
<p>The alias created is <strong>alias $1 -&gt; channel channel = $1</strong>, to allow
for sending to channel using the main channel command.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.at_channel_creation">
<span class="sig-name descname"><span class="pre">at_channel_creation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.at_channel_creation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.at_channel_creation" title="Link to this definition"></a></dt>
<dd><p>Called once, when the channel is first created.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.at_first_save">
<span class="sig-name descname"><span class="pre">at_first_save</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.at_first_save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.at_first_save" title="Link to this definition"></a></dt>
<dd><p>Called by the typeclass system the very first time the channel
is saved to the database. Generally, dont overload this but
the hooks called by this method.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.at_init">
<span class="sig-name descname"><span class="pre">at_init</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.at_init"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.at_init" title="Link to this definition"></a></dt>
<dd><p>Hook method. This is always called whenever this channel is
initiated that is, whenever it its typeclass is cached from
memory. This happens on-demand first time the channel is used
or activated in some way after being created but also after
each server restart or reload.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.at_post_msg">
<span class="sig-name descname"><span class="pre">at_post_msg</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.at_post_msg"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.at_post_msg" title="Link to this definition"></a></dt>
<dd><p>This is called after sending to <em>all</em> valid recipients. It is normally
used for logging/channel history.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>message</strong> (<em>str</em>) The message sent.</p></li>
<li><p><strong>**kwargs</strong> (<em>any</em>) Keywords passed on from <strong>msg</strong>, including <strong>senders</strong>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.at_pre_msg">
<span class="sig-name descname"><span class="pre">at_pre_msg</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.at_pre_msg"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.at_pre_msg" title="Link to this definition"></a></dt>
<dd><p>Called before the starting of sending the message to a receiver. This
is called before any hooks on the receiver itself. If this returns
None/False, the sending will be aborted.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>message</strong> (<em>str</em>) The message to send.</p></li>
<li><p><strong>**kwargs</strong> (<em>any</em>) Keywords passed on from <strong>.msg</strong>. This includes
<strong>senders</strong>.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>str, False or None</em> </p>
<dl class="simple">
<dt>Any custom changes made to the message. If</dt><dd><p>falsy, no message will be sent.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.ban">
<span class="sig-name descname"><span class="pre">ban</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.ban"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.ban" title="Link to this definition"></a></dt>
<dd><p>Ban a given user from connecting to the channel. This will not stop
users already connected, so the user must be booted for this to take
effect.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>target</strong> (<em>Object</em><em> or </em><em>Account</em>) The entity to unmute. This need not
be a subscriber.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if banning was successful, False if target was already</dt><dd><p>banned.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.banlist">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">banlist</span></span><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.banlist" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.basetype_setup">
<span class="sig-name descname"><span class="pre">basetype_setup</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.basetype_setup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.basetype_setup" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.channel_msg_nick_pattern">
<span class="sig-name descname"><span class="pre">channel_msg_nick_pattern</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'{alias}\\s*?|{alias}\\s+?(?P&lt;arg1&gt;.+?)'</span></em><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.channel_msg_nick_pattern" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.channel_msg_nick_replacement">
<span class="sig-name descname"><span class="pre">channel_msg_nick_replacement</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'&#64;channel</span> <span class="pre">{channelname}</span> <span class="pre">=</span> <span class="pre">$1'</span></em><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.channel_msg_nick_replacement" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.channel_prefix">
<span class="sig-name descname"><span class="pre">channel_prefix</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.channel_prefix"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.channel_prefix" title="Link to this definition"></a></dt>
<dd><p>Hook method. How the channel should prefix itself for users.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>str</em> The channel prefix.</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.channel_prefix_string">
<span class="sig-name descname"><span class="pre">channel_prefix_string</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'[{channelname}]</span> <span class="pre">'</span></em><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.channel_prefix_string" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.connect">
<span class="sig-name descname"><span class="pre">connect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subscriber</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.connect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.connect" title="Link to this definition"></a></dt>
<dd><p>Connect the user to this channel. This checks access.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>subscriber</strong> (<em>Account</em><em> or </em><em>Object</em>) the entity to subscribe
to this channel.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>success (bool)</em> </p>
<dl class="simple">
<dt>Whether or not the addition was</dt><dd><p>successful.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.create">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">creator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.create"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.create" title="Link to this definition"></a></dt>
<dd><p>Creates a basic Channel with default parameters, unless otherwise
specified or extended.</p>
<p>Provides a friendlier interface to the utils.create_channel() function.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>key</strong> (<em>str</em>) This must be unique.</p></li>
<li><p><strong>creator</strong> (<em>Account</em><em> or </em><em>Object</em>) Entity to associate with this channel
(used for tracking)</p></li>
</ul>
</dd>
<dt class="field-even">Keyword Arguments<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>aliases</strong> (<em>list</em><em> of </em><em>str</em>) List of alternative (likely shorter) keynames.</p></li>
<li><p><strong>description</strong> (<em>str</em>) A description of the channel, for use in listings.</p></li>
<li><p><strong>locks</strong> (<em>str</em>) Lockstring.</p></li>
<li><p><strong>keep_log</strong> (<em>bool</em>) Log channel throughput.</p></li>
<li><p><strong>typeclass</strong> (<em>str</em><em> or </em><em>class</em>) The typeclass of the Channel (not
often used).</p></li>
<li><p><strong>ip</strong> (<em>str</em>) IP address of creator (for object auditing).</p></li>
</ul>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>channel (Channel)</em> A newly created Channel.
errors (list): A list of errors in string form, if any.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.delete">
<span class="sig-name descname"><span class="pre">delete</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.delete"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.delete" title="Link to this definition"></a></dt>
<dd><p>Deletes channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>If deletion was successful. Only time it can fail would be</dt><dd><p>if channel was already deleted. Even if it were to fail, all subscribers
will be disconnected.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.disconnect">
<span class="sig-name descname"><span class="pre">disconnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subscriber</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.disconnect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.disconnect" title="Link to this definition"></a></dt>
<dd><p>Disconnect entity from this channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>subscriber</strong> (<em>Account</em><em> of </em><em>Object</em>) the
entity to disconnect.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>success (bool)</em> </p>
<dl class="simple">
<dt>Whether or not the removal was</dt><dd><p>successful.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.distribute_message">
<span class="sig-name descname"><span class="pre">distribute_message</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msgobj</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">online</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.distribute_message"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.distribute_message" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.format_external">
<span class="sig-name descname"><span class="pre">format_external</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msgobj</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">senders</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">emit</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.format_external"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.format_external" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.format_message">
<span class="sig-name descname"><span class="pre">format_message</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msgobj</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">emit</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.format_message"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.format_message" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.format_senders">
<span class="sig-name descname"><span class="pre">format_senders</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">senders</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.format_senders"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.format_senders" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.get_absolute_url">
<span class="sig-name descname"><span class="pre">get_absolute_url</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.get_absolute_url" title="Link to this definition"></a></dt>
<dd><p>Returns the URI path for a View that allows users to view details for
this object.</p>
<p>ex. Oscar (Character) = /characters/oscar/1/</p>
<p>For this to work, the developer must have defined a named view somewhere
in urls.py that follows the format modelname-action, so in this case
a named view of channel-detail would be referenced by this method.</p>
<p>ex.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">url</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;channels/(?P&lt;slug&gt;[\w\d\-]+)/$&#39;</span><span class="p">,</span>
<span class="n">ChannelDetailView</span><span class="o">.</span><span class="n">as_view</span><span class="p">(),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;channel-detail&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>If no View has been created and defined in urls.py, returns an
HTML anchor.</p>
<p>This method is naive and simply returns a path. Securing access to
the actual view and limiting who can view this object is the developers
responsibility.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>path (str)</em> URI path to object detail page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.get_log_filename">
<span class="sig-name descname"><span class="pre">get_log_filename</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.get_log_filename"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.get_log_filename" title="Link to this definition"></a></dt>
<dd><p>File name to use for channel log.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>str</em> </p>
<dl class="simple">
<dt>The filename to use (this is always assumed to be inside</dt><dd><p>settings.LOG_DIR)</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.has_connection">
<span class="sig-name descname"><span class="pre">has_connection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subscriber</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.has_connection"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.has_connection" title="Link to this definition"></a></dt>
<dd><p>Checks so this account is actually listening
to this channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subscriber</strong> (<em>Account</em><em> or </em><em>Object</em>) Entity to check.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>has_sub (bool)</em> </p>
<dl class="simple">
<dt>Whether the subscriber is subscribing to</dt><dd><p>this channel or not.</p>
</dd>
</dl>
</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<dl class="simple">
<dt>This will first try Account subscribers and only try Object</dt><dd><p>if the Account fails.</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.log_file">
<span class="sig-name descname"><span class="pre">log_file</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'channel_{channelname}.log'</span></em><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.log_file" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.message_transform">
<span class="sig-name descname"><span class="pre">message_transform</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.message_transform"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.message_transform" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.msg">
<span class="sig-name descname"><span class="pre">msg</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">senders</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bypass_mute</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.msg"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.msg" title="Link to this definition"></a></dt>
<dd><p>Send message to channel, causing it to be distributed to all non-muted
subscribed users of that channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>message</strong> (<em>str</em>) The message to send.</p></li>
<li><p><strong>senders</strong> (<em>Object</em><em>, </em><em>Account</em><em> or </em><em>list</em><em>, </em><em>optional</em>) If not given, there is
no way to associate one or more senders with the message (like
a broadcast message or similar).</p></li>
<li><p><strong>bypass_mute</strong> (<em>bool</em><em>, </em><em>optional</em>) If set, always send, regardless of
individual mute-state of subscriber. This can be used for
global announcements or warnings/alerts.</p></li>
<li><p><strong>**kwargs</strong> (<em>any</em>) This will be passed on to all hooks. Use <strong>no_prefix</strong>
to exclude the channel prefix.</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The call hook calling sequence is:</p>
<ul class="simple">
<li><p><strong>msg = channel.at_pre_msg(message, **kwargs)</strong> (aborts for all if return None)</p></li>
<li><p><strong>msg = receiver.at_pre_channel_msg(msg, channel, **kwargs)</strong> (aborts for receiver if return None)</p></li>
<li><p><strong>receiver.at_channel_msg(msg, channel, **kwargs)</strong></p></li>
<li><p><strong>receiver.at_post_channel_msg(msg, channel, **kwargs)**</strong></p></li>
</ul>
<p>Called after all receivers are processed:
- <strong>channel.at_post_all_msg(message, **kwargs)</strong></p>
<p>(where the senders/bypass_mute are embedded into <a href="#id39"><span class="problematic" id="id40">**</span></a>kwargs for
later access in hooks)</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.mute">
<span class="sig-name descname"><span class="pre">mute</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subscriber</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.mute"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.mute" title="Link to this definition"></a></dt>
<dd><p>Adds an entity to the list of muted subscribers.
A muted subscriber will no longer see channel messages,
but may use channel commands.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>subscriber</strong> (<em>Object</em><em> or </em><em>Account</em>) Subscriber to mute.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if muting was successful, False if we were already</dt><dd><p>muted.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.mutelist">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">mutelist</span></span><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.mutelist" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.objects">
<span class="sig-name descname"><span class="pre">objects</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;evennia.comms.managers.ChannelManager</span> <span class="pre">object&gt;</span></em><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.objects" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.comms.comms.DefaultChannel'</span></em><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.pose_transform">
<span class="sig-name descname"><span class="pre">pose_transform</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msgobj</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sender_string</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pose_transform"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.pose_transform" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.post_join_channel">
<span class="sig-name descname"><span class="pre">post_join_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">joiner</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_join_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.post_join_channel" title="Link to this definition"></a></dt>
<dd><p>Hook method. Runs right after an object or account joins a channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>joiner</strong> (<em>object</em>) The joining object.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>By default this adds the needed channel nicks to the joiner.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.post_leave_channel">
<span class="sig-name descname"><span class="pre">post_leave_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">leaver</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_leave_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.post_leave_channel" title="Link to this definition"></a></dt>
<dd><p>Hook method. Runs right after an object or account leaves a channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>leaver</strong> (<em>object</em>) The leaving object.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.post_send_message">
<span class="sig-name descname"><span class="pre">post_send_message</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msg</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_send_message"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.post_send_message" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.pre_join_channel">
<span class="sig-name descname"><span class="pre">pre_join_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">joiner</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_join_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.pre_join_channel" title="Link to this definition"></a></dt>
<dd><p>Hook method. Runs right before a channel is joined. If this
returns a false value, channel joining is aborted.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>joiner</strong> (<em>object</em>) The joining object.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>should_join (bool)</em> If <strong>False</strong>, channel joining is aborted.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.pre_leave_channel">
<span class="sig-name descname"><span class="pre">pre_leave_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">leaver</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_leave_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.pre_leave_channel" title="Link to this definition"></a></dt>
<dd><p>Hook method. Runs right before a user leaves a channel. If this returns a false
value, leaving the channel will be aborted.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>leaver</strong> (<em>object</em>) The leaving object.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>should_leave (bool)</em> If <strong>False</strong>, channel parting is aborted.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.pre_send_message">
<span class="sig-name descname"><span class="pre">pre_send_message</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msg</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_send_message"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.pre_send_message" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.remove_user_channel_alias">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">remove_user_channel_alias</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">alias</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.remove_user_channel_alias"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.remove_user_channel_alias" title="Link to this definition"></a></dt>
<dd><p>Remove a personal channel alias from a user.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>user</strong> (<em>Object</em><em> or </em><em>Account</em>) The user to remove an alias from.</p></li>
<li><p><strong>alias</strong> (<em>str</em>) The alias to remove.</p></li>
<li><p><strong>**kwargs</strong> Unused by default. Can be used to pass extra variables
into a custom implementation.</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The channel-alias actually consists of two aliases - one
channel-based one for searching channels with the alias and one
inputline one for doing the channelalias msg - call.</p>
<p>This is a classmethod because it doesnt actually operate on the
channel instance.</p>
<p>It sits on the channel because the nick structure for this is
pretty complex and needs to be located in a central place (rather
on, say, the channel command).</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.send_to_online_only">
<span class="sig-name descname"><span class="pre">send_to_online_only</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.send_to_online_only" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.set_log_filename">
<span class="sig-name descname"><span class="pre">set_log_filename</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.set_log_filename"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.set_log_filename" title="Link to this definition"></a></dt>
<dd><p>Set a custom log filename.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>filename</strong> (<em>str</em>) The filename to set. This is a path starting from
inside the settings.LOG_DIR location.</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'DefaultChannel'</span></em><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.unban">
<span class="sig-name descname"><span class="pre">unban</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.unban"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.unban" title="Link to this definition"></a></dt>
<dd><p>Un-Ban a given user. This will not reconnect them - they will still
have to reconnect and set up aliases anew.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>target</strong> (<em>Object</em><em> or </em><em>Account</em>) The entity to unmute. This need not
be a subscriber.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if unbanning was successful, False if target was not</dt><dd><p>previously banned.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.unmute">
<span class="sig-name descname"><span class="pre">unmute</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subscriber</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.unmute"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.unmute" title="Link to this definition"></a></dt>
<dd><p>Removes an entity from the list of muted subscribers. A muted subscriber
will no longer see channel messages, but may use channel commands.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>subscriber</strong> (<em>Object</em><em> or </em><em>Account</em>) The subscriber to unmute.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>True if unmuting was successful, False if we were already</dt><dd><p>unmuted.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.web_get_admin_url">
<span class="sig-name descname"><span class="pre">web_get_admin_url</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.web_get_admin_url"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.web_get_admin_url" title="Link to this definition"></a></dt>
<dd><p>Returns the URI path for the Django Admin page for this object.</p>
<p>ex. Account#1 = /admin/accounts/accountdb/1/change/</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>path (str)</em> URI path to Django Admin page for object.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.web_get_create_url">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">web_get_create_url</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.web_get_create_url"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.web_get_create_url" title="Link to this definition"></a></dt>
<dd><p>Returns the URI path for a View that allows users to create new
instances of this object.</p>
<p>ex. Chargen = /characters/create/</p>
<p>For this to work, the developer must have defined a named view somewhere
in urls.py that follows the format modelname-action, so in this case
a named view of channel-create would be referenced by this method.</p>
<p>ex.
url(rchannels/create/, ChannelCreateView.as_view(), name=channel-create)</p>
<p>If no View has been created and defined in urls.py, returns an
HTML anchor.</p>
<p>This method is naive and simply returns a path. Securing access to
the actual view and limiting who can create new objects is the
developers responsibility.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>path (str)</em> URI path to object creation page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.web_get_delete_url">
<span class="sig-name descname"><span class="pre">web_get_delete_url</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.web_get_delete_url"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.web_get_delete_url" title="Link to this definition"></a></dt>
<dd><p>Returns the URI path for a View that allows users to delete this object.</p>
<p>ex. Oscar (Character) = /characters/oscar/1/delete/</p>
<p>For this to work, the developer must have defined a named view somewhere
in urls.py that follows the format modelname-action, so in this case
a named view of channel-delete would be referenced by this method.</p>
<p>ex.
url(rchannels/(?P&lt;slug&gt;[wd-]+)/(?P&lt;pk&gt;[0-9]+)/delete/$,</p>
<blockquote>
<div><p>ChannelDeleteView.as_view(), name=channel-delete)</p>
</div></blockquote>
<p>If no View has been created and defined in urls.py, returns an
HTML anchor.</p>
<p>This method is naive and simply returns a path. Securing access to
the actual view and limiting who can delete this object is the developers
responsibility.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>path (str)</em> URI path to object deletion page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.web_get_detail_url">
<span class="sig-name descname"><span class="pre">web_get_detail_url</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.web_get_detail_url"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.web_get_detail_url" title="Link to this definition"></a></dt>
<dd><p>Returns the URI path for a View that allows users to view details for
this object.</p>
<p>ex. Oscar (Character) = /characters/oscar/1/</p>
<p>For this to work, the developer must have defined a named view somewhere
in urls.py that follows the format modelname-action, so in this case
a named view of channel-detail would be referenced by this method.</p>
<p>ex.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">url</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;channels/(?P&lt;slug&gt;[\w\d\-]+)/$&#39;</span><span class="p">,</span>
<span class="n">ChannelDetailView</span><span class="o">.</span><span class="n">as_view</span><span class="p">(),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;channel-detail&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>If no View has been created and defined in urls.py, returns an
HTML anchor.</p>
<p>This method is naive and simply returns a path. Securing access to
the actual view and limiting who can view this object is the developers
responsibility.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>path (str)</em> URI path to object detail page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.web_get_update_url">
<span class="sig-name descname"><span class="pre">web_get_update_url</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.web_get_update_url"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.web_get_update_url" title="Link to this definition"></a></dt>
<dd><p>Returns the URI path for a View that allows users to update this
object.</p>
<p>ex. Oscar (Character) = /characters/oscar/1/change/</p>
<p>For this to work, the developer must have defined a named view somewhere
in urls.py that follows the format modelname-action, so in this case
a named view of channel-update would be referenced by this method.</p>
<p>ex.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">url</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;channels/(?P&lt;slug&gt;[\w\d\-]+)/(?P&lt;pk&gt;[0-9]+)/change/$&#39;</span><span class="p">,</span>
<span class="n">ChannelUpdateView</span><span class="o">.</span><span class="n">as_view</span><span class="p">(),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;channel-update&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>If no View has been created and defined in urls.py, returns an
HTML anchor.</p>
<p>This method is naive and simply returns a path. Securing access to
the actual view and limiting who can modify objects is the developers
responsibility.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>path (str)</em> URI path to object update page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.DefaultChannel.wholist">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">wholist</span></span><a class="headerlink" href="#evennia.commands.default.comms.DefaultChannel.wholist" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.commands.default.comms.LockException">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">LockException</span></span><a class="reference internal" href="../_modules/evennia/locks/lockhandler.html#LockException"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.LockException" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></p>
<p>Raised during an error in a lock.</p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">Msg</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Msg" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.idmapper.models.html#evennia.utils.idmapper.models.SharedMemoryModel" title="evennia.utils.idmapper.models.SharedMemoryModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">SharedMemoryModel</span></code></a></p>
<p>A single message. This model describes all ooc messages
sent in-game, both to channels and between accounts.</p>
<p>The Msg class defines the following database fields (all
accessed via specific handler methods):</p>
<ul class="simple">
<li><p>db_sender_accounts: Account senders</p></li>
<li><p>db_sender_objects: Object senders</p></li>
<li><p>db_sender_scripts: Script senders</p></li>
<li><p>db_sender_external: External sender (defined as string name)</p></li>
<li><p>db_receivers_accounts: Receiving accounts</p></li>
<li><p>db_receivers_objects: Receiving objects</p></li>
<li><p>db_receivers_scripts: Receiveing scripts</p></li>
<li><p>db_receiver_external: External sender (defined as string name)</p></li>
<li><p>db_header: Header text</p></li>
<li><p>db_message: The actual message text</p></li>
<li><p>db_date_created: time message was created / sent</p></li>
<li><p>db_hide_from_sender: bool if message should be hidden from sender</p></li>
<li><p>db_hide_from_receivers: list of receiver objects to hide message from</p></li>
<li><p>db_lock_storage: Internal storage of lock strings.</p></li>
</ul>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.DoesNotExist">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">DoesNotExist</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.DoesNotExist" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.dbserialize.html#evennia.utils.dbserialize.ObjectDoesNotExist" title="django.core.exceptions.ObjectDoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">ObjectDoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.MultipleObjectsReturned">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">MultipleObjectsReturned</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.MultipleObjectsReturned" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.access">
<span class="sig-name descname"><span class="pre">access</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">accessing_obj</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'read'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.access"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Msg.access" title="Link to this definition"></a></dt>
<dd><p>Checks lock access.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>accessing_obj</strong> (<em>Object</em><em> or </em><em>Account</em>) The object trying to gain access.</p></li>
<li><p><strong>access_type</strong> (<em>str</em><em>, </em><em>optional</em>) The type of lock access to check.</p></li>
<li><p><strong>default</strong> (<em>bool</em>) Fallback to use if <strong>access_type</strong> lock is not defined.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>result (bool)</em> If access was granted or not.</p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.date_created">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">date_created</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.date_created" title="Link to this definition"></a></dt>
<dd><p>Return the field in localized time based on settings.TIME_ZONE.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_date_created">
<span class="sig-name descname"><span class="pre">db_date_created</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_date_created" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_header">
<span class="sig-name descname"><span class="pre">db_header</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_header" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_hide_from_accounts">
<span class="sig-name descname"><span class="pre">db_hide_from_accounts</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_hide_from_accounts" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_hide_from_objects">
<span class="sig-name descname"><span class="pre">db_hide_from_objects</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_hide_from_objects" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_lock_storage">
<span class="sig-name descname"><span class="pre">db_lock_storage</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_lock_storage" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_message">
<span class="sig-name descname"><span class="pre">db_message</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_message" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_receiver_external">
<span class="sig-name descname"><span class="pre">db_receiver_external</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_receiver_external" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_receivers_accounts">
<span class="sig-name descname"><span class="pre">db_receivers_accounts</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_receivers_accounts" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_receivers_objects">
<span class="sig-name descname"><span class="pre">db_receivers_objects</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_receivers_objects" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_receivers_scripts">
<span class="sig-name descname"><span class="pre">db_receivers_scripts</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_receivers_scripts" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_sender_accounts">
<span class="sig-name descname"><span class="pre">db_sender_accounts</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_sender_accounts" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_sender_external">
<span class="sig-name descname"><span class="pre">db_sender_external</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_sender_external" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_sender_objects">
<span class="sig-name descname"><span class="pre">db_sender_objects</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_sender_objects" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_sender_scripts">
<span class="sig-name descname"><span class="pre">db_sender_scripts</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_sender_scripts" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.db_tags">
<span class="sig-name descname"><span class="pre">db_tags</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.db_tags" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.get_next_by_db_date_created">
<span class="sig-name descname"><span class="pre">get_next_by_db_date_created</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field=&lt;django.db.models.fields.DateTimeField:</span> <span class="pre">db_date_created&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_next=True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.default.comms.Msg.get_next_by_db_date_created" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.get_previous_by_db_date_created">
<span class="sig-name descname"><span class="pre">get_previous_by_db_date_created</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field=&lt;django.db.models.fields.DateTimeField:</span> <span class="pre">db_date_created&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_next=False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.default.comms.Msg.get_previous_by_db_date_created" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.header">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">header</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.header" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_header</strong>.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.hide_from">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">hide_from</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.hide_from" title="Link to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.hide_from.
Returns two lists of accounts and objects.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.id">
<span class="sig-name descname"><span class="pre">id</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.id" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.lock_storage">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">lock_storage</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.lock_storage" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_lock_storage</strong>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.locks">
<span class="sig-name descname"><span class="pre">locks</span></span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.locks"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Msg.locks" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.message">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">message</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.message" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_message</strong>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.objects">
<span class="sig-name descname"><span class="pre">objects</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;evennia.comms.managers.MsgManager</span> <span class="pre">object&gt;</span></em><a class="headerlink" href="#evennia.commands.default.comms.Msg.objects" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.comms.models.Msg'</span></em><a class="headerlink" href="#evennia.commands.default.comms.Msg.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.receiver_external">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">receiver_external</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.receiver_external" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_receiver_external</strong>.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.receivers">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">receivers</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.receivers" title="Link to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.receivers.
Returns four lists of receivers: accounts, objects, scripts and</p>
<blockquote>
<div><p>external_receivers.</p>
</div></blockquote>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.remove_receiver">
<span class="sig-name descname"><span class="pre">remove_receiver</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">receivers</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.remove_receiver"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Msg.remove_receiver" title="Link to this definition"></a></dt>
<dd><p>Remove a single receiver, a list of receivers, or a single extral receiver.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>receivers</strong> (<em>Account</em><em>, </em><em>Object</em><em>, </em><em>Script</em><em>, </em><em>list</em><em> or </em><em>str</em>) Receiver
to remove. A string removes the external receiver.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.remove_sender">
<span class="sig-name descname"><span class="pre">remove_sender</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">senders</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.remove_sender"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Msg.remove_sender" title="Link to this definition"></a></dt>
<dd><p>Remove a single sender or a list of senders.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>senders</strong> (<em>Account</em><em>, </em><em>Object</em><em>, </em><em>str</em><em> or </em><em>list</em>) Senders to remove.
If a string, removes the external sender.</p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.sender_external">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">sender_external</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.sender_external" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_sender_external</strong>.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.senders">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">senders</span></span><a class="headerlink" href="#evennia.commands.default.comms.Msg.senders" title="Link to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.senders</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.tags">
<span class="sig-name descname"><span class="pre">tags</span></span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.tags"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Msg.tags" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Msg.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'SharedMemoryModelBase'</span></em><a class="headerlink" href="#evennia.commands.default.comms.Msg.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">Q</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_connector</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_negated</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/django/db/models/query_utils.html#Q"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Q" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Node</span></code></p>
<p>Encapsulate filters as objects that can then be combined logically (using
<strong>&amp;</strong> and <strong>|</strong>).</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.AND">
<span class="sig-name descname"><span class="pre">AND</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'AND'</span></em><a class="headerlink" href="#evennia.commands.default.comms.Q.AND" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.OR">
<span class="sig-name descname"><span class="pre">OR</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'OR'</span></em><a class="headerlink" href="#evennia.commands.default.comms.Q.OR" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.XOR">
<span class="sig-name descname"><span class="pre">XOR</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'XOR'</span></em><a class="headerlink" href="#evennia.commands.default.comms.Q.XOR" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_connector</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_negated</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/django/db/models/query_utils.html#Q.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Q.__init__" title="Link to this definition"></a></dt>
<dd><p>Construct a new Node. If no connector is given, use the default.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.check">
<span class="sig-name descname"><span class="pre">check</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">against</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">using</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'default'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/django/db/models/query_utils.html#Q.check"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Q.check" title="Link to this definition"></a></dt>
<dd><p>Do a database query to check if the expressions of the Q instance
matches against the expressions.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.conditional">
<span class="sig-name descname"><span class="pre">conditional</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="headerlink" href="#evennia.commands.default.comms.Q.conditional" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.connectors">
<span class="sig-name descname"><span class="pre">connectors</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">(None,</span> <span class="pre">'AND',</span> <span class="pre">'OR',</span> <span class="pre">'XOR')</span></em><a class="headerlink" href="#evennia.commands.default.comms.Q.connectors" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.deconstruct">
<span class="sig-name descname"><span class="pre">deconstruct</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/django/db/models/query_utils.html#Q.deconstruct"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Q.deconstruct" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.default">
<span class="sig-name descname"><span class="pre">default</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'AND'</span></em><a class="headerlink" href="#evennia.commands.default.comms.Q.default" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.flatten">
<span class="sig-name descname"><span class="pre">flatten</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/django/db/models/query_utils.html#Q.flatten"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Q.flatten" title="Link to this definition"></a></dt>
<dd><p>Recursively yield this Q object and all subexpressions, in depth-first
order.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.identity">
<span class="sig-name descname"><span class="pre">identity</span></span><a class="headerlink" href="#evennia.commands.default.comms.Q.identity" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.referenced_base_fields">
<span class="sig-name descname"><span class="pre">referenced_base_fields</span></span><a class="headerlink" href="#evennia.commands.default.comms.Q.referenced_base_fields" title="Link to this definition"></a></dt>
<dd><p>Retrieve all base fields referenced directly or through F expressions
excluding any fields referenced through joins.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.replace_expressions">
<span class="sig-name descname"><span class="pre">replace_expressions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">replacements</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/django/db/models/query_utils.html#Q.replace_expressions"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Q.replace_expressions" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.commands.default.comms.Q.resolve_expression">
<span class="sig-name descname"><span class="pre">resolve_expression</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">query</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_joins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reuse</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">summarize</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">for_save</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/django/db/models/query_utils.html#Q.resolve_expression"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.Q.resolve_expression" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.commands.default.comms.ask_yes_no">
<span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">ask_yes_no</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">caller</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prompt</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'Yes</span> <span class="pre">or</span> <span class="pre">No</span> <span class="pre">{options}?'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">yes_action</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'Yes'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_action</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'No'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_abort</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">session</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/evmenu.html#ask_yes_no"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.ask_yes_no" title="Link to this definition"></a></dt>
<dd><p>A helper function for asking a simple yes/no question. This will cause
the system to pause and wait for input from the player.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>caller</strong> (<em>Object</em>) The entity being asked.</p></li>
<li><p><strong>prompt</strong> (<em>str</em>) The yes/no question to ask. This takes an optional formatting
marker <strong>{options}</strong> which will be filled with Y/N, [Y]/N or
Y/[N] depending on the setting of <strong>default</strong>. If <strong>allow_abort</strong> is set,
then the A(bort) option will also be available.</p></li>
<li><p><strong>yes_action</strong> (<em>callable</em><em> or </em><em>str</em>) If a callable, this will be called
with <strong>(caller, *args, **kwargs)</strong> when the Yes-choice is made.
If a string, this string will be echoed back to the caller.</p></li>
<li><p><strong>no_action</strong> (<em>callable</em><em> or </em><em>str</em>) If a callable, this will be called
with <strong>(caller, *args, **kwargs)</strong> when the No-choice is made.
If a string, this string will be echoed back to the caller.</p></li>
<li><p><strong>default</strong> (<em>str optional</em>) This is what the user will get if they just press the
return key without giving any input. One of N, Y, A or <strong>None</strong>
for no default (an explicit choice must be given). If A (abort)
is given, <strong>allow_abort</strong> kwarg is ignored and assumed set.</p></li>
<li><p><strong>allow_abort</strong> (<em>bool</em><em>, </em><em>optional</em>) If set, the A(bort) option is available
(a third option meaning neither yes or no but just exits the prompt).</p></li>
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.session.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) This allows to specify the
session to send the prompt to. Its usually only needed if <strong>caller</strong>
is an Account in multisession modes greater than 2. The session is
then updated by the command and is available (for example in
callbacks) through <strong>caller.ndb._yes_no_question.session</strong>.</p></li>
<li><p><strong>*args</strong> Additional arguments passed on into callables.</p></li>
<li><p><strong>**kwargs</strong> Additional keyword args passed on into callables.</p></li>
</ul>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>RuntimeError</strong><strong>, </strong><strong>FooError</strong> If default and <strong>allow_abort</strong> clashes.</p>
</dd>
</dl>
<p class="rubric">Example</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># just returning strings</span>
<span class="n">ask_yes_no</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;Are you happy </span><span class="si">{options}</span><span class="s2">?&quot;</span><span class="p">,</span>
<span class="s2">&quot;you answered yes&quot;</span><span class="p">,</span> <span class="s2">&quot;you answered no&quot;</span><span class="p">)</span>
<span class="c1"># trigger callables</span>
<span class="n">ask_yes_no</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;Are you sad </span><span class="si">{options}</span><span class="s2">?&quot;</span><span class="p">,</span>
<span class="n">_callable_yes</span><span class="p">,</span> <span class="n">_callable_no</span><span class="p">,</span> <span class="n">allow_abort</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.commands.default.comms.class_from_module">
<span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">class_from_module</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">defaultpaths</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fallback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/utils.html#class_from_module"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.class_from_module" title="Link to this definition"></a></dt>
<dd><p>Return a class from a module, given the class full python path. This is
primarily used to convert db_typeclass_path:s to classes.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> (<em>str</em>) Full Python dot-path to module.</p></li>
<li><p><strong>defaultpaths</strong> (<em>iterable</em><em>, </em><em>optional</em>) If a direct import from <strong>path</strong> fails,
try subsequent imports by prepending those paths to <strong>path</strong>.</p></li>
<li><p><strong>fallback</strong> (<em>str</em>) If all other attempts fail, use this path as a fallback.
This is intended as a last-resort. In the example of Evennia
loading, this would be a path to a default parent class in the
evennia repo itself.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>class (Class)</em> An uninstantiated class recovered from path.</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>ImportError</strong> If all loading failed.</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.commands.default.comms.strip_unsafe_input">
<span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">strip_unsafe_input</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">txt</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">session</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bypass_perms</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/utils.html#strip_unsafe_input"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.strip_unsafe_input" title="Link to this definition"></a></dt>
<dd><p>Remove unsafe text codes from text; these are used to elimitate
exploits in user-provided data, such as html-tags, line breaks etc.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>txt</strong> (<em>str</em>) The text to clean.</p></li>
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.session.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) A Session in order to determine if
the check should be bypassed by permission (will be checked
with the perm lock, taking permission hierarchies into account).</p></li>
<li><p><strong>bypass_perms</strong> (<em>list</em><em>, </em><em>optional</em>) Iterable of permission strings
to check for bypassing the strip. If not given, use
<strong>settings.INPUT_CLEANUP_BYPASS_PERMISSIONS</strong>.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>str</em> The cleaned string.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The <strong>INPUT_CLEANUP_BYPASS_PERMISSIONS</strong> list defines what account
permissions are required to bypass this strip.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.commands.default.comms.tail_log_file">
<span class="sig-prename descclassname"><span class="pre">evennia.commands.default.comms.</span></span><span class="sig-name descname"><span class="pre">tail_log_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">offset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nlines</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/logger.html#tail_log_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.commands.default.comms.tail_log_file" title="Link to this definition"></a></dt>
<dd><p>Return the tail of the log file.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename</strong> (<em>str</em>) The name of the log file, presumed to be in
the Evennia log dir.</p></li>
<li><p><strong>offset</strong> (<em>int</em>) The line offset <em>from the end of the file</em> to start
reading from. 0 means to start at the latest entry.</p></li>
<li><p><strong>nlines</strong> (<em>int</em>) How many lines to return, counting backwards
from the offset. If file is shorter, will get all lines.</p></li>
<li><p><strong>callback</strong> (<em>callable</em><em>, </em><em>optional</em>) A function to manage the result of the
asynchronous file access. This will get a list of lines. If unset,
the tail will happen synchronously.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><p><em>lines (deferred or list)</em> </p>
<dl class="simple">
<dt>This will be a deferred if <strong>callable</strong> is given,</dt><dd><p>otherwise it will be a list with The nline entries from the end of the file, or
all if the file is shorter than nlines.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo of Evennia"/>
</a></p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.commands.default.comms</a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel"><code class="docutils literal notranslate"><span class="pre">CmdChannel</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.key"><code class="docutils literal notranslate"><span class="pre">CmdChannel.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.aliases"><code class="docutils literal notranslate"><span class="pre">CmdChannel.aliases</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.help_category"><code class="docutils literal notranslate"><span class="pre">CmdChannel.help_category</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.locks"><code class="docutils literal notranslate"><span class="pre">CmdChannel.locks</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.switch_options"><code class="docutils literal notranslate"><span class="pre">CmdChannel.switch_options</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.account_caller"><code class="docutils literal notranslate"><span class="pre">CmdChannel.account_caller</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.search_channel"><code class="docutils literal notranslate"><span class="pre">CmdChannel.search_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.msg_channel"><code class="docutils literal notranslate"><span class="pre">CmdChannel.msg_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.get_channel_history"><code class="docutils literal notranslate"><span class="pre">CmdChannel.get_channel_history()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.sub_to_channel"><code class="docutils literal notranslate"><span class="pre">CmdChannel.sub_to_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.unsub_from_channel"><code class="docutils literal notranslate"><span class="pre">CmdChannel.unsub_from_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.add_alias"><code class="docutils literal notranslate"><span class="pre">CmdChannel.add_alias()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.remove_alias"><code class="docutils literal notranslate"><span class="pre">CmdChannel.remove_alias()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.get_channel_aliases"><code class="docutils literal notranslate"><span class="pre">CmdChannel.get_channel_aliases()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.mute_channel"><code class="docutils literal notranslate"><span class="pre">CmdChannel.mute_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.unmute_channel"><code class="docutils literal notranslate"><span class="pre">CmdChannel.unmute_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.create_channel"><code class="docutils literal notranslate"><span class="pre">CmdChannel.create_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.destroy_channel"><code class="docutils literal notranslate"><span class="pre">CmdChannel.destroy_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.set_lock"><code class="docutils literal notranslate"><span class="pre">CmdChannel.set_lock()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.unset_lock"><code class="docutils literal notranslate"><span class="pre">CmdChannel.unset_lock()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.set_desc"><code class="docutils literal notranslate"><span class="pre">CmdChannel.set_desc()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.boot_user"><code class="docutils literal notranslate"><span class="pre">CmdChannel.boot_user()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.ban_user"><code class="docutils literal notranslate"><span class="pre">CmdChannel.ban_user()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.unban_user"><code class="docutils literal notranslate"><span class="pre">CmdChannel.unban_user()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.channel_list_bans"><code class="docutils literal notranslate"><span class="pre">CmdChannel.channel_list_bans()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.channel_list_who"><code class="docutils literal notranslate"><span class="pre">CmdChannel.channel_list_who()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.list_channels"><code class="docutils literal notranslate"><span class="pre">CmdChannel.list_channels()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.display_subbed_channels"><code class="docutils literal notranslate"><span class="pre">CmdChannel.display_subbed_channels()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.display_all_channels"><code class="docutils literal notranslate"><span class="pre">CmdChannel.display_all_channels()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.func"><code class="docutils literal notranslate"><span class="pre">CmdChannel.func()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.lock_storage"><code class="docutils literal notranslate"><span class="pre">CmdChannel.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdChannel.search_index_entry"><code class="docutils literal notranslate"><span class="pre">CmdChannel.search_index_entry</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdObjectChannel"><code class="docutils literal notranslate"><span class="pre">CmdObjectChannel</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdObjectChannel.account_caller"><code class="docutils literal notranslate"><span class="pre">CmdObjectChannel.account_caller</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdObjectChannel.aliases"><code class="docutils literal notranslate"><span class="pre">CmdObjectChannel.aliases</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdObjectChannel.help_category"><code class="docutils literal notranslate"><span class="pre">CmdObjectChannel.help_category</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdObjectChannel.key"><code class="docutils literal notranslate"><span class="pre">CmdObjectChannel.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdObjectChannel.lock_storage"><code class="docutils literal notranslate"><span class="pre">CmdObjectChannel.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdObjectChannel.search_index_entry"><code class="docutils literal notranslate"><span class="pre">CmdObjectChannel.search_index_entry</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage"><code class="docutils literal notranslate"><span class="pre">CmdPage</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.key"><code class="docutils literal notranslate"><span class="pre">CmdPage.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.aliases"><code class="docutils literal notranslate"><span class="pre">CmdPage.aliases</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.switch_options"><code class="docutils literal notranslate"><span class="pre">CmdPage.switch_options</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.locks"><code class="docutils literal notranslate"><span class="pre">CmdPage.locks</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.help_category"><code class="docutils literal notranslate"><span class="pre">CmdPage.help_category</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.account_caller"><code class="docutils literal notranslate"><span class="pre">CmdPage.account_caller</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.func"><code class="docutils literal notranslate"><span class="pre">CmdPage.func()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.lock_storage"><code class="docutils literal notranslate"><span class="pre">CmdPage.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdPage.search_index_entry"><code class="docutils literal notranslate"><span class="pre">CmdPage.search_index_entry</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan.key"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan.switch_options"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan.switch_options</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan.locks"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan.locks</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan.help_category"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan.help_category</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan.func"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan.func()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan.aliases"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan.aliases</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan.lock_storage"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRC2Chan.search_index_entry"><code class="docutils literal notranslate"><span class="pre">CmdIRC2Chan.search_index_entry</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRCStatus"><code class="docutils literal notranslate"><span class="pre">CmdIRCStatus</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRCStatus.key"><code class="docutils literal notranslate"><span class="pre">CmdIRCStatus.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRCStatus.locks"><code class="docutils literal notranslate"><span class="pre">CmdIRCStatus.locks</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRCStatus.help_category"><code class="docutils literal notranslate"><span class="pre">CmdIRCStatus.help_category</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRCStatus.func"><code class="docutils literal notranslate"><span class="pre">CmdIRCStatus.func()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRCStatus.aliases"><code class="docutils literal notranslate"><span class="pre">CmdIRCStatus.aliases</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRCStatus.lock_storage"><code class="docutils literal notranslate"><span class="pre">CmdIRCStatus.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdIRCStatus.search_index_entry"><code class="docutils literal notranslate"><span class="pre">CmdIRCStatus.search_index_entry</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan.key"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan.switch_options"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan.switch_options</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan.locks"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan.locks</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan.help_category"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan.help_category</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan.func"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan.func()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan.aliases"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan.aliases</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan.lock_storage"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdRSS2Chan.search_index_entry"><code class="docutils literal notranslate"><span class="pre">CmdRSS2Chan.search_index_entry</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan.key"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan.switch_options"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan.switch_options</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan.locks"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan.locks</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan.help_category"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan.help_category</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan.func"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan.func()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan.aliases"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan.aliases</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan.lock_storage"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdGrapevine2Chan.search_index_entry"><code class="docutils literal notranslate"><span class="pre">CmdGrapevine2Chan.search_index_entry</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan.key"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan.aliases"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan.aliases</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan.switch_options"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan.switch_options</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan.locks"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan.locks</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan.help_category"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan.help_category</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan.func"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan.func()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan.lock_storage"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CmdDiscord2Chan.search_index_entry"><code class="docutils literal notranslate"><span class="pre">CmdDiscord2Chan.search_index_entry</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB"><code class="docutils literal notranslate"><span class="pre">AccountDB</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.DoesNotExist"><code class="docutils literal notranslate"><span class="pre">AccountDB.DoesNotExist</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.MultipleObjectsReturned"><code class="docutils literal notranslate"><span class="pre">AccountDB.MultipleObjectsReturned</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.account_subscription_set"><code class="docutils literal notranslate"><span class="pre">AccountDB.account_subscription_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.cmdset_storage"><code class="docutils literal notranslate"><span class="pre">AccountDB.cmdset_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.date_joined"><code class="docutils literal notranslate"><span class="pre">AccountDB.date_joined</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_attributes"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_attributes</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_cmdset_storage"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_cmdset_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_date_created"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_date_created</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_is_bot"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_is_bot</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_is_connected"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_is_connected</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_key"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_lock_storage"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_tags"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_tags</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.db_typeclass_path"><code class="docutils literal notranslate"><span class="pre">AccountDB.db_typeclass_path</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.email"><code class="docutils literal notranslate"><span class="pre">AccountDB.email</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.first_name"><code class="docutils literal notranslate"><span class="pre">AccountDB.first_name</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.get_next_by_date_joined"><code class="docutils literal notranslate"><span class="pre">AccountDB.get_next_by_date_joined()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.get_next_by_db_date_created"><code class="docutils literal notranslate"><span class="pre">AccountDB.get_next_by_db_date_created()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.get_previous_by_date_joined"><code class="docutils literal notranslate"><span class="pre">AccountDB.get_previous_by_date_joined()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.get_previous_by_db_date_created"><code class="docutils literal notranslate"><span class="pre">AccountDB.get_previous_by_db_date_created()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.groups"><code class="docutils literal notranslate"><span class="pre">AccountDB.groups</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.hide_from_accounts_set"><code class="docutils literal notranslate"><span class="pre">AccountDB.hide_from_accounts_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.id"><code class="docutils literal notranslate"><span class="pre">AccountDB.id</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.is_active"><code class="docutils literal notranslate"><span class="pre">AccountDB.is_active</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.is_bot"><code class="docutils literal notranslate"><span class="pre">AccountDB.is_bot</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.is_connected"><code class="docutils literal notranslate"><span class="pre">AccountDB.is_connected</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.is_staff"><code class="docutils literal notranslate"><span class="pre">AccountDB.is_staff</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.is_superuser"><code class="docutils literal notranslate"><span class="pre">AccountDB.is_superuser</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.key"><code class="docutils literal notranslate"><span class="pre">AccountDB.key</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.last_login"><code class="docutils literal notranslate"><span class="pre">AccountDB.last_login</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.last_name"><code class="docutils literal notranslate"><span class="pre">AccountDB.last_name</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.logentry_set"><code class="docutils literal notranslate"><span class="pre">AccountDB.logentry_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.name"><code class="docutils literal notranslate"><span class="pre">AccountDB.name</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.objectdb_set"><code class="docutils literal notranslate"><span class="pre">AccountDB.objectdb_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.objects"><code class="docutils literal notranslate"><span class="pre">AccountDB.objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.password"><code class="docutils literal notranslate"><span class="pre">AccountDB.password</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.path"><code class="docutils literal notranslate"><span class="pre">AccountDB.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.receiver_account_set"><code class="docutils literal notranslate"><span class="pre">AccountDB.receiver_account_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.scriptdb_set"><code class="docutils literal notranslate"><span class="pre">AccountDB.scriptdb_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.sender_account_set"><code class="docutils literal notranslate"><span class="pre">AccountDB.sender_account_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.typename"><code class="docutils literal notranslate"><span class="pre">AccountDB.typename</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.uid"><code class="docutils literal notranslate"><span class="pre">AccountDB.uid</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.user_permissions"><code class="docutils literal notranslate"><span class="pre">AccountDB.user_permissions</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.AccountDB.username"><code class="docutils literal notranslate"><span class="pre">AccountDB.username</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.CHANNEL_DEFAULT_TYPECLASS"><code class="docutils literal notranslate"><span class="pre">CHANNEL_DEFAULT_TYPECLASS</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.COMMAND_DEFAULT_CLASS"><code class="docutils literal notranslate"><span class="pre">COMMAND_DEFAULT_CLASS</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel"><code class="docutils literal notranslate"><span class="pre">DefaultChannel</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.DoesNotExist"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.DoesNotExist</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.MultipleObjectsReturned"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.MultipleObjectsReturned</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.access"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.access()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.add_user_channel_alias"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.add_user_channel_alias()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.at_channel_creation"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.at_channel_creation()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.at_first_save"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.at_first_save()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.at_init"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.at_init()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.at_post_msg"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.at_post_msg()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.at_pre_msg"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.at_pre_msg()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.ban"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.ban()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.banlist"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.banlist</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.basetype_setup"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.basetype_setup()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.channel_msg_nick_pattern"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.channel_msg_nick_pattern</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.channel_msg_nick_replacement"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.channel_msg_nick_replacement</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.channel_prefix"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.channel_prefix()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.channel_prefix_string"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.channel_prefix_string</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.connect"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.connect()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.create"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.create()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.delete"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.delete()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.disconnect"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.disconnect()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.distribute_message"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.distribute_message()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.format_external"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.format_external()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.format_message"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.format_message()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.format_senders"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.format_senders()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.get_absolute_url"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.get_absolute_url()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.get_log_filename"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.get_log_filename()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.has_connection"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.has_connection()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.log_file"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.log_file</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.message_transform"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.message_transform()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.msg"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.msg()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.mute"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.mute()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.mutelist"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.mutelist</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.objects"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.path"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.pose_transform"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.pose_transform()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.post_join_channel"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.post_join_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.post_leave_channel"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.post_leave_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.post_send_message"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.post_send_message()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.pre_join_channel"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.pre_join_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.pre_leave_channel"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.pre_leave_channel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.pre_send_message"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.pre_send_message()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.remove_user_channel_alias"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.remove_user_channel_alias()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.send_to_online_only"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.send_to_online_only</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.set_log_filename"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.set_log_filename()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.typename"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.typename</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.unban"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.unban()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.unmute"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.unmute()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.web_get_admin_url"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.web_get_admin_url()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.web_get_create_url"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.web_get_create_url()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.web_get_delete_url"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.web_get_delete_url()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.web_get_detail_url"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.web_get_detail_url()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.web_get_update_url"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.web_get_update_url()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.DefaultChannel.wholist"><code class="docutils literal notranslate"><span class="pre">DefaultChannel.wholist</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.LockException"><code class="docutils literal notranslate"><span class="pre">LockException</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg"><code class="docutils literal notranslate"><span class="pre">Msg</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.DoesNotExist"><code class="docutils literal notranslate"><span class="pre">Msg.DoesNotExist</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.MultipleObjectsReturned"><code class="docutils literal notranslate"><span class="pre">Msg.MultipleObjectsReturned</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.access"><code class="docutils literal notranslate"><span class="pre">Msg.access()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.date_created"><code class="docutils literal notranslate"><span class="pre">Msg.date_created</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_date_created"><code class="docutils literal notranslate"><span class="pre">Msg.db_date_created</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_header"><code class="docutils literal notranslate"><span class="pre">Msg.db_header</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_hide_from_accounts"><code class="docutils literal notranslate"><span class="pre">Msg.db_hide_from_accounts</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_hide_from_objects"><code class="docutils literal notranslate"><span class="pre">Msg.db_hide_from_objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_lock_storage"><code class="docutils literal notranslate"><span class="pre">Msg.db_lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_message"><code class="docutils literal notranslate"><span class="pre">Msg.db_message</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_receiver_external"><code class="docutils literal notranslate"><span class="pre">Msg.db_receiver_external</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_receivers_accounts"><code class="docutils literal notranslate"><span class="pre">Msg.db_receivers_accounts</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_receivers_objects"><code class="docutils literal notranslate"><span class="pre">Msg.db_receivers_objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_receivers_scripts"><code class="docutils literal notranslate"><span class="pre">Msg.db_receivers_scripts</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_sender_accounts"><code class="docutils literal notranslate"><span class="pre">Msg.db_sender_accounts</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_sender_external"><code class="docutils literal notranslate"><span class="pre">Msg.db_sender_external</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_sender_objects"><code class="docutils literal notranslate"><span class="pre">Msg.db_sender_objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_sender_scripts"><code class="docutils literal notranslate"><span class="pre">Msg.db_sender_scripts</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.db_tags"><code class="docutils literal notranslate"><span class="pre">Msg.db_tags</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.get_next_by_db_date_created"><code class="docutils literal notranslate"><span class="pre">Msg.get_next_by_db_date_created()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.get_previous_by_db_date_created"><code class="docutils literal notranslate"><span class="pre">Msg.get_previous_by_db_date_created()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.header"><code class="docutils literal notranslate"><span class="pre">Msg.header</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.hide_from"><code class="docutils literal notranslate"><span class="pre">Msg.hide_from</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.id"><code class="docutils literal notranslate"><span class="pre">Msg.id</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.lock_storage"><code class="docutils literal notranslate"><span class="pre">Msg.lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.locks"><code class="docutils literal notranslate"><span class="pre">Msg.locks</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.message"><code class="docutils literal notranslate"><span class="pre">Msg.message</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.objects"><code class="docutils literal notranslate"><span class="pre">Msg.objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.path"><code class="docutils literal notranslate"><span class="pre">Msg.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.receiver_external"><code class="docutils literal notranslate"><span class="pre">Msg.receiver_external</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.receivers"><code class="docutils literal notranslate"><span class="pre">Msg.receivers</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.remove_receiver"><code class="docutils literal notranslate"><span class="pre">Msg.remove_receiver()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.remove_sender"><code class="docutils literal notranslate"><span class="pre">Msg.remove_sender()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.sender_external"><code class="docutils literal notranslate"><span class="pre">Msg.sender_external</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.senders"><code class="docutils literal notranslate"><span class="pre">Msg.senders</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.tags"><code class="docutils literal notranslate"><span class="pre">Msg.tags</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Msg.typename"><code class="docutils literal notranslate"><span class="pre">Msg.typename</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q"><code class="docutils literal notranslate"><span class="pre">Q</span></code></a><ul>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.AND"><code class="docutils literal notranslate"><span class="pre">Q.AND</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.OR"><code class="docutils literal notranslate"><span class="pre">Q.OR</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.XOR"><code class="docutils literal notranslate"><span class="pre">Q.XOR</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.__init__"><code class="docutils literal notranslate"><span class="pre">Q.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.check"><code class="docutils literal notranslate"><span class="pre">Q.check()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.conditional"><code class="docutils literal notranslate"><span class="pre">Q.conditional</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.connectors"><code class="docutils literal notranslate"><span class="pre">Q.connectors</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.deconstruct"><code class="docutils literal notranslate"><span class="pre">Q.deconstruct()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.default"><code class="docutils literal notranslate"><span class="pre">Q.default</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.flatten"><code class="docutils literal notranslate"><span class="pre">Q.flatten()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.identity"><code class="docutils literal notranslate"><span class="pre">Q.identity</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.referenced_base_fields"><code class="docutils literal notranslate"><span class="pre">Q.referenced_base_fields</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.replace_expressions"><code class="docutils literal notranslate"><span class="pre">Q.replace_expressions()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.Q.resolve_expression"><code class="docutils literal notranslate"><span class="pre">Q.resolve_expression()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.commands.default.comms.ask_yes_no"><code class="docutils literal notranslate"><span class="pre">ask_yes_no()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.class_from_module"><code class="docutils literal notranslate"><span class="pre">class_from_module()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.strip_unsafe_input"><code class="docutils literal notranslate"><span class="pre">strip_unsafe_input()</span></code></a></li>
<li><a class="reference internal" href="#evennia.commands.default.comms.tail_log_file"><code class="docutils literal notranslate"><span class="pre">tail_log_file()</span></code></a></li>
</ul>
</li>
</ul>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.commands.default.cmdset_unloggedin.html"
title="previous chapter">evennia.commands.default.cmdset_unloggedin</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.commands.default.general.html"
title="next chapter">evennia.commands.default.general</a></p>
</div>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.commands.default.comms.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li>
<a href="https://www.evennia.com/docs/latest/index.html">latest (main branch)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/6.x/index.html">v6.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/5.x/index.html">v5.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/4.x/index.html">v4.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/3.x/index.html">v3.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/2.x/index.html">v2.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/1.x/index.html">v1.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/0.x/index.html">v0.9.5 branch (outdated)</a>
</li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.commands.default.general.html" title="evennia.commands.default.general"
>next</a> |</li>
<li class="right" >
<a href="evennia.commands.default.cmdset_unloggedin.html" title="evennia.commands.default.cmdset_unloggedin"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.commands.html" >evennia.commands</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.commands.default.html" >evennia.commands.default</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.commands.default.comms</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2024, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>