<spanid="evennia-commands-cmdhandler"></span><h1>evennia.commands.cmdhandler<aclass="headerlink"href="#module-evennia.commands.cmdhandler"title="Link to this heading">¶</a></h1>
<p>Command handler</p>
<p>This module contains the infrastructure for accepting commands on the
command line. The processing of a command works as follows:</p>
<olclass="arabic">
<li><p>The calling object (caller) is analyzed based on its callertype.</p></li>
<li><p>Cmdsets are gathered from different sources:
- object cmdsets: all objects at caller’s location are scanned for non-empty</p>
<blockquote>
<div><p>cmdsets. This includes cmdsets on exits.</p>
</div></blockquote>
<ulclass="simple">
<li><p>caller: the caller is searched for its own currently active cmdset.</p></li>
<li><p>account: lastly the cmdsets defined on caller.account are added.</p></li>
</ul>
</li>
<li><p>The collected cmdsets are merged together to a combined, current cmdset.</p></li>
<li><p>If the input string is empty -> check for CMD_NOINPUT command in
current cmdset or fallback to error message. Exit.</p></li>
<li><p>The Command Parser is triggered, using the current cmdset to analyze the
input string for possible command matches.</p></li>
<li><p>If multiple matches are found -> check for CMD_MULTIMATCH in current
cmdset, or fallback to error message. Exit.</p></li>
<li><p>If no match was found -> check for CMD_NOMATCH in current cmdset or
fallback to error message. Exit.</p></li>
<li><p>At this point we have found a normal command. We assign useful variables to it that
will be available to the command coder at run-time.</p></li>
<li><p>We have a unique cmdobject, primed for use. Call all hooks:
<strong>at_pre_cmd()</strong>, <strong>cmdobj.parse()</strong>, <strong>cmdobj.func()</strong> and finally <strong>at_post_cmd()</strong>.</p></li>
<li><p>Return deferred that will fire with the return from <strong>cmdobj.func()</strong> (unused by default).</p></li>
<li><p><strong>called_by</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>Account</em><em> or </em><em>Object</em>) – Object from which this
command was called. which this was called from. What this is
depends on the game state.</p></li>
<li><p><strong>raw_string</strong> (<em>str</em>) – The command string as given on the command line.</p></li>
<li><p><strong>_testing</strong> (<em>bool</em><em>, </em><em>optional</em>) – Used for debug purposes and decides if we
should actually execute the command or not. If True, the
command instance will be returned.</p></li>
<li><p><strong>callertype</strong> (<em>str</em><em>, </em><em>optional</em>) – One of “session”, “account” or
“object”. These are treated in decending order, so when the
Session is the caller, it will merge its own cmdset into
cmdsets from both Account and eventual puppeted Object (and
cmdsets in its room etc). An Account will only include its own
cmdset and the Objects and so on. Merge order is the same
order, so that Object cmdsets are merged in last, giving them
precendence for same-name and same-prio commands.</p></li>
<li><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – Relevant if callertype is “account” - the session will help
retrieve the correct cmdsets from puppeted objects.</p></li>
<li><p><strong>cmdobj</strong> (<aclass="reference internal"href="evennia.commands.command.html#evennia.commands.command.Command"title="evennia.commands.command.Command"><em>Command</em></a><em>, </em><em>optional</em>) – If given a command instance, this will be executed using
<strong>called_by</strong> as the caller, <strong>raw_string</strong> representing its arguments and (optionally)
<strong>cmdobj_key</strong> as its input command name. No cmdset lookup will be performed but
all other options apply as normal. This allows for running a specific Command
within the command system mechanism.</p></li>
<li><p><strong>cmdobj_key</strong> (<em>string</em><em>, </em><em>optional</em>) – Used together with <strong>cmdobj</strong> keyword to specify
which cmdname should be assigned when calling the specified Command instance. This
is made available as <strong>self.cmdstring</strong> when the Command runs.
If not given, the command will be assumed to be called as <strong>cmdobj.key</strong>.</p></li>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">InterruptCommand</span></span><aclass="reference internal"href="../_modules/evennia/commands/command.html#InterruptCommand"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.InterruptCommand"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">CmdSet</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">cmdsetobj</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">key</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">cmdsetobj</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">key</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.__init__"title="Link to this definition">¶</a></dt>
<li><p><strong>cmdsetobj</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>Account</em><em>, </em><em>Object</em><em>, </em><em>optional</em>) – This is the database object
to which this particular instance of cmdset is related. It
is often a character but may also be a regular object, Account
or Session.</p></li>
<li><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) – The idenfier for this cmdset. This
helps if wanting to selectively remov cmdsets.</p></li>
<spanclass="sig-name descname"><spanclass="pre">add</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">cmd</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">allow_duplicates</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.add"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.add"title="Link to this definition">¶</a></dt>
<dd><p>Add a new command or commands to this CmdSet, a list of
commands or a cmdset to this cmdset. Note that this is <em>not</em>
a merge operation (that is handled by the + operator).</p>
<li><p><strong>cmd</strong> (<aclass="reference internal"href="evennia.commands.command.html#evennia.commands.command.Command"title="evennia.commands.command.Command"><em>Command</em></a><em>, </em><em>list</em><em>, </em><em>Cmdset</em>) – This allows for adding one or
more commands to this Cmdset in one go. If another Cmdset
is given, all its commands will be added.</p></li>
<li><p><strong>allow_duplicates</strong> (<em>bool</em><em>, </em><em>optional</em>) – If set, will not try to remove
duplicate cmds in the set. This is needed during the merge process
to avoid wiping commands coming from cmdsets with duplicate=True.</p></li>
</ul>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>If cmd already exists in set, it will replace the old one
(no priority checking etc happens here). This is very useful
when overloading default commands).</p>
<p>If cmd is another cmdset class or -instance, the commands of
that command set is added to this one, as if they were part of
the original cmdset definition. No merging or priority checks
are made, rather later added commands will simply replace
<spanclass="sig-name descname"><spanclass="pre">at_cmdset_creation</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.at_cmdset_creation"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.at_cmdset_creation"title="Link to this definition">¶</a></dt>
<dd><p>Hook method - this should be overloaded in the inheriting
class, and should take care of populating the cmdset by use of
<spanclass="sig-name descname"><spanclass="pre">count</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.count"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.count"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">duplicates</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.duplicates"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">errmessage</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.errmessage"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">get</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">cmd</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.get"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.get"title="Link to this definition">¶</a></dt>
<dd><p>Get a command from the cmdset. This is mostly useful to
check if the command is part of this cmdset or not.</p>
<ddclass="field-odd"><p><strong>cmd</strong> (<aclass="reference internal"href="evennia.commands.command.html#evennia.commands.command.Command"title="evennia.commands.command.Command"><em>Command</em></a><em> or </em><em>str</em>) – Either the Command object or its key.</p>
<spanclass="sig-name descname"><spanclass="pre">get_all_cmd_keys_and_aliases</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">caller</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.get_all_cmd_keys_and_aliases"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.get_all_cmd_keys_and_aliases"title="Link to this definition">¶</a></dt>
<dt>A list of all command keys and aliases in this cmdset. If <strong>caller</strong></dt><dd><p>was given, this list will only contain commands to which <strong>caller</strong> passed
<spanclass="sig-name descname"><spanclass="pre">get_system_cmds</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.get_system_cmds"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.get_system_cmds"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">key</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'Unnamed</span><spanclass="pre">CmdSet'</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.key"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">key_mergetypes</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{}</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.key_mergetypes"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">make_unique</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">caller</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.make_unique"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.make_unique"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">mergetype</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'Union'</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.mergetype"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">no_channels</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.no_channels"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">no_exits</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.no_exits"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">no_objs</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.no_objs"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.commands.cmdset.CmdSet'</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.path"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">persistent</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.persistent"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">priority</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">0</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.priority"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">remove</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">cmd</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdset.html#CmdSet.remove"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.remove"title="Link to this definition">¶</a></dt>
<dd><p>Remove a command instance from the cmdset.</p>
<ddclass="field-odd"><p><strong>cmd</strong> (<aclass="reference internal"href="evennia.commands.command.html#evennia.commands.command.Command"title="evennia.commands.command.Command"><em>Command</em></a><em> or </em><em>str</em>) – Either the Command object to remove
<spanclass="sig-name descname"><spanclass="pre">to_duplicate</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">('key',</span><spanclass="pre">'cmdsetobj',</span><spanclass="pre">'no_exits',</span><spanclass="pre">'no_objs',</span><spanclass="pre">'no_channels',</span><spanclass="pre">'persistent',</span><spanclass="pre">'mergetype',</span><spanclass="pre">'priority',</span><spanclass="pre">'duplicates',</span><spanclass="pre">'errmessage')</span></em><aclass="headerlink"href="#evennia.commands.cmdhandler.CmdSet.to_duplicate"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">ErrorReported</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">raw_string</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdhandler.html#ErrorReported"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.ErrorReported"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">raw_string</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdhandler.html#ErrorReported.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.ErrorReported.__init__"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">ExecSystemCommand</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">syscmd</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">sysarg</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdhandler.html#ExecSystemCommand"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.ExecSystemCommand"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">syscmd</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">sysarg</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdhandler.html#ExecSystemCommand.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.ExecSystemCommand.__init__"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">NoCmdSets</span></span><aclass="reference internal"href="../_modules/evennia/commands/cmdhandler.html#NoCmdSets"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.NoCmdSets"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">chain</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">iterables</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.commands.cmdhandler.chain"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">copy</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">x</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/copy.html#copy"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.copy"title="Link to this definition">¶</a></dt>
<dd><p>Shallow copy operation on arbitrary Python objects.</p>
<p>See the module’s __doc__ string for more info.</p>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">defaultdict</span></span><aclass="headerlink"href="#evennia.commands.cmdhandler.defaultdict"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.commands.cmdhandler.defaultdict.__init__"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">copy</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">a</span><spanclass="pre">shallow</span><spanclass="pre">copy</span><spanclass="pre">of</span><spanclass="pre">D.</span></span></span><aclass="headerlink"href="#evennia.commands.cmdhandler.defaultdict.copy"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">default_factory</span></span><aclass="headerlink"href="#evennia.commands.cmdhandler.defaultdict.default_factory"title="Link to this definition">¶</a></dt>
<dd><p>Factory for default value called by __missing__().</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">deferLater</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="pre">clock:</span><spanclass="pre"><InterfaceClass</span><spanclass="pre">twisted.internet.interfaces.IReactorTime>,</span><spanclass="pre">delay:</span><spanclass="pre">float,</span><spanclass="pre">callable:</span><spanclass="pre">~typing.Callable[[...],</span><spanclass="pre">~twisted.internet.task._T]</span><spanclass="pre">|</span><spanclass="pre">None</span><spanclass="pre">=</span><spanclass="pre">None,</span><spanclass="pre">*args:</span><spanclass="pre">object,</span><spanclass="pre">**kw:</span><spanclass="pre">object</span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="evennia.scripts.scripts.html#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_T</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/task.html#deferLater"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.deferLater"title="Link to this definition">¶</a></dt>
<dd><p>Call the given function after a certain period of time has passed.</p>
<dlclass="simple">
<dt>@param clock: The object which will be used to schedule the delayed</dt><dd><p>call.</p>
</dd>
</dl>
<p>@param delay: The number of seconds to wait before calling the function.</p>
<p>@param callable: The callable to call after the delay, or C{None}.</p>
<p>@param args: The positional arguments to pass to C{callable}.</p>
<p>@param kw: The keyword arguments to pass to C{callable}.</p>
<dlclass="simple">
<dt>@return: A deferred that fires with the result of the callable when the</dt><dd><p>specified time has elapsed.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">err_helper</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">raw_string</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">cmdid</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdhandler.html#err_helper"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.err_helper"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">format_exc</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">limit</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">chain</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/traceback.html#format_exc"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.format_exc"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">generate_cmdset_providers</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">called_by</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">session</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/commands/cmdhandler.html#generate_cmdset_providers"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.generate_cmdset_providers"title="Link to this definition">¶</a></dt>
<li><p><strong>caller</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>Account</em><em> or </em><em>Object</em>) – The entity executing the command. Which
type of object this is depends on the current game state; for example
when the user is not logged in, this will be a Session, when being OOC
it will be an Account and when puppeting an object this will (often) be
a Character Object. In the end it depends on where the cmdset is stored.</p></li>
<li><p><strong>cmdset_providers</strong> (<em>list</em>) – A list of sorted objects which provide cmdsets.</p></li>
<li><p><strong>callertype</strong> (<em>str</em>) – This identifies caller as either “account”, “object” or “session”
to avoid having to do this check internally.</p></li>
<li><p><strong>raw_string</strong> (<em>str</em>) – The input string. This is only used for error reporting.</p></li>
<li><p><strong>report_to</strong> (<em>Object</em><em>, </em><em>optional</em>) – If given, this object will receive error messages</p></li>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">inlineCallbacks</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">f</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_P</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">Generator</span><spanclass="p"><spanclass="pre">[</span></span><aclass="reference internal"href="evennia.scripts.scripts.html#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">_T</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">]</span></span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_P</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><aclass="reference internal"href="evennia.scripts.scripts.html#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_T</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#inlineCallbacks"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.inlineCallbacks"title="Link to this definition">¶</a></dt>
<dd><p>L{inlineCallbacks} helps you write L{Deferred}-using code that looks like a
<spanclass="k">if</span><spanclass="n">thing</span><spanclass="o">==</span><spanclass="s1">'I love Twisted'</span><spanclass="p">:</span>
<spanclass="c1"># will become the result of the Deferred</span>
<spanclass="k">return</span><spanclass="s1">'TWISTED IS GREAT!'</span>
<spanclass="k">else</span><spanclass="p">:</span>
<spanclass="c1"># will trigger an errback</span>
<spanclass="k">raise</span><spanclass="ne">Exception</span><spanclass="p">(</span><spanclass="s1">'DESTROY ALL LIFE'</span><spanclass="p">)</span>
</pre></div>
</div>
<p>You can cancel the L{Deferred} returned from your L{inlineCallbacks}
generator before it is fired by your generator completing (either by
reaching its end, a C{return} statement, or by calling L{returnValue}).
A C{CancelledError} will be raised from the C{yield}ed L{Deferred} that
has been cancelled if that C{Deferred} does not otherwise suppress it.</p>
<p>C{inlineCallbacks} behaves very similarly to coroutines. Since Twisted 24.7.0
it is possible to rewrite functions using C{inlineCallbacks} to C{async def}
in piecewise manner and be mostly compatible to existing code.</p>
<p>The rewrite process is simply replacing C{inlineCallbacks} decorator with
C{async def} and all C{yield} occurrences in the function body with C{await}.
The function will no longer return a C{Deferred} but a awaitable coroutine.
This return value will obviously not have C{Deferred} methods such as
C{addCallback}, but it will be possible to C{yield} it in other code based
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.commands.cmdhandler.</span></span><spanclass="sig-name descname"><spanclass="pre">string_suggestions</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">string</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">vocabulary</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">cutoff</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">0.6</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">maxnum</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">3</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_suggestions"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.commands.cmdhandler.string_suggestions"title="Link to this definition">¶</a></dt>
<dd><p>Given a <strong>string</strong> and a <strong>vocabulary</strong>, return a match or a list of