evennia/docs/versions/1.0-dev/api/evennia.comms.html
2020-06-13 00:15:39 +02:00

2408 lines
No EOL
163 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 xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>evennia.comms package &#8212; Evennia 1.0-dev documentation</title>
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-evennia.comms">
<span id="evennia-comms-package"></span><h1>evennia.comms package<a class="headerlink" href="#module-evennia.comms" title="Permalink to this headline"></a></h1>
<p>This sub-package contains Evennias comms-system, a set of models and
handlers for in-game communication via channels and messages as well
as code related to external communication like IRC or RSS.</p>
<div class="section" id="subpackages">
<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
</div>
</div>
<div class="section" id="submodules">
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline"></a></h2>
</div>
<div class="section" id="module-evennia.comms.admin">
<span id="evennia-comms-admin-module"></span><h2>evennia.comms.admin module<a class="headerlink" href="#module-evennia.comms.admin" title="Permalink to this headline"></a></h2>
<p>This defines how Comm models are displayed in the web admin interface.</p>
<dl class="class">
<dt id="evennia.comms.admin.ChannelAdmin">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.admin.</code><code class="sig-name descname">ChannelAdmin</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/admin.html#ChannelAdmin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.contrib.admin.options.ModelAdmin</span></code></p>
<p>Defines display for Channel objects</p>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.fieldsets">
<code class="sig-name descname">fieldsets</code><em class="property"> = ((None, {'fields': (('db_key',), 'db_lock_storage', 'db_account_subscriptions', 'db_object_subscriptions')}),)</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.fieldsets" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.inlines">
<code class="sig-name descname">inlines</code><em class="property"> = [&lt;class 'evennia.comms.admin.ChannelTagInline'&gt;, &lt;class 'evennia.comms.admin.ChannelAttributeInline'&gt;]</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.inlines" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.list_display">
<code class="sig-name descname">list_display</code><em class="property"> = ('id', 'db_key', 'db_lock_storage', 'subscriptions')</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.list_display" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.list_display_links">
<code class="sig-name descname">list_display_links</code><em class="property"> = ('id', 'db_key')</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.list_display_links" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.list_select_related">
<code class="sig-name descname">list_select_related</code><em class="property"> = True</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.list_select_related" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.admin.ChannelAdmin.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.ordering">
<code class="sig-name descname">ordering</code><em class="property"> = ['db_key']</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.ordering" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.raw_id_fields">
<code class="sig-name descname">raw_id_fields</code><em class="property"> = ('db_object_subscriptions', 'db_account_subscriptions')</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.raw_id_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.admin.ChannelAdmin.response_add">
<code class="sig-name descname">response_add</code><span class="sig-paren">(</span><em class="sig-param">request</em>, <em class="sig-param">obj</em>, <em class="sig-param">post_url_continue=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/admin.html#ChannelAdmin.response_add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.response_add" title="Permalink to this definition"></a></dt>
<dd><p>Determine the HttpResponse for the add_view stage.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.save_as">
<code class="sig-name descname">save_as</code><em class="property"> = True</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.save_as" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.admin.ChannelAdmin.save_model">
<code class="sig-name descname">save_model</code><span class="sig-paren">(</span><em class="sig-param">request</em>, <em class="sig-param">obj</em>, <em class="sig-param">form</em>, <em class="sig-param">change</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/admin.html#ChannelAdmin.save_model"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.save_model" title="Permalink to this definition"></a></dt>
<dd><p>Model-save hook.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>Request</em>) Incoming request.</p></li>
<li><p><strong>obj</strong> (<em>Object</em>) Database object.</p></li>
<li><p><strong>form</strong> (<em>Form</em>) Form instance.</p></li>
<li><p><strong>change</strong> (<em>bool</em>) If this is a change or a new object.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.save_on_top">
<code class="sig-name descname">save_on_top</code><em class="property"> = True</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.save_on_top" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAdmin.search_fields">
<code class="sig-name descname">search_fields</code><em class="property"> = ['id', 'db_key', 'db_tags__db_key']</em><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.search_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.admin.ChannelAdmin.subscriptions">
<code class="sig-name descname">subscriptions</code><span class="sig-paren">(</span><em class="sig-param">obj</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/admin.html#ChannelAdmin.subscriptions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.admin.ChannelAdmin.subscriptions" title="Permalink to this definition"></a></dt>
<dd><p>Helper method to get subs from a channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>obj</strong> (<em>Channel</em>) The channel to get subs from.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.comms.admin.ChannelAttributeInline">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.admin.</code><code class="sig-name descname">ChannelAttributeInline</code><span class="sig-paren">(</span><em class="sig-param">parent_model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/admin.html#ChannelAttributeInline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.admin.ChannelAttributeInline" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.admin.AttributeInline" title="evennia.typeclasses.admin.AttributeInline"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.admin.AttributeInline</span></code></a></p>
<p>Inline display of Channel Attribute - experimental</p>
<dl class="method">
<dt id="evennia.comms.admin.ChannelAttributeInline.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.comms.admin.ChannelAttributeInline.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAttributeInline.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.comms.admin.ChannelAttributeInline.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.models.ChannelDB_db_attributes</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelAttributeInline.related_field">
<code class="sig-name descname">related_field</code><em class="property"> = 'channeldb'</em><a class="headerlink" href="#evennia.comms.admin.ChannelAttributeInline.related_field" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.comms.admin.ChannelTagInline">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.admin.</code><code class="sig-name descname">ChannelTagInline</code><span class="sig-paren">(</span><em class="sig-param">parent_model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/admin.html#ChannelTagInline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.admin.ChannelTagInline" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.admin.TagInline" title="evennia.typeclasses.admin.TagInline"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.admin.TagInline</span></code></a></p>
<p>Inline display of Channel Tags - experimental</p>
<dl class="method">
<dt id="evennia.comms.admin.ChannelTagInline.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.comms.admin.ChannelTagInline.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelTagInline.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.comms.admin.ChannelTagInline.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.models.ChannelDB_db_tags</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.ChannelTagInline.related_field">
<code class="sig-name descname">related_field</code><em class="property"> = 'channeldb'</em><a class="headerlink" href="#evennia.comms.admin.ChannelTagInline.related_field" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.comms.admin.MsgAdmin">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.admin.</code><code class="sig-name descname">MsgAdmin</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/admin.html#MsgAdmin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.admin.MsgAdmin" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.contrib.admin.options.ModelAdmin</span></code></p>
<p>Defines display for Msg objects</p>
<dl class="attribute">
<dt id="evennia.comms.admin.MsgAdmin.list_display">
<code class="sig-name descname">list_display</code><em class="property"> = ('id', 'db_date_created', 'db_sender', 'db_receivers', 'db_channels', 'db_message', 'db_lock_storage')</em><a class="headerlink" href="#evennia.comms.admin.MsgAdmin.list_display" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.MsgAdmin.list_display_links">
<code class="sig-name descname">list_display_links</code><em class="property"> = ('id',)</em><a class="headerlink" href="#evennia.comms.admin.MsgAdmin.list_display_links" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.MsgAdmin.list_select_related">
<code class="sig-name descname">list_select_related</code><em class="property"> = True</em><a class="headerlink" href="#evennia.comms.admin.MsgAdmin.list_select_related" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.admin.MsgAdmin.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.comms.admin.MsgAdmin.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.MsgAdmin.ordering">
<code class="sig-name descname">ordering</code><em class="property"> = ['db_date_created', 'db_sender', 'db_receivers', 'db_channels']</em><a class="headerlink" href="#evennia.comms.admin.MsgAdmin.ordering" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.MsgAdmin.save_as">
<code class="sig-name descname">save_as</code><em class="property"> = True</em><a class="headerlink" href="#evennia.comms.admin.MsgAdmin.save_as" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.MsgAdmin.save_on_top">
<code class="sig-name descname">save_on_top</code><em class="property"> = True</em><a class="headerlink" href="#evennia.comms.admin.MsgAdmin.save_on_top" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.admin.MsgAdmin.search_fields">
<code class="sig-name descname">search_fields</code><em class="property"> = ['id', '^db_date_created', '^db_message']</em><a class="headerlink" href="#evennia.comms.admin.MsgAdmin.search_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.comms.channelhandler">
<span id="evennia-comms-channelhandler-module"></span><h2>evennia.comms.channelhandler module<a class="headerlink" href="#module-evennia.comms.channelhandler" title="Permalink to this headline"></a></h2>
<p>The channel handler, accessed from this module as CHANNEL_HANDLER is a
singleton that handles the stored set of channels and how they are
represented against the cmdhandler.</p>
<p>If there is a channel named newbie, we want to be able to just write</p>
<blockquote>
<div><p>newbie Hello!</p>
</div></blockquote>
<p>For this to work, newbie, the name of the channel, must be
identified by the cmdhandler as a command name. The channelhandler
stores all channels as custom commands that the cmdhandler can
import and look through.</p>
<p>&gt; Warning - channel names take precedence over command names, so make
sure to not pick clashing channel names.</p>
<p>Unless deleting a channel you normally dont need to bother about the
channelhandler at all - the create_channel method handles the update.</p>
<p>To delete a channel cleanly, delete the channel object, then call
update() on the channelhandler. Or use Channel.objects.delete() which
does this for you.</p>
<dl class="class">
<dt id="evennia.comms.channelhandler.ChannelCommand">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.channelhandler.</code><code class="sig-name descname">ChannelCommand</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelCommand"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.html#evennia.commands.command.Command" title="evennia.commands.command.Command"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.commands.command.Command</span></code></a></p>
<p>{channelkey} channel</p>
<p>{channeldesc}</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>{lower_channelkey} &lt;message&gt;
{lower_channelkey}/history [start]
{lower_channelkey} off - mutes the channel
{lower_channelkey} on - unmutes the channel</p>
</dd>
<dt>Switch:</dt><dd><dl class="simple">
<dt>history: View 20 previous messages, either from the end or</dt><dd><p>from &lt;start&gt; number of messages from the end.</p>
</dd>
</dl>
</dd>
</dl>
<p class="rubric">Example</p>
<p>{lower_channelkey} Hello World!
{lower_channelkey}/history
{lower_channelkey}/history 30</p>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand._keyaliases">
<code class="sig-name descname">_keyaliases</code><em class="property"> = ('general',)</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand._keyaliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand._matchset">
<code class="sig-name descname">_matchset</code><em class="property"> = {'general'}</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand._matchset" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = []</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand.arg_regex">
<code class="sig-name descname">arg_regex</code><em class="property"> = re.compile('\\s.*?|/history.*?', re.IGNORECASE)</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.arg_regex" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelCommand.func">
<code class="sig-name descname">func</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelCommand.func"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.func" title="Permalink to this definition"></a></dt>
<dd><p>Create a new message and send it to channel, using
the already formatted input.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelCommand.get_extra_info">
<code class="sig-name descname">get_extra_info</code><span class="sig-paren">(</span><em class="sig-param">caller</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelCommand.get_extra_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.get_extra_info" title="Permalink to this definition"></a></dt>
<dd><p>Let users know that this command is for communicating on a channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>caller</strong> (<a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.models.TypedObject" title="evennia.typeclasses.models.TypedObject"><em>TypedObject</em></a>) A Character or Account who has entered an ambiguous command.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A string with identifying information to disambiguate the object, conventionally with a preceding space.</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand.help_category">
<code class="sig-name descname">help_category</code><em class="property"> = 'channel names'</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.help_category" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand.is_channel">
<code class="sig-name descname">is_channel</code><em class="property"> = True</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.is_channel" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand.key">
<code class="sig-name descname">key</code><em class="property"> = 'general'</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand.lock_storage">
<code class="sig-name descname">lock_storage</code><em class="property"> = 'cmd:all();'</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.lock_storage" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand.obj">
<code class="sig-name descname">obj</code><em class="property"> = None</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.obj" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelCommand.parse">
<code class="sig-name descname">parse</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelCommand.parse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.parse" title="Permalink to this definition"></a></dt>
<dd><p>Simple parser</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.channelhandler.ChannelCommand.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '', 'category': 'channel names', 'key': 'general', 'tags': '', 'text': '\n {channelkey} channel\n\n {channeldesc}\n\n Usage:\n {lower_channelkey} &lt;message&gt;\n {lower_channelkey}/history [start]\n {lower_channelkey} off - mutes the channel\n {lower_channelkey} on - unmutes the channel\n\n Switch:\n history: View 20 previous messages, either from the end or\n from &lt;start&gt; number of messages from the end.\n\n Example:\n {lower_channelkey} Hello World!\n {lower_channelkey}/history\n {lower_channelkey}/history 30\n\n '}</em><a class="headerlink" href="#evennia.comms.channelhandler.ChannelCommand.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.comms.channelhandler.ChannelHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.channelhandler.</code><code class="sig-name descname">ChannelHandler</code><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>The ChannelHandler manages all active in-game channels and
dynamically creates channel commands for users so that they can
just give the channels key or alias to write to it. Whenever a
new channel is created in the database, the update() method on
this handler must be called to sync it with the database (this is
done automatically if creating the channel with
evennia.create_channel())</p>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelHandler.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelHandler.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initializes the channel handlers internal state.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelHandler.add">
<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param">channel</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler.add" title="Permalink to this definition"></a></dt>
<dd><p>Add an individual channel to the handler. This is called
whenever a new channel is created.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to add.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>To remove a channel, simply delete the channel object and
run self.update on the handler. This should usually be
handled automatically by one of the deletion methos of
the Channel itself.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelHandler.add_channel">
<code class="sig-name descname">add_channel</code><span class="sig-paren">(</span><em class="sig-param">channel</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler.add_channel" title="Permalink to this definition"></a></dt>
<dd><p>Add an individual channel to the handler. This is called
whenever a new channel is created.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to add.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>To remove a channel, simply delete the channel object and
run self.update on the handler. This should usually be
handled automatically by one of the deletion methos of
the Channel itself.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelHandler.clear">
<code class="sig-name descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelHandler.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler.clear" title="Permalink to this definition"></a></dt>
<dd><p>Reset the cache storage.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelHandler.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param">channelname=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelHandler.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler.get" title="Permalink to this definition"></a></dt>
<dd><p>Get a channel from the handler, or all channels</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>channelame</strong> (<em>str</em><em>, </em><em>optional</em>) Channel key, case insensitive.</p>
</dd>
</dl>
<dl class="simple">
<dt>Returns</dt><dd><dl class="simple">
<dt>channels (list): The matching channels in a list, or all</dt><dd><p>channels in the handler.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelHandler.get_cmdset">
<code class="sig-name descname">get_cmdset</code><span class="sig-paren">(</span><em class="sig-param">source_object</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelHandler.get_cmdset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler.get_cmdset" title="Permalink to this definition"></a></dt>
<dd><p>Retrieve cmdset for channels this source_object has
access to send to.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>source_object</strong> (<em>Object</em>) An object subscribing to one
or more channels.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>The Channel-Cmdsets <cite>source_object</cite> has</dt><dd><p>access to.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>cmdsets (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelHandler.remove">
<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param">channel</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelHandler.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler.remove" title="Permalink to this definition"></a></dt>
<dd><p>Remove channel from channelhandler. This will also delete it.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) Channel to remove/delete.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.channelhandler.ChannelHandler.update">
<code class="sig-name descname">update</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/channelhandler.html#ChannelHandler.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.channelhandler.ChannelHandler.update" title="Permalink to this definition"></a></dt>
<dd><p>Updates the handler completely, including removing old removed
Channel objects. This must be called after deleting a Channel.</p>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.comms.comms">
<span id="evennia-comms-comms-module"></span><h2>evennia.comms.comms module<a class="headerlink" href="#module-evennia.comms.comms" title="Permalink to this headline"></a></h2>
<p>Base typeclass for in-game Channels.</p>
<dl class="class">
<dt id="evennia.comms.comms.DefaultChannel">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.comms.</code><code class="sig-name descname">DefaultChannel</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.comms.models.ChannelDB" title="evennia.comms.models.ChannelDB"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.models.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>
<dl class="exception">
<dt id="evennia.comms.comms.DefaultChannel.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.models.DoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.comms.comms.DefaultChannel.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.models.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.comms.DefaultChannel._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for DefaultChannel&gt;</em><a class="headerlink" href="#evennia.comms.comms.DefaultChannel._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.access">
<code class="sig-name descname">access</code><span class="sig-paren">(</span><em class="sig-param">accessing_obj</em>, <em class="sig-param">access_type='listen'</em>, <em class="sig-param">default=False</em>, <em class="sig-param">no_superuser_bypass=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.access"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.access" title="Permalink 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</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</dt>
<dd class="field-even"><p>Result of lock check.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>return (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.at_channel_creation">
<code class="sig-name descname">at_channel_creation</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.at_channel_creation" title="Permalink to this definition"></a></dt>
<dd><p>Called once, when the channel is first created.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.at_first_save">
<code class="sig-name descname">at_first_save</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.at_first_save" title="Permalink 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="method">
<dt id="evennia.comms.comms.DefaultChannel.at_init">
<code class="sig-name descname">at_init</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.at_init" title="Permalink 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="method">
<dt id="evennia.comms.comms.DefaultChannel.basetype_setup">
<code class="sig-name descname">basetype_setup</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.basetype_setup" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.channel_prefix">
<code class="sig-name descname">channel_prefix</code><span class="sig-paren">(</span><em class="sig-param">msg=None</em>, <em class="sig-param">emit=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.channel_prefix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.channel_prefix" title="Permalink 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">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msg</strong> (<em>str</em><em>, </em><em>optional</em>) Prefix text</p></li>
<li><p><strong>emit</strong> (<em>bool</em><em>, </em><em>optional</em>) Switches to emit mode, which usually
means to not prefix the channels info.</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</dt>
<dd class="field-even"><p>The created channel prefix.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>prefix (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.connect">
<code class="sig-name descname">connect</code><span class="sig-paren">(</span><em class="sig-param">subscriber</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.connect" title="Permalink 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</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</dt>
<dd class="field-even"><p><dl class="simple">
<dt>Whether or not the addition was</dt><dd><p>successful.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>success (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.create">
<em class="property">classmethod </em><code class="sig-name descname">create</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">account=None</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.create" title="Permalink 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</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>account</strong> (<em>Account</em>) Account to attribute this object to.</p></li>
</ul>
</dd>
</dl>
<dl>
<dt>Kwargs:</dt><dd><p>aliases (list of str): List of alternative (likely shorter) keynames.
description (str): A description of the channel, for use in listings.
locks (str): Lockstring.
keep_log (bool): Log channel throughput.
typeclass (str or class): The typeclass of the Channel (not</p>
<blockquote>
<div><p>often used).</p>
</div></blockquote>
<p>ip (str): IP address of creator (for object auditing).</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>A newly created Channel.
errors (list): A list of errors in string form, if any.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>channel (Channel)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.delete">
<code class="sig-name descname">delete</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.delete" title="Permalink to this definition"></a></dt>
<dd><p>Deletes channel while also cleaning up channelhandler.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.disconnect">
<code class="sig-name descname">disconnect</code><span class="sig-paren">(</span><em class="sig-param">subscriber</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.disconnect" title="Permalink to this definition"></a></dt>
<dd><p>Disconnect entity from this channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>subscriber</strong> (<em>Account of 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</dt>
<dd class="field-even"><p><dl class="simple">
<dt>Whether or not the removal was</dt><dd><p>successful.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>success (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.distribute_message">
<code class="sig-name descname">distribute_message</code><span class="sig-paren">(</span><em class="sig-param">msgobj</em>, <em class="sig-param">online=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.distribute_message"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.distribute_message" title="Permalink to this definition"></a></dt>
<dd><p>Method for grabbing all listeners that a message should be
sent to on this channel, and sending them a message.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msgobj</strong> (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="#evennia.comms.models.TempMsg" title="evennia.comms.models.TempMsg"><em>TempMsg</em></a>) Message to distribute.</p></li>
<li><p><strong>online</strong> (<em>bool</em>) Only send to receivers who are actually online
(not currently used):</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>This is also where logging happens, if enabled.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.format_external">
<code class="sig-name descname">format_external</code><span class="sig-paren">(</span><em class="sig-param">msgobj</em>, <em class="sig-param">senders</em>, <em class="sig-param">emit=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.format_external"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.format_external" title="Permalink to this definition"></a></dt>
<dd><p>Hook method. Used for formatting external messages. This is
needed as a separate operation because the senders of external
messages may not be in-game objects/accounts, and so cannot
have things like custom user preferences.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msgobj</strong> (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="#evennia.comms.models.TempMsg" title="evennia.comms.models.TempMsg"><em>TempMsg</em></a>) The message to send.</p></li>
<li><p><strong>senders</strong> (<em>list</em>) Strings, one per sender.</p></li>
<li><p><strong>emit</strong> (<em>bool</em><em>, </em><em>optional</em>) A sender-agnostic message or not.</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</dt>
<dd class="field-even"><p>A formatted string.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>transformed (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.format_message">
<code class="sig-name descname">format_message</code><span class="sig-paren">(</span><em class="sig-param">msgobj</em>, <em class="sig-param">emit=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.format_message"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.format_message" title="Permalink to this definition"></a></dt>
<dd><p>Hook method. Formats a message body for display.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msgobj</strong> (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="#evennia.comms.models.TempMsg" title="evennia.comms.models.TempMsg"><em>TempMsg</em></a>) The message object to send.</p></li>
<li><p><strong>emit</strong> (<em>bool</em><em>, </em><em>optional</em>) The message is agnostic of senders.</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</dt>
<dd class="field-even"><p>The formatted message.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>transformed (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.format_senders">
<code class="sig-name descname">format_senders</code><span class="sig-paren">(</span><em class="sig-param">senders=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.format_senders"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.format_senders" title="Permalink to this definition"></a></dt>
<dd><p>Hook method. Function used to format a list of sender names.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>senders</strong> (<em>list</em>) Sender object names.</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</dt>
<dd class="field-even"><p>The list of names formatted appropriately.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>formatted_list (str)</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This function exists separately so that external sources
can use it to format source names in the same manner as
normal object/account names.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.get_absolute_url">
<code class="sig-name descname">get_absolute_url</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.get_absolute_url" title="Permalink 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.
url(rchannels/(?P&lt;slug&gt;[wd-]+)/$,</p>
<blockquote>
<div><p>ChannelDetailView.as_view(), name=channel-detail)</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 view this object is the developers
responsibility.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>URI path to object detail page, if defined.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>path (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.has_connection">
<code class="sig-name descname">has_connection</code><span class="sig-paren">(</span><em class="sig-param">subscriber</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.has_connection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.has_connection" title="Permalink 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</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</dt>
<dd class="field-even"><p><dl class="simple">
<dt>Whether the subscriber is subscribing to</dt><dd><p>this channel or not.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>has_sub (bool)</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="method">
<dt id="evennia.comms.comms.DefaultChannel.message_transform">
<code class="sig-name descname">message_transform</code><span class="sig-paren">(</span><em class="sig-param">msgobj</em>, <em class="sig-param">emit=False</em>, <em class="sig-param">prefix=True</em>, <em class="sig-param">sender_strings=None</em>, <em class="sig-param">external=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.message_transform"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.message_transform" title="Permalink to this definition"></a></dt>
<dd><p>Generates the formatted string sent to listeners on a channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msgobj</strong> (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a>) Message object to send.</p></li>
<li><p><strong>emit</strong> (<em>bool</em><em>, </em><em>optional</em>) In emit mode the message is not associated
with a specific sender name.</p></li>
<li><p><strong>prefix</strong> (<em>bool</em><em>, </em><em>optional</em>) Prefix <cite>msg</cite> with a text given by <cite>self.channel_prefix</cite>.</p></li>
<li><p><strong>sender_strings</strong> (<em>list</em><em>, </em><em>optional</em>) Used by bots etc, one string per external sender.</p></li>
<li><p><strong>external</strong> (<em>bool</em><em>, </em><em>optional</em>) If this is an external sender or not.</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="method">
<dt id="evennia.comms.comms.DefaultChannel.msg">
<code class="sig-name descname">msg</code><span class="sig-paren">(</span><em class="sig-param">msgobj</em>, <em class="sig-param">header=None</em>, <em class="sig-param">senders=None</em>, <em class="sig-param">sender_strings=None</em>, <em class="sig-param">keep_log=None</em>, <em class="sig-param">online=False</em>, <em class="sig-param">emit=False</em>, <em class="sig-param">external=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.msg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.msg" title="Permalink to this definition"></a></dt>
<dd><p>Send the given message to all accounts connected to channel. Note that
no permission-checking is done here; it is assumed to have been
done before calling this method. The optional keywords are not used if
persistent is False.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msgobj</strong> (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em>, </em><a class="reference internal" href="#evennia.comms.models.TempMsg" title="evennia.comms.models.TempMsg"><em>TempMsg</em></a><em> or </em><em>str</em>) If a Msg/TempMsg, the remaining
keywords will be ignored (since the Msg/TempMsg object already
has all the data). If a string, this will either be sent as-is
(if persistent=False) or it will be used together with <cite>header</cite>
and <cite>senders</cite> keywords to create a Msg instance on the fly.</p></li>
<li><p><strong>header</strong> (<em>str</em><em>, </em><em>optional</em>) A header for building the message.</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>) Optional if persistent=False, used
to build senders for the message.</p></li>
<li><p><strong>sender_strings</strong> (<em>list</em><em>, </em><em>optional</em>) Name strings of senders. Used for external
connections where the sender is not an account or object.
When this is defined, external will be assumed.</p></li>
<li><p><strong>keep_log</strong> (<em>bool</em><em> or </em><em>None</em><em>, </em><em>optional</em>) This allows to temporarily change the logging status of
this channel message. If <cite>None</cite>, the Channels <cite>keep_log</cite> Attribute will
be used. If <cite>True</cite> or <cite>False</cite>, that logging status will be used for this
message only (note that for unlogged channels, a <cite>True</cite> value here will
create a new log file only for this message).</p></li>
<li><p><strong>online</strong> (<em>bool</em><em>, </em><em>optional</em>) online. Otherwise, messages all accounts connected. This can
make things faster, but may not trigger listeners on accounts
that are offline.</p></li>
<li><p><strong>emit</strong> (<em>bool</em><em>, </em><em>optional</em>) not to be directly associated with a name.</p></li>
<li><p><strong>external</strong> (<em>bool</em><em>, </em><em>optional</em>) Treat this message as being
agnostic of its sender.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>Returns <cite>True</cite> if message sending was</dt><dd><p>successful, <cite>False</cite> otherwise.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>success (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.mute">
<code class="sig-name descname">mute</code><span class="sig-paren">(</span><em class="sig-param">subscriber</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.mute"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.mute" title="Permalink 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</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>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.mutelist">
<em class="property">property </em><code class="sig-name descname">mutelist</code><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.mutelist" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.comms.DefaultChannel.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;evennia.comms.managers.ChannelManager object&gt;</em><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.comms.DefaultChannel.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.comms.comms.DefaultChannel'</em><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.pose_transform">
<code class="sig-name descname">pose_transform</code><span class="sig-paren">(</span><em class="sig-param">msgobj</em>, <em class="sig-param">sender_string</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pose_transform"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.pose_transform" title="Permalink to this definition"></a></dt>
<dd><p>Hook method. Detects if the sender is posing, and modifies the
message accordingly.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msgobj</strong> (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="#evennia.comms.models.TempMsg" title="evennia.comms.models.TempMsg"><em>TempMsg</em></a>) The message to analyze for a pose.</p></li>
<li><p><strong>sender_string</strong> (<em>str</em>) The name of the sender/poser.</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</dt>
<dd class="field-even"><p><dl class="simple">
<dt>A message that combines the <cite>sender_string</cite></dt><dd><p>component with <cite>msg</cite> in different ways depending on if a
pose was performed or not (this must be analyzed by the
hook).</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>string (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.post_join_channel">
<code class="sig-name descname">post_join_channel</code><span class="sig-paren">(</span><em class="sig-param">joiner</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_join_channel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.post_join_channel" title="Permalink 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</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>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.post_leave_channel">
<code class="sig-name descname">post_leave_channel</code><span class="sig-paren">(</span><em class="sig-param">leaver</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_leave_channel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.post_leave_channel" title="Permalink 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</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="method">
<dt id="evennia.comms.comms.DefaultChannel.post_send_message">
<code class="sig-name descname">post_send_message</code><span class="sig-paren">(</span><em class="sig-param">msg</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_send_message"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.post_send_message" title="Permalink to this definition"></a></dt>
<dd><p>Hook method. Run after a message is sent to the channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msg</strong> (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="#evennia.comms.models.TempMsg" title="evennia.comms.models.TempMsg"><em>TempMsg</em></a>) Message sent.</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="method">
<dt id="evennia.comms.comms.DefaultChannel.pre_join_channel">
<code class="sig-name descname">pre_join_channel</code><span class="sig-paren">(</span><em class="sig-param">joiner</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_join_channel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.pre_join_channel" title="Permalink 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</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</dt>
<dd class="field-even"><p>If <cite>False</cite>, channel joining is aborted.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>should_join (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.pre_leave_channel">
<code class="sig-name descname">pre_leave_channel</code><span class="sig-paren">(</span><em class="sig-param">leaver</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_leave_channel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.pre_leave_channel" title="Permalink 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</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</dt>
<dd class="field-even"><p>If <cite>False</cite>, channel parting is aborted.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>should_leave (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.pre_send_message">
<code class="sig-name descname">pre_send_message</code><span class="sig-paren">(</span><em class="sig-param">msg</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_send_message"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.pre_send_message" title="Permalink to this definition"></a></dt>
<dd><p>Hook method. Runs before a message is sent to the channel and
should return the message object, after any transformations.
If the message is to be discarded, return a false value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>msg</strong> (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="#evennia.comms.models.TempMsg" title="evennia.comms.models.TempMsg"><em>TempMsg</em></a>) Message to send.</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</dt>
<dd class="field-even"><p>If False, abort send.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>result (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg">Msg</a>, <a class="reference internal" href="#evennia.comms.models.TempMsg" title="evennia.comms.models.TempMsg">TempMsg</a> or bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.tempmsg">
<code class="sig-name descname">tempmsg</code><span class="sig-paren">(</span><em class="sig-param">message</em>, <em class="sig-param">header=None</em>, <em class="sig-param">senders=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.tempmsg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.tempmsg" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for sending non-persistent messages.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>message</strong> (<em>str</em>) Message to send.</p></li>
<li><p><strong>header</strong> (<em>str</em><em>, </em><em>optional</em>) Header of message to send.</p></li>
<li><p><strong>senders</strong> (<em>Object</em><em> or </em><em>list</em><em>, </em><em>optional</em>) Senders of message to send.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.comms.DefaultChannel.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'DefaultChannel'</em><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.unmute">
<code class="sig-name descname">unmute</code><span class="sig-paren">(</span><em class="sig-param">subscriber</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.unmute"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.unmute" title="Permalink to this definition"></a></dt>
<dd><p>Removes 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</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>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.web_get_admin_url">
<code class="sig-name descname">web_get_admin_url</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.web_get_admin_url" title="Permalink 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</dt>
<dd class="field-odd"><p>URI path to Django Admin page for object.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>path (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.web_get_create_url">
<em class="property">classmethod </em><code class="sig-name descname">web_get_create_url</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.web_get_create_url" title="Permalink 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</dt>
<dd class="field-odd"><p>URI path to object creation page, if defined.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>path (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.web_get_delete_url">
<code class="sig-name descname">web_get_delete_url</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.web_get_delete_url" title="Permalink 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</dt>
<dd class="field-odd"><p>URI path to object deletion page, if defined.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>path (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.web_get_detail_url">
<code class="sig-name descname">web_get_detail_url</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.web_get_detail_url" title="Permalink 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.
url(rchannels/(?P&lt;slug&gt;[wd-]+)/$,</p>
<blockquote>
<div><p>ChannelDetailView.as_view(), name=channel-detail)</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 view this object is the developers
responsibility.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>URI path to object detail page, if defined.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>path (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.web_get_update_url">
<code class="sig-name descname">web_get_update_url</code><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">[source]</span></a><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.web_get_update_url" title="Permalink 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.
url(rchannels/(?P&lt;slug&gt;[wd-]+)/(?P&lt;pk&gt;[0-9]+)/change/$,</p>
<blockquote>
<div><p>ChannelUpdateView.as_view(), name=channel-update)</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 modify objects is the developers
responsibility.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>URI path to object update page, if defined.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>path (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.comms.DefaultChannel.wholist">
<em class="property">property </em><code class="sig-name descname">wholist</code><a class="headerlink" href="#evennia.comms.comms.DefaultChannel.wholist" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.comms.managers">
<span id="evennia-comms-managers-module"></span><h2>evennia.comms.managers module<a class="headerlink" href="#module-evennia.comms.managers" title="Permalink to this headline"></a></h2>
<p>These managers define helper methods for accessing the database from
Comm system components.</p>
<dl class="class">
<dt id="evennia.comms.managers.ChannelDBManager">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.managers.</code><code class="sig-name descname">ChannelDBManager</code><a class="reference internal" href="../_modules/evennia/comms/managers.html#ChannelDBManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.ChannelDBManager" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.managers.TypedObjectManager" title="evennia.typeclasses.managers.TypedObjectManager"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.managers.TypedObjectManager</span></code></a></p>
<p>This ChannelManager implements methods for searching and
manipulating Channels directly from the database.</p>
<p>These methods will all return database objects (or QuerySets)
directly.</p>
<p>A Channel is an in-game venue for communication. Its essentially
representation of a re-sender: Users sends Messages to the
Channel, and the Channel re-sends those messages to all users
subscribed to the Channel.</p>
<dl class="method">
<dt id="evennia.comms.managers.ChannelDBManager.channel_search">
<code class="sig-name descname">channel_search</code><span class="sig-paren">(</span><em class="sig-param">ostring</em>, <em class="sig-param">exact=True</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.managers.ChannelDBManager.channel_search" title="Permalink to this definition"></a></dt>
<dd><p>Search the channel database for a particular channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ostring</strong> (<em>str</em>) The key or database id of the channel.</p></li>
<li><p><strong>exact</strong> (<em>bool</em><em>, </em><em>optional</em>) Require an exact (but not
case sensitive) match.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.ChannelDBManager.get_all_channels">
<code class="sig-name descname">get_all_channels</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#ChannelDBManager.get_all_channels"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.ChannelDBManager.get_all_channels" title="Permalink to this definition"></a></dt>
<dd><p>Get all channels.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>All channels in game.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>channels (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.ChannelDBManager.get_channel">
<code class="sig-name descname">get_channel</code><span class="sig-paren">(</span><em class="sig-param">channelkey</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#ChannelDBManager.get_channel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.ChannelDBManager.get_channel" title="Permalink to this definition"></a></dt>
<dd><p>Return the channel object if given its key.
Also searches its aliases.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>channelkey</strong> (<em>str</em>) Channel key to search for.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A channel match.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>channel (Channel or None)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.ChannelDBManager.get_subscriptions">
<code class="sig-name descname">get_subscriptions</code><span class="sig-paren">(</span><em class="sig-param">subscriber</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#ChannelDBManager.get_subscriptions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.ChannelDBManager.get_subscriptions" title="Permalink to this definition"></a></dt>
<dd><p>Return all channels a given entity is subscribed to.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>subscriber</strong> (<em>Object</em><em> or </em><em>Account</em>) The one subscribing.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Channel subscribed to.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>subscriptions (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.ChannelDBManager.search_channel">
<code class="sig-name descname">search_channel</code><span class="sig-paren">(</span><em class="sig-param">ostring</em>, <em class="sig-param">exact=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#ChannelDBManager.search_channel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.ChannelDBManager.search_channel" title="Permalink to this definition"></a></dt>
<dd><p>Search the channel database for a particular channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ostring</strong> (<em>str</em>) The key or database id of the channel.</p></li>
<li><p><strong>exact</strong> (<em>bool</em><em>, </em><em>optional</em>) Require an exact (but not
case sensitive) match.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.comms.managers.ChannelManager">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.managers.</code><code class="sig-name descname">ChannelManager</code><a class="reference internal" href="../_modules/evennia/comms/managers.html#ChannelManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.ChannelManager" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.comms.managers.ChannelDBManager" title="evennia.comms.managers.ChannelDBManager"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.managers.ChannelDBManager</span></code></a>, <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.managers.TypeclassManager</span></code></p>
<p>Wrapper to group the typeclass manager to a consistent name.</p>
</dd></dl>
<dl class="exception">
<dt id="evennia.comms.managers.CommError">
<em class="property">exception </em><code class="sig-prename descclassname">evennia.comms.managers.</code><code class="sig-name descname">CommError</code><a class="reference internal" href="../_modules/evennia/comms/managers.html#CommError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.CommError" title="Permalink 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 by comm system, to allow feedback to player when caught.</p>
</dd></dl>
<dl class="class">
<dt id="evennia.comms.managers.MsgManager">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.managers.</code><code class="sig-name descname">MsgManager</code><a class="reference internal" href="../_modules/evennia/comms/managers.html#MsgManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.MsgManager" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.managers.TypedObjectManager" title="evennia.typeclasses.managers.TypedObjectManager"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.managers.TypedObjectManager</span></code></a></p>
<p>This MsgManager implements methods for searching and manipulating
Messages directly from the database.</p>
<p>These methods will all return database objects (or QuerySets)
directly.</p>
<p>A Message represents one unit of communication, be it over a
Channel or via some form of in-game mail system. Like an e-mail,
it always has a sender and can have any number of receivers (some
of which may be Channels).</p>
<dl class="method">
<dt id="evennia.comms.managers.MsgManager.get_message_by_id">
<code class="sig-name descname">get_message_by_id</code><span class="sig-paren">(</span><em class="sig-param">idnum</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#MsgManager.get_message_by_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.MsgManager.get_message_by_id" title="Permalink to this definition"></a></dt>
<dd><p>Retrieve message by its id.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>idnum</strong> (<em>int</em><em> or </em><em>str</em>) The dbref to retrieve.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The message.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>message (<a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg">Msg</a>)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.MsgManager.get_messages_by_channel">
<code class="sig-name descname">get_messages_by_channel</code><span class="sig-paren">(</span><em class="sig-param">channel</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#MsgManager.get_messages_by_channel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.MsgManager.get_messages_by_channel" title="Permalink to this definition"></a></dt>
<dd><p>Get all persistent messages sent to one channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>channel</strong> (<em>Channel</em>) The channel to find messages for.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Persistent Msg objects saved for this channel.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>messages (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.MsgManager.get_messages_by_receiver">
<code class="sig-name descname">get_messages_by_receiver</code><span class="sig-paren">(</span><em class="sig-param">recipient</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#MsgManager.get_messages_by_receiver"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.MsgManager.get_messages_by_receiver" title="Permalink to this definition"></a></dt>
<dd><p>Get all messages sent to one given recipient.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>recipient</strong> (<em>Object</em><em>, </em><em>Account</em><em> or </em><em>Channel</em>) The recipient of the messages to search for.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Matching messages.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>messages (list)</p>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><a class="reference internal" href="#evennia.comms.managers.CommError" title="evennia.comms.managers.CommError"><strong>CommError</strong></a> If the <cite>recipient</cite> is not of a valid type.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.MsgManager.get_messages_by_sender">
<code class="sig-name descname">get_messages_by_sender</code><span class="sig-paren">(</span><em class="sig-param">sender</em>, <em class="sig-param">exclude_channel_messages=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#MsgManager.get_messages_by_sender"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.MsgManager.get_messages_by_sender" title="Permalink to this definition"></a></dt>
<dd><p>Get all messages sent by one entity - this could be either a
account or an object</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sender</strong> (<em>Account</em><em> or </em><em>Object</em>) The sender of the message.</p></li>
<li><p><strong>exclude_channel_messages</strong> (<em>bool</em><em>, </em><em>optional</em>) Only return messages
not aimed at a channel (that is, private tells for example)</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>List of matching messages</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>messages (list)</p>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><a class="reference internal" href="#evennia.comms.managers.CommError" title="evennia.comms.managers.CommError"><strong>CommError</strong></a> For incorrect sender types.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.MsgManager.identify_object">
<code class="sig-name descname">identify_object</code><span class="sig-paren">(</span><em class="sig-param">inp</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#MsgManager.identify_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.MsgManager.identify_object" title="Permalink to this definition"></a></dt>
<dd><p>Wrapper to identify_object if accessing via the manager directly.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>inp</strong> (<em>any</em>) Entity to be idtified.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>This is a tuple with (<cite>inp</cite>, identifier)</dt><dd><p>where <cite>identifier</cite> is one of “account”, “object”, “channel”,
“string”, “dbref” or None.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>identified (tuple)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.MsgManager.message_search">
<code class="sig-name descname">message_search</code><span class="sig-paren">(</span><em class="sig-param">sender=None</em>, <em class="sig-param">receiver=None</em>, <em class="sig-param">freetext=None</em>, <em class="sig-param">dbref=None</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.managers.MsgManager.message_search" title="Permalink to this definition"></a></dt>
<dd><p>Search the message database for particular messages. At least
one of the arguments must be given to do a search.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sender</strong> (<em>Object</em><em> or </em><em>Account</em><em>, </em><em>optional</em>) Get messages sent by a particular account or object</p></li>
<li><p><strong>receiver</strong> (<em>Object</em><em>, </em><em>Account</em><em> or </em><em>Channel</em><em>, </em><em>optional</em>) Get messages
received by a certain account,object or channel</p></li>
<li><p><strong>freetext</strong> (<em>str</em>) Search for a text string in a message. NOTE:
This can potentially be slow, so make sure to supply one of
the other arguments to limit the search.</p></li>
<li><p><strong>dbref</strong> (<em>int</em>) The exact database id of the message. This will override
all other search criteria since its unique and
always gives only one match.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A list of message matches or a single match if <cite>dbref</cite> was given.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>messages (list or <a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg">Msg</a>)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.managers.MsgManager.search_message">
<code class="sig-name descname">search_message</code><span class="sig-paren">(</span><em class="sig-param">sender=None</em>, <em class="sig-param">receiver=None</em>, <em class="sig-param">freetext=None</em>, <em class="sig-param">dbref=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#MsgManager.search_message"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.MsgManager.search_message" title="Permalink to this definition"></a></dt>
<dd><p>Search the message database for particular messages. At least
one of the arguments must be given to do a search.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sender</strong> (<em>Object</em><em> or </em><em>Account</em><em>, </em><em>optional</em>) Get messages sent by a particular account or object</p></li>
<li><p><strong>receiver</strong> (<em>Object</em><em>, </em><em>Account</em><em> or </em><em>Channel</em><em>, </em><em>optional</em>) Get messages
received by a certain account,object or channel</p></li>
<li><p><strong>freetext</strong> (<em>str</em>) Search for a text string in a message. NOTE:
This can potentially be slow, so make sure to supply one of
the other arguments to limit the search.</p></li>
<li><p><strong>dbref</strong> (<em>int</em>) The exact database id of the message. This will override
all other search criteria since its unique and
always gives only one match.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A list of message matches or a single match if <cite>dbref</cite> was given.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>messages (list or <a class="reference internal" href="#evennia.comms.models.Msg" title="evennia.comms.models.Msg">Msg</a>)</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="function">
<dt id="evennia.comms.managers._GA">
<code class="sig-prename descclassname">evennia.comms.managers.</code><code class="sig-name descname">_GA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.managers._GA" title="Permalink to this definition"></a></dt>
<dd><p>Return getattr(self, name).</p>
</dd></dl>
<dl class="function">
<dt id="evennia.comms.managers.identify_object">
<code class="sig-prename descclassname">evennia.comms.managers.</code><code class="sig-name descname">identify_object</code><span class="sig-paren">(</span><em class="sig-param">inp</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#identify_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.identify_object" title="Permalink to this definition"></a></dt>
<dd><p>Helper function. Identifies if an object is an account or an object;
return its database model</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>inp</strong> (<em>any</em>) Entity to be idtified.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>This is a tuple with (<cite>inp</cite>, identifier)</dt><dd><p>where <cite>identifier</cite> is one of “account”, “object”, “channel”,
“string”, “dbref” or None.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>identified (tuple)</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.comms.managers.to_object">
<code class="sig-prename descclassname">evennia.comms.managers.</code><code class="sig-name descname">to_object</code><span class="sig-paren">(</span><em class="sig-param">inp</em>, <em class="sig-param">objtype='account'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/managers.html#to_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.managers.to_object" title="Permalink to this definition"></a></dt>
<dd><p>Locates the object related to the given accountname or channel key.
If input was already the correct object, return it.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>inp</strong> (<em>any</em>) The input object/string</p></li>
<li><p><strong>objtype</strong> (<em>str</em>) Either account or channel.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The correct object related to <cite>inp</cite>.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>obj (object)</p>
</dd>
</dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.comms.models">
<span id="evennia-comms-models-module"></span><h2>evennia.comms.models module<a class="headerlink" href="#module-evennia.comms.models" title="Permalink to this headline"></a></h2>
<p>Models for the in-game communication system.</p>
<p>The comm system could take the form of channels, but can also be
adopted for storing tells or in-game mail.</p>
<p>The comsystems main component is the Message (Msg), which carries the
actual information between two parties. Msgs are stored in the
database and usually not deleted. A Msg always have one sender (a
user), but can have any number targets, both users and channels.</p>
<p>For non-persistent (and slightly faster) use one can also use the
TempMsg, which mimics the Msg API but without actually saving to the
database.</p>
<p>Channels are central objects that act as targets for Msgs. Accounts can
connect to channels by use of a ChannelConnect object (this object is
necessary to easily be able to delete connections on the fly).</p>
<dl class="class">
<dt id="evennia.comms.models.Msg">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.models.</code><code class="sig-name descname">Msg</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.Msg" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.idmapper.html#evennia.utils.idmapper.models.SharedMemoryModel" title="evennia.utils.idmapper.models.SharedMemoryModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.idmapper.models.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 senders (defined as string names)</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_receivers_channels: Receiving channels</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_hide_from_channels: list of channels objects to hide message from</p></li>
<li><p>db_lock_storage: Internal storage of lock strings.</p></li>
</ul>
<dl class="exception">
<dt id="evennia.comms.models.Msg.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.comms.models.Msg.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.comms.models.Msg.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.comms.models.Msg.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__channels_del">
<code class="sig-name descname">_Msg__channels_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__channels_del" title="Permalink to this definition"></a></dt>
<dd><p>Deleter. Allows for del self.channels</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__channels_get">
<code class="sig-name descname">_Msg__channels_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__channels_get" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.channels. Returns a list of channels.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__channels_set">
<code class="sig-name descname">_Msg__channels_set</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__channels_set" title="Permalink to this definition"></a></dt>
<dd><p>Setter. Allows for self.channels = value.
Requires a channel to be added.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__hide_from_del">
<code class="sig-name descname">_Msg__hide_from_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__hide_from_del" title="Permalink to this definition"></a></dt>
<dd><p>Deleter. Allows for del self.hide_from_senders</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__hide_from_get">
<code class="sig-name descname">_Msg__hide_from_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__hide_from_get" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.hide_from.
Returns 3 lists of accounts, objects and channels</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__hide_from_set">
<code class="sig-name descname">_Msg__hide_from_set</code><span class="sig-paren">(</span><em class="sig-param">hiders</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__hide_from_set" title="Permalink to this definition"></a></dt>
<dd><p>Setter. Allows for self.hide_from = value. Will append to hiders</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__receivers_del">
<code class="sig-name descname">_Msg__receivers_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__receivers_del" title="Permalink to this definition"></a></dt>
<dd><p>Deleter. Clears all receivers</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__receivers_get">
<code class="sig-name descname">_Msg__receivers_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__receivers_get" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.receivers.
Returns four lists of receivers: accounts, objects, scripts and channels.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__receivers_set">
<code class="sig-name descname">_Msg__receivers_set</code><span class="sig-paren">(</span><em class="sig-param">receivers</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__receivers_set" title="Permalink to this definition"></a></dt>
<dd><p>Setter. Allows for self.receivers = value.
This appends a new receiver to the message.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__senders_del">
<code class="sig-name descname">_Msg__senders_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__senders_del" title="Permalink to this definition"></a></dt>
<dd><p>Deleter. Clears all senders</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__senders_get">
<code class="sig-name descname">_Msg__senders_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__senders_get" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.sender</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg._Msg__senders_set">
<code class="sig-name descname">_Msg__senders_set</code><span class="sig-paren">(</span><em class="sig-param">senders</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg._Msg__senders_set" title="Permalink to this definition"></a></dt>
<dd><p>Setter. Allows for self.sender = value</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.Msg.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg._is_deleted">
<code class="sig-name descname">_is_deleted</code><em class="property"> = False</em><a class="headerlink" href="#evennia.comms.models.Msg._is_deleted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for Msg&gt;</em><a class="headerlink" href="#evennia.comms.models.Msg._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.access">
<code class="sig-name descname">access</code><span class="sig-paren">(</span><em class="sig-param">accessing_obj</em>, <em class="sig-param">access_type='read'</em>, <em class="sig-param">default=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.access"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.Msg.access" title="Permalink to this definition"></a></dt>
<dd><p>Checks lock access.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</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 <cite>access_type</cite> lock is not defined.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>If access was granted or not.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>result (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.channels">
<em class="property">property </em><code class="sig-name descname">channels</code><a class="headerlink" href="#evennia.comms.models.Msg.channels" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.channels. Returns a list of channels.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.date_created">
<em class="property">property </em><code class="sig-name descname">date_created</code><a class="headerlink" href="#evennia.comms.models.Msg.date_created" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for getting database field <cite>db_date_created</cite>.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_date_created">
<code class="sig-name descname">db_date_created</code><a class="headerlink" href="#evennia.comms.models.Msg.db_date_created" title="Permalink 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="attribute">
<dt id="evennia.comms.models.Msg.db_header">
<code class="sig-name descname">db_header</code><a class="headerlink" href="#evennia.comms.models.Msg.db_header" title="Permalink 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="attribute">
<dt id="evennia.comms.models.Msg.db_hide_from_accounts">
<code class="sig-name descname">db_hide_from_accounts</code><a class="headerlink" href="#evennia.comms.models.Msg.db_hide_from_accounts" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_hide_from_channels">
<code class="sig-name descname">db_hide_from_channels</code><a class="headerlink" href="#evennia.comms.models.Msg.db_hide_from_channels" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_hide_from_objects">
<code class="sig-name descname">db_hide_from_objects</code><a class="headerlink" href="#evennia.comms.models.Msg.db_hide_from_objects" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_lock_storage">
<code class="sig-name descname">db_lock_storage</code><a class="headerlink" href="#evennia.comms.models.Msg.db_lock_storage" title="Permalink 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="attribute">
<dt id="evennia.comms.models.Msg.db_message">
<code class="sig-name descname">db_message</code><a class="headerlink" href="#evennia.comms.models.Msg.db_message" title="Permalink 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="attribute">
<dt id="evennia.comms.models.Msg.db_receivers_accounts">
<code class="sig-name descname">db_receivers_accounts</code><a class="headerlink" href="#evennia.comms.models.Msg.db_receivers_accounts" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_receivers_channels">
<code class="sig-name descname">db_receivers_channels</code><a class="headerlink" href="#evennia.comms.models.Msg.db_receivers_channels" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_receivers_objects">
<code class="sig-name descname">db_receivers_objects</code><a class="headerlink" href="#evennia.comms.models.Msg.db_receivers_objects" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_receivers_scripts">
<code class="sig-name descname">db_receivers_scripts</code><a class="headerlink" href="#evennia.comms.models.Msg.db_receivers_scripts" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_sender_accounts">
<code class="sig-name descname">db_sender_accounts</code><a class="headerlink" href="#evennia.comms.models.Msg.db_sender_accounts" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_sender_external">
<code class="sig-name descname">db_sender_external</code><a class="headerlink" href="#evennia.comms.models.Msg.db_sender_external" title="Permalink 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="attribute">
<dt id="evennia.comms.models.Msg.db_sender_objects">
<code class="sig-name descname">db_sender_objects</code><a class="headerlink" href="#evennia.comms.models.Msg.db_sender_objects" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_sender_scripts">
<code class="sig-name descname">db_sender_scripts</code><a class="headerlink" href="#evennia.comms.models.Msg.db_sender_scripts" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.db_tags">
<code class="sig-name descname">db_tags</code><a class="headerlink" href="#evennia.comms.models.Msg.db_tags" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.get_next_by_db_date_created">
<code class="sig-name descname">get_next_by_db_date_created</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: db_date_created&gt;</em>, <em class="sig-param">is_next=True</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg.get_next_by_db_date_created" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.get_previous_by_db_date_created">
<code class="sig-name descname">get_previous_by_db_date_created</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: db_date_created&gt;</em>, <em class="sig-param">is_next=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.Msg.get_previous_by_db_date_created" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.header">
<em class="property">property </em><code class="sig-name descname">header</code><a class="headerlink" href="#evennia.comms.models.Msg.header" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for getting database field <cite>db_header</cite>.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.hide_from">
<em class="property">property </em><code class="sig-name descname">hide_from</code><a class="headerlink" href="#evennia.comms.models.Msg.hide_from" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.hide_from.
Returns 3 lists of accounts, objects and channels</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.comms.models.Msg.id" title="Permalink 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="method">
<dt id="evennia.comms.models.Msg.lock_storage">
<em class="property">property </em><code class="sig-name descname">lock_storage</code><a class="headerlink" href="#evennia.comms.models.Msg.lock_storage" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for getting database field <cite>db_lock_storage</cite>.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.locks">
<code class="sig-name descname">locks</code><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.locks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.Msg.locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.message">
<em class="property">property </em><code class="sig-name descname">message</code><a class="headerlink" href="#evennia.comms.models.Msg.message" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for getting database field <cite>db_message</cite>.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;evennia.comms.managers.MsgManager object&gt;</em><a class="headerlink" href="#evennia.comms.models.Msg.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.comms.models.Msg'</em><a class="headerlink" href="#evennia.comms.models.Msg.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.receivers">
<em class="property">property </em><code class="sig-name descname">receivers</code><a class="headerlink" href="#evennia.comms.models.Msg.receivers" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.receivers.
Returns four lists of receivers: accounts, objects, scripts and channels.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.remove_receiver">
<code class="sig-name descname">remove_receiver</code><span class="sig-paren">(</span><em class="sig-param">receivers</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.remove_receiver"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.Msg.remove_receiver" title="Permalink to this definition"></a></dt>
<dd><p>Remove a single receiver or a list of receivers.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</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>Channel</em><em> or </em><em>list</em>) Receiver to remove.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.remove_sender">
<code class="sig-name descname">remove_sender</code><span class="sig-paren">(</span><em class="sig-param">senders</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.remove_sender"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.Msg.remove_sender" title="Permalink 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</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.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.sender_external">
<em class="property">property </em><code class="sig-name descname">sender_external</code><a class="headerlink" href="#evennia.comms.models.Msg.sender_external" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for getting database field <cite>db_sender_external</cite>.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.Msg.senders">
<em class="property">property </em><code class="sig-name descname">senders</code><a class="headerlink" href="#evennia.comms.models.Msg.senders" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.sender</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.tags">
<code class="sig-name descname">tags</code><a class="reference internal" href="../_modules/evennia/comms/models.html#Msg.tags"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.Msg.tags" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.Msg.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'SharedMemoryModelBase'</em><a class="headerlink" href="#evennia.comms.models.Msg.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.comms.models.TempMsg">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.models.</code><code class="sig-name descname">TempMsg</code><span class="sig-paren">(</span><em class="sig-param">senders=None</em>, <em class="sig-param">receivers=None</em>, <em class="sig-param">channels=None</em>, <em class="sig-param">message=''</em>, <em class="sig-param">header=''</em>, <em class="sig-param">type=''</em>, <em class="sig-param">lockstring=''</em>, <em class="sig-param">hide_from=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#TempMsg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.TempMsg" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>This is a non-persistent object for sending temporary messages
that will not be stored. It mimics the “real” Msg object, but
doesnt require sender to be given.</p>
<dl class="method">
<dt id="evennia.comms.models.TempMsg.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">senders=None</em>, <em class="sig-param">receivers=None</em>, <em class="sig-param">channels=None</em>, <em class="sig-param">message=''</em>, <em class="sig-param">header=''</em>, <em class="sig-param">type=''</em>, <em class="sig-param">lockstring=''</em>, <em class="sig-param">hide_from=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#TempMsg.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.TempMsg.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Creates the temp message.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>senders</strong> (<em>any</em><em> or </em><em>list</em><em>, </em><em>optional</em>) Senders of the message.</p></li>
<li><p><strong>receivers</strong> (<em>Account</em><em>, </em><em>Object</em><em>, </em><em>Channel</em><em> or </em><em>list</em><em>, </em><em>optional</em>) Receivers of this message.</p></li>
<li><p><strong>channels</strong> (<em>Channel</em><em> or </em><em>list</em><em>, </em><em>optional</em>) Channels to send to.</p></li>
<li><p><strong>message</strong> (<em>str</em><em>, </em><em>optional</em>) Message to send.</p></li>
<li><p><strong>header</strong> (<em>str</em><em>, </em><em>optional</em>) Header of message.</p></li>
<li><p><strong>type</strong> (<em>str</em><em>, </em><em>optional</em>) Message class, if any.</p></li>
<li><p><strong>lockstring</strong> (<em>str</em><em>, </em><em>optional</em>) Lock for the message.</p></li>
<li><p><strong>hide_from</strong> (<em>Account</em><em>, </em><em>Object</em><em>, </em><em>Channel</em><em> or </em><em>list</em><em>, </em><em>optional</em>) Entities to hide this message from.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.TempMsg.access">
<code class="sig-name descname">access</code><span class="sig-paren">(</span><em class="sig-param">accessing_obj</em>, <em class="sig-param">access_type='read'</em>, <em class="sig-param">default=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#TempMsg.access"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.TempMsg.access" title="Permalink to this definition"></a></dt>
<dd><p>Checks lock access.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</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 <cite>access_type</cite> lock is not defined.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>If access was granted or not.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>result (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.TempMsg.locks">
<code class="sig-name descname">locks</code><a class="reference internal" href="../_modules/evennia/comms/models.html#TempMsg.locks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.TempMsg.locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.models.TempMsg.remove_receiver">
<code class="sig-name descname">remove_receiver</code><span class="sig-paren">(</span><em class="sig-param">receiver</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#TempMsg.remove_receiver"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.TempMsg.remove_receiver" title="Permalink to this definition"></a></dt>
<dd><p>Remove a receiver or a list of receivers</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>receiver</strong> (<em>Object</em><em>, </em><em>Account</em><em>, </em><em>Channel</em><em>, </em><em>str</em><em> or </em><em>list</em>) Receivers to remove.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.TempMsg.remove_sender">
<code class="sig-name descname">remove_sender</code><span class="sig-paren">(</span><em class="sig-param">sender</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#TempMsg.remove_sender"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.TempMsg.remove_sender" title="Permalink to this definition"></a></dt>
<dd><p>Remove a sender or a list of senders.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>sender</strong> (<em>Object</em><em>, </em><em>Account</em><em>, </em><em>str</em><em> or </em><em>list</em>) Senders to remove.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.comms.models.ChannelDB">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.models.</code><code class="sig-name descname">ChannelDB</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/models.html#ChannelDB"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.ChannelDB" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.models.TypedObject" title="evennia.typeclasses.models.TypedObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.models.TypedObject</span></code></a></p>
<p>This is the basis of a comm channel, only implementing
the very basics of distributing messages.</p>
<p>The Channel class defines the following database fields
beyond the ones inherited from TypedObject:</p>
<blockquote>
<div><ul class="simple">
<li><p>db_account_subscriptions: The Account subscriptions.</p></li>
<li><p>db_object_subscriptions: The Object subscriptions.</p></li>
</ul>
</div></blockquote>
<dl class="exception">
<dt id="evennia.comms.models.ChannelDB.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.comms.models.ChannelDB.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB._is_deleted">
<code class="sig-name descname">_is_deleted</code><em class="property"> = False</em><a class="headerlink" href="#evennia.comms.models.ChannelDB._is_deleted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for ChannelDB&gt;</em><a class="headerlink" href="#evennia.comms.models.ChannelDB._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.channel_set">
<code class="sig-name descname">channel_set</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.channel_set" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.db_account_subscriptions">
<code class="sig-name descname">db_account_subscriptions</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.db_account_subscriptions" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.db_attributes">
<code class="sig-name descname">db_attributes</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.db_attributes" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.db_object_subscriptions">
<code class="sig-name descname">db_object_subscriptions</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.db_object_subscriptions" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.db_tags">
<code class="sig-name descname">db_tags</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.db_tags" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.comms.models.ChannelDB.get_next_by_db_date_created">
<code class="sig-name descname">get_next_by_db_date_created</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: db_date_created&gt;</em>, <em class="sig-param">is_next=True</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.ChannelDB.get_next_by_db_date_created" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.models.ChannelDB.get_previous_by_db_date_created">
<code class="sig-name descname">get_previous_by_db_date_created</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: db_date_created&gt;</em>, <em class="sig-param">is_next=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.comms.models.ChannelDB.get_previous_by_db_date_created" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.hide_from_channels_set">
<code class="sig-name descname">hide_from_channels_set</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.hide_from_channels_set" title="Permalink 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="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><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.comms.models.ChannelDB.id" title="Permalink 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="attribute">
<dt id="evennia.comms.models.ChannelDB.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;evennia.comms.managers.ChannelDBManager object&gt;</em><a class="headerlink" href="#evennia.comms.models.ChannelDB.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.comms.models.ChannelDB'</em><a class="headerlink" href="#evennia.comms.models.ChannelDB.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.subscriptions">
<code class="sig-name descname">subscriptions</code><a class="reference internal" href="../_modules/evennia/comms/models.html#ChannelDB.subscriptions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.models.ChannelDB.subscriptions" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.comms.models.ChannelDB.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'SharedMemoryModelBase'</em><a class="headerlink" href="#evennia.comms.models.ChannelDB.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.comms.tests">
<span id="evennia-comms-tests-module"></span><h2>evennia.comms.tests module<a class="headerlink" href="#module-evennia.comms.tests" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="evennia.comms.tests.ObjectCreationTest">
<em class="property">class </em><code class="sig-prename descclassname">evennia.comms.tests.</code><code class="sig-name descname">ObjectCreationTest</code><span class="sig-paren">(</span><em class="sig-param">methodName='runTest'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/tests.html#ObjectCreationTest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.tests.ObjectCreationTest" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.html#evennia.utils.test_resources.EvenniaTest" title="evennia.utils.test_resources.EvenniaTest"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.test_resources.EvenniaTest</span></code></a></p>
<dl class="method">
<dt id="evennia.comms.tests.ObjectCreationTest.test_channel_create">
<code class="sig-name descname">test_channel_create</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/tests.html#ObjectCreationTest.test_channel_create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.tests.ObjectCreationTest.test_channel_create" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.comms.tests.ObjectCreationTest.test_message_create">
<code class="sig-name descname">test_message_create</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/tests.html#ObjectCreationTest.test_message_create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.comms.tests.ObjectCreationTest.test_message_create" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div 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" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<p><h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.comms package</a><ul>
<li><a class="reference internal" href="#subpackages">Subpackages</a></li>
<li><a class="reference internal" href="#submodules">Submodules</a></li>
<li><a class="reference internal" href="#module-evennia.comms.admin">evennia.comms.admin module</a></li>
<li><a class="reference internal" href="#module-evennia.comms.channelhandler">evennia.comms.channelhandler module</a></li>
<li><a class="reference internal" href="#module-evennia.comms.comms">evennia.comms.comms module</a></li>
<li><a class="reference internal" href="#module-evennia.comms.managers">evennia.comms.managers module</a></li>
<li><a class="reference internal" href="#module-evennia.comms.models">evennia.comms.models module</a></li>
<li><a class="reference internal" href="#module-evennia.comms.tests">evennia.comms.tests module</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../index.html">Documentation overview</a><ul>
</ul></li>
</ul>
</div>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.comms.rst.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div>
<h3>Versions</h3>
<ul>
<li><a href="evennia.comms.html">1.0-dev (develop branch)</a></li>
<li><a href="../../../versions/0.9.1/api/evennia.comms.html">0.9.1 (master branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2020, The Evennia developer community.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.4.4</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="../_sources/api/evennia.comms.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>