<spanid="evennia-comms-models"></span><h1>evennia.comms.models<aclass="headerlink"href="#module-evennia.comms.models"title="Permalink to this headline">¶</a></h1>
<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 comsystem’s 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>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.comms.models.</code><codeclass="sig-name descname">Msg</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.Msg"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">db_sender_accounts</code><aclass="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
<codeclass="sig-name descname">db_sender_objects</code><aclass="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
<codeclass="sig-name descname">db_sender_scripts</code><aclass="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
<codeclass="sig-name descname">db_sender_external</code><aclass="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
<codeclass="sig-name descname">db_receivers_accounts</code><aclass="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
<codeclass="sig-name descname">db_receivers_objects</code><aclass="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
<codeclass="sig-name descname">db_receivers_scripts</code><aclass="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
<codeclass="sig-name descname">db_receivers_channels</code><aclass="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
<codeclass="sig-name descname">db_header</code><aclass="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
<codeclass="sig-name descname">db_message</code><aclass="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
<codeclass="sig-name descname">db_date_created</code><aclass="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
<codeclass="sig-name descname">db_lock_storage</code><aclass="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
<codeclass="sig-name descname">db_hide_from_accounts</code><aclass="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
<codeclass="sig-name descname">db_hide_from_objects</code><aclass="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
<codeclass="sig-name descname">db_hide_from_channels</code><aclass="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
<codeclass="sig-name descname">db_tags</code><aclass="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
<codeclass="sig-name descname">objects</code><emclass="property"> = <evennia.comms.managers.MsgManager object></em><aclass="headerlink"href="#evennia.comms.models.Msg.objects"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.Msg.__init__"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">locks</code><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.locks"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.Msg.locks"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">tags</code><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.tags"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.Msg.tags"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">senders</code><aclass="headerlink"href="#evennia.comms.models.Msg.senders"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">remove_sender</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">senders</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.remove_sender"><spanclass="viewcode-link">[source]</span></a><aclass="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>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="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>
<emclass="property">property </em><codeclass="sig-name descname">receivers</code><aclass="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>
<codeclass="sig-name descname">remove_receiver</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">receivers</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.remove_receiver"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.Msg.remove_receiver"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">channels</code><aclass="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>
<emclass="property">property </em><codeclass="sig-name descname">hide_from</code><aclass="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>
<codeclass="sig-name descname">access</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">accessing_obj</span></em>, <emclass="sig-param"><spanclass="n">access_type</span><spanclass="o">=</span><spanclass="default_value">'read'</span></em>, <emclass="sig-param"><spanclass="n">default</span><spanclass="o">=</span><spanclass="default_value">False</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.access"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.Msg.access"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.comms.models.Msg.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.comms.models.Msg.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">date_created</code><aclass="headerlink"href="#evennia.comms.models.Msg.date_created"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_date_created</strong>.</p>
<codeclass="sig-name descname">get_next_by_db_date_created</code><spanclass="sig-paren">(</span><emclass="sig-param">*</em>, <emclass="sig-param">field=<django.db.models.fields.DateTimeField: db_date_created></em>, <emclass="sig-param">is_next=True</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.Msg.get_next_by_db_date_created"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_previous_by_db_date_created</code><spanclass="sig-paren">(</span><emclass="sig-param">*</em>, <emclass="sig-param">field=<django.db.models.fields.DateTimeField: db_date_created></em>, <emclass="sig-param">is_next=False</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.Msg.get_previous_by_db_date_created"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">header</code><aclass="headerlink"href="#evennia.comms.models.Msg.header"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_header</strong>.</p>
<emclass="property">property </em><codeclass="sig-name descname">lock_storage</code><aclass="headerlink"href="#evennia.comms.models.Msg.lock_storage"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_lock_storage</strong>.</p>
<emclass="property">property </em><codeclass="sig-name descname">message</code><aclass="headerlink"href="#evennia.comms.models.Msg.message"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_message</strong>.</p>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.comms.models.Msg'</em><aclass="headerlink"href="#evennia.comms.models.Msg.path"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">sender_external</code><aclass="headerlink"href="#evennia.comms.models.Msg.sender_external"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_sender_external</strong>.</p>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'SharedMemoryModelBase'</em><aclass="headerlink"href="#evennia.comms.models.Msg.typename"title="Permalink to this definition">¶</a></dt>
<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>
<codeclass="sig-name descname">locks</code><aclass="reference internal"href="../_modules/evennia/comms/models.html#TempMsg.locks"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.TempMsg.locks"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">remove_sender</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">sender</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#TempMsg.remove_sender"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.TempMsg.remove_sender"title="Permalink to this definition">¶</a></dt>
<ddclass="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>
<codeclass="sig-name descname">remove_receiver</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">receiver</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#TempMsg.remove_receiver"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.TempMsg.remove_receiver"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">access</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">accessing_obj</span></em>, <emclass="sig-param"><spanclass="n">access_type</span><spanclass="o">=</span><spanclass="default_value">'read'</span></em>, <emclass="sig-param"><spanclass="n">default</span><spanclass="o">=</span><spanclass="default_value">False</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#TempMsg.access"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.TempMsg.access"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.comms.models.</code><codeclass="sig-name descname">ChannelDB</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#ChannelDB"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.ChannelDB"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">db_account_subscriptions</code><aclass="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
<codeclass="sig-name descname">db_object_subscriptions</code><aclass="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
<codeclass="sig-name descname">objects</code><emclass="property"> = <evennia.comms.managers.ChannelDBManager object></em><aclass="headerlink"href="#evennia.comms.models.ChannelDB.objects"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">subscriptions</code><aclass="reference internal"href="../_modules/evennia/comms/models.html#ChannelDB.subscriptions"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.comms.models.ChannelDB.subscriptions"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.comms.models.ChannelDB.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.comms.models.ChannelDB.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">channel_set</code><aclass="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
<codeclass="sig-name descname">db_attributes</code><aclass="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
<codeclass="sig-name descname">db_tags</code><aclass="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
<codeclass="sig-name descname">get_next_by_db_date_created</code><spanclass="sig-paren">(</span><emclass="sig-param">*</em>, <emclass="sig-param">field=<django.db.models.fields.DateTimeField: db_date_created></em>, <emclass="sig-param">is_next=True</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.get_next_by_db_date_created"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_previous_by_db_date_created</code><spanclass="sig-paren">(</span><emclass="sig-param">*</em>, <emclass="sig-param">field=<django.db.models.fields.DateTimeField: db_date_created></em>, <emclass="sig-param">is_next=False</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.get_previous_by_db_date_created"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">hide_from_channels_set</code><aclass="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
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.comms.models.ChannelDB'</em><aclass="headerlink"href="#evennia.comms.models.ChannelDB.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'SharedMemoryModelBase'</em><aclass="headerlink"href="#evennia.comms.models.ChannelDB.typename"title="Permalink to this definition">¶</a></dt>