evennia/docs/0.x/api/evennia.comms.comms.html
2023-12-20 19:10:09 +01:00

805 lines
No EOL
55 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>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.comms.comms &#8212; Evennia 0.9.5 documentation</title>
<link rel="stylesheet" href="../_static/nature.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>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"processClass": "tex2jax_process|mathjax_process|math|output_area"}})</script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.comms.comms</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.comms.comms">
<span id="evennia-comms-comms"></span><h1>evennia.comms.comms<a class="headerlink" href="#module-evennia.comms.comms" title="Permalink to this headline"></a></h1>
<p>Base typeclass for in-game Channels.</p>
<dl class="py 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"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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.html#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="py 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="py 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="py 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="py 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="py 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"><span class="n">subscriber</span></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><p><em>has_sub (bool)</em> </p>
<dl class="simple">
<dt>Whether the subscriber is subscribing to</dt><dd><p>this channel or not.</p>
</dd>
</dl>
</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<dl class="simple">
<dt>This will first try Account subscribers and only try Object</dt><dd><p>if the Account fails.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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="py 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>
<dl class="py method">
<dt id="evennia.comms.comms.DefaultChannel.mute">
<code class="sig-name descname">mute</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">subscriber</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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="py method">
<dt id="evennia.comms.comms.DefaultChannel.unmute">
<code class="sig-name descname">unmute</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">subscriber</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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="py method">
<dt id="evennia.comms.comms.DefaultChannel.connect">
<code class="sig-name descname">connect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">subscriber</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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><p><em>success (bool)</em> </p>
<dl class="simple">
<dt>Whether or not the addition was</dt><dd><p>successful.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.comms.comms.DefaultChannel.disconnect">
<code class="sig-name descname">disconnect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">subscriber</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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><p><em>success (bool)</em> </p>
<dl class="simple">
<dt>Whether or not the removal was</dt><dd><p>successful.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.comms.comms.DefaultChannel.access">
<code class="sig-name descname">access</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">access_type</span><span class="o">=</span><span class="default_value">'listen'</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">no_superuser_bypass</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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><em>return (bool)</em> Result of lock check.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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"><span class="n">key</span></em>, <em class="sig-param"><span class="n">account</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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>
<dt class="field-even">Keyword Arguments</dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>aliases</strong> (<em>list of str</em>) List of alternative (likely shorter) keynames.</p></li>
<li><p><strong>description</strong> (<em>str</em>) A description of the channel, for use in listings.</p></li>
<li><p><strong>locks</strong> (<em>str</em>) Lockstring.</p></li>
<li><p><strong>keep_log</strong> (<em>bool</em>) Log channel throughput.</p></li>
<li><p><strong>typeclass</strong> (<em>str</em><em> or </em><em>class</em>) The typeclass of the Channel (not
often used).</p></li>
<li><p><strong>ip</strong> (<em>str</em>) IP address of creator (for object auditing).</p></li>
</ul>
</dd>
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>channel (Channel)</em> A newly created Channel.
errors (list): A list of errors in string form, if any.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt 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="py 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"><span class="n">msgobj</span></em>, <em class="sig-param"><span class="n">emit</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">prefix</span><span class="o">=</span><span class="default_value">True</span></em>, <em class="sig-param"><span class="n">sender_strings</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">external</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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.html#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 <strong>msg</strong> with a text given by <strong>self.channel_prefix</strong>.</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="py 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"><span class="n">msgobj</span></em>, <em class="sig-param"><span class="n">online</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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.html#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="evennia.comms.models.html#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="py method">
<dt id="evennia.comms.comms.DefaultChannel.msg">
<code class="sig-name descname">msg</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">msgobj</span></em>, <em class="sig-param"><span class="n">header</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">senders</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">sender_strings</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">keep_log</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">online</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">emit</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">external</span><span class="o">=</span><span class="default_value">False</span></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.html#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em>, </em><a class="reference internal" href="evennia.comms.models.html#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 <strong>header</strong>
and <strong>senders</strong> 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. The list will be
filtered so each sender-string only occurs once.</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 <strong>None</strong>, the Channels <strong>keep_log</strong> Attribute will
be used. If <strong>True</strong> or <strong>False</strong>, that logging status will be used for this
message only (note that for unlogged channels, a <strong>True</strong> 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><p><em>success (bool)</em> </p>
<dl class="simple">
<dt>Returns <strong>True</strong> if message sending was</dt><dd><p>successful, <strong>False</strong> otherwise.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.comms.comms.DefaultChannel.tempmsg">
<code class="sig-name descname">tempmsg</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">message</span></em>, <em class="sig-param"><span class="n">header</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">senders</span><span class="o">=</span><span class="default_value">None</span></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="py 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"><span class="n">msg</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">emit</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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><em>prefix (str)</em> The created channel prefix.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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"><span class="n">senders</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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><em>formatted_list (str)</em> The list of names formatted appropriately.</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="py 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"><span class="n">msgobj</span></em>, <em class="sig-param"><span class="n">sender_string</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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.html#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="evennia.comms.models.html#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><p><em>string (str)</em> </p>
<dl class="simple">
<dt>A message that combines the <strong>sender_string</strong></dt><dd><p>component with <strong>msg</strong> in different ways depending on if a
pose was performed or not (this must be analyzed by the
hook).</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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"><span class="n">msgobj</span></em>, <em class="sig-param"><span class="n">senders</span></em>, <em class="sig-param"><span class="n">emit</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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.html#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="evennia.comms.models.html#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><em>transformed (str)</em> A formatted string.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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"><span class="n">msgobj</span></em>, <em class="sig-param"><span class="n">emit</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></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.html#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="evennia.comms.models.html#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><em>transformed (str)</em> The formatted message.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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"><span class="n">joiner</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_join_channel"><span class="viewcode-link">[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><em>should_join (bool)</em> If <strong>False</strong>, channel joining is aborted.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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"><span class="n">joiner</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_join_channel"><span class="viewcode-link">[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="py 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"><span class="n">leaver</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_leave_channel"><span class="viewcode-link">[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><em>should_leave (bool)</em> If <strong>False</strong>, channel parting is aborted.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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"><span class="n">leaver</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_leave_channel"><span class="viewcode-link">[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="py 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"><span class="n">msg</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.pre_send_message"><span class="viewcode-link">[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.html#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="evennia.comms.models.html#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><em>result (Msg, TempMsg or bool)</em> If False, abort send.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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"><span class="n">msg</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/comms/comms.html#DefaultChannel.post_send_message"><span class="viewcode-link">[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.html#evennia.comms.models.Msg" title="evennia.comms.models.Msg"><em>Msg</em></a><em> or </em><a class="reference internal" href="evennia.comms.models.html#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="py 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="py 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><em>path (str)</em> URI path to Django Admin page for object.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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><em>path (str)</em> URI path to object creation page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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><em>path (str)</em> URI path to object detail page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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><em>path (str)</em> URI path to object update page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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><em>path (str)</em> URI path to object deletion page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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><em>path (str)</em> URI path to object detail page, if defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py 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: <a class="reference internal" href="evennia.comms.models.html#evennia.comms.models.ChannelDB.DoesNotExist" title="evennia.comms.models.ChannelDB.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.models.ChannelDB.DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py 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: <a class="reference internal" href="evennia.comms.models.html#evennia.comms.models.ChannelDB.MultipleObjectsReturned" title="evennia.comms.models.ChannelDB.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.models.ChannelDB.MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py 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="py 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>
</dd></dl>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<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>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.comms.comms.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com">Home page</a> </li>
<li><a href="https://github.com/evennia/evennia">Evennia Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li><a href="http://webchat.freenode.net/?channels=evennia&uio=MT1mYWxzZSY5PXRydWUmMTE9MTk1JjEyPXRydWUbb">IRC</a> -
<a href="https://discord.gg/NecFePw">Discord</a> -
<a href="https://groups.google.com/forum/#%21forum/evennia">Forums</a>
</li>
<li><a href="http://evennia.blogspot.com/">Evennia Dev blog</a> </li>
</ul>
<h3>Versions</h3>
<ul>
<li><a href="../../1.0-dev/api/evennia.comms.comms.html">1.0-dev (develop branch)</a></li>
<li><a href="evennia.comms.comms.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.comms.comms</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>