Updated HTML docs.

This commit is contained in:
Evennia docbuilder action 2022-12-03 09:12:37 +00:00
parent 0386a84221
commit b9423169d8
49 changed files with 813 additions and 281 deletions

View file

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 1f8ce29093d89d6bdf233b6a6dbca5bf
config: 9f788ce2f814f82df393217eb5d928d5
tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -168,7 +168,7 @@
<div><p>Not released yet
2019-2022 develop branch (WIP)</p>
</div></blockquote>
<p>Increase requirements: Django 4.1+, Twisted 22.10+ Python 3.9, 3.10, 3.11. PostgreSQL 11+.</p>
<p>Increase requirements: Django 4.1+, Twisted 22.10+ Python 3.10, 3.11. PostgreSQL 11+.</p>
<ul class="simple">
<li><p>New <code class="docutils literal notranslate"><span class="pre">drop:holds()</span></code> lock default to limit dropping nonsensical things. Access check
defaults to True for backwards-compatibility in 0.9, will be False in 1.0</p></li>

View file

@ -147,7 +147,7 @@ of this readme for Godot 4.</p>
</div>
<p>You must also remove the protocol from the <code class="docutils literal notranslate"><span class="pre">connect_to_url</span></code> call made
within the <code class="docutils literal notranslate"><span class="pre">_ready</span></code> function.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">func</span> <span class="n">_ready</span><span class="p">():</span>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">func</span> <span class="n">_ready</span><span class="p">():</span>
<span class="c1"># ...</span>
<span class="c1"># Change the following line from this</span>
<span class="n">var</span> <span class="n">err</span> <span class="o">=</span> <span class="n">_client</span><span class="o">.</span><span class="n">connect_to_url</span><span class="p">(</span><span class="n">websocket_url</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;lws-mirror-protocol&quot;</span><span class="p">])</span>
@ -166,12 +166,12 @@ Here is an example</p>
<span class="n">var</span> <span class="n">data</span> <span class="o">=</span> <span class="n">_client</span><span class="o">.</span><span class="n">get_peer</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">get_packet</span><span class="p">()</span><span class="o">.</span><span class="n">get_string_from_utf8</span><span class="p">()</span>
<span class="n">var</span> <span class="n">json_data</span> <span class="o">=</span> <span class="n">JSON</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">result</span>
<span class="c1"># The json_data is an array</span>
<span class="c1"># The first element informs us this is simple text</span>
<span class="c1"># so we add it to the RichTextlabel</span>
<span class="k">if</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;text&#39;</span><span class="p">:</span>
<span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> <span class="n">label</span><span class="o">.</span><span class="n">append_bbcode</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="c1"># Always useful to print the data and see what we got.</span>
<span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</pre></div>
@ -189,17 +189,17 @@ to leverage Evennias OOB to send extra data.</p>
</pre></div>
</div>
<p>Godot</p>
<div class="highlight-gdscript notranslate"><div class="highlight"><pre><span></span><span class="k">func</span><span class="w"> </span><span class="n">_on_data</span><span class="p">():</span><span class="w"></span>
<span class="w"> </span><span class="o">...</span><span class="w"></span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">&#39;text&#39;</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span><span class="w"> </span><span class="n">label</span><span class="o">.</span><span class="n">append_bbcode</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span>
<span class="w"> </span><span class="c1"># Notice the first element is the name of the kwarg we used from evennia.</span><span class="w"></span>
<span class="w"> </span><span class="k">elif</span><span class="w"> </span><span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">&#39;coordinates&#39;</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">coords_data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_data</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="w"></span>
<span class="w"> </span><span class="n">player</span><span class="o">.</span><span class="n">set_pos</span><span class="p">(</span><span class="n">coords_data</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span>
<span class="w"> </span><span class="o">...</span><span class="w"></span>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">func</span> <span class="n">_on_data</span><span class="p">():</span>
<span class="o">...</span>
<span class="k">if</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;text&#39;</span><span class="p">:</span>
<span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> <span class="n">label</span><span class="o">.</span><span class="n">append_bbcode</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="c1"># Notice the first element is the name of the kwarg we used from evennia.</span>
<span class="k">elif</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;coordinates&#39;</span><span class="p">:</span>
<span class="n">var</span> <span class="n">coords_data</span> <span class="o">=</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
<span class="n">player</span><span class="o">.</span><span class="n">set_pos</span><span class="p">(</span><span class="n">coords_data</span><span class="p">)</span>
<span class="o">...</span>
</pre></div>
</div>
<p>A good idea would be to set up Godot Signals you can trigger based on the data
@ -217,86 +217,87 @@ cast them to dict() or list() before doing so.</p></li>
<h2>Godot 3 Example<a class="headerlink" href="#godot-3-example" title="Permalink to this headline"></a></h2>
<p>This is an example of a Script to use in Godot 3.
The script can be attached to the root UI node.</p>
<div class="highlight-gdscript notranslate"><div class="highlight"><pre><span></span><span class="k">extends</span><span class="w"> </span><span class="n">Node</span><span class="w"></span>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">extends</span> <span class="n">Node</span>
<span class="c1"># The URL to connect to, should be your mud.</span><span class="w"></span>
<span class="k">export</span><span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">websocket_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;ws://127.0.0.1:4008&quot;</span><span class="w"></span>
<span class="c1"># The URL to connect to, should be your mud.</span>
<span class="n">export</span> <span class="n">var</span> <span class="n">websocket_url</span> <span class="o">=</span> <span class="s2">&quot;ws://127.0.0.1:4008&quot;</span>
<span class="c1"># These are references to controls in the scene</span><span class="w"></span>
<span class="k">onready</span><span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">parent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_parent</span><span class="p">()</span><span class="w"></span>
<span class="k">onready</span><span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">parent</span><span class="o">.</span><span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;%ChatLog&quot;</span><span class="p">)</span><span class="w"></span>
<span class="k">onready</span><span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">txtEdit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">parent</span><span class="o">.</span><span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;%ChatInput&quot;</span><span class="p">)</span><span class="w"></span>
<span class="c1"># These are references to controls in the scene</span>
<span class="n">onready</span> <span class="n">var</span> <span class="n">parent</span> <span class="o">=</span> <span class="n">get_parent</span><span class="p">()</span>
<span class="n">onready</span> <span class="n">var</span> <span class="n">label</span> <span class="o">=</span> <span class="n">parent</span><span class="o">.</span><span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;%ChatLog&quot;</span><span class="p">)</span>
<span class="n">onready</span> <span class="n">var</span> <span class="n">txtEdit</span> <span class="o">=</span> <span class="n">parent</span><span class="o">.</span><span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;%ChatInput&quot;</span><span class="p">)</span>
<span class="k">onready</span><span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">room</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;/root/World/Room&quot;</span><span class="p">)</span><span class="w"></span>
<span class="n">onready</span> <span class="n">var</span> <span class="n">room</span> <span class="o">=</span> <span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;/root/World/Room&quot;</span><span class="p">)</span>
<span class="c1"># Our WebSocketClient instance</span><span class="w"></span>
<span class="k">var</span><span class="w"> </span><span class="n">_client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">WebSocketClient</span><span class="o">.</span><span class="n">new</span><span class="p">()</span><span class="w"></span>
<span class="c1"># Our WebSocketClient instance</span>
<span class="n">var</span> <span class="n">_client</span> <span class="o">=</span> <span class="n">WebSocketClient</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
<span class="k">var</span><span class="w"> </span><span class="n">is_connected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">false</span><span class="w"></span>
<span class="n">var</span> <span class="n">is_connected</span> <span class="o">=</span> <span class="n">false</span>
<span class="k">func</span><span class="w"> </span><span class="n">_ready</span><span class="p">():</span><span class="w"></span>
<span class="w"> </span><span class="c1"># Connect base signals to get notified of connection open, close, errors and messages</span><span class="w"></span>
<span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;connection_closed&quot;</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;_closed&quot;</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;connection_error&quot;</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;_closed&quot;</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;connection_established&quot;</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;_connected&quot;</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;data_received&quot;</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;_on_data&quot;</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Ready&#39;</span><span class="p">)</span><span class="w"></span>
<span class="n">func</span> <span class="n">_ready</span><span class="p">():</span>
<span class="c1"># Connect base signals to get notified of connection open, close, errors and messages</span>
<span class="n">_client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;connection_closed&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_closed&quot;</span><span class="p">)</span>
<span class="n">_client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;connection_error&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_closed&quot;</span><span class="p">)</span>
<span class="n">_client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;connection_established&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_connected&quot;</span><span class="p">)</span>
<span class="n">_client</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;data_received&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_on_data&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Ready&#39;</span><span class="p">)</span>
<span class="w"> </span><span class="c1"># Initiate connection to the given URL.</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">connect_to_url</span><span class="p">(</span><span class="n">websocket_url</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">err</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">OK</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Unable to connect&quot;</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">set_process</span><span class="p">(</span><span class="bp">false</span><span class="p">)</span><span class="w"></span>
<span class="c1"># Initiate connection to the given URL.</span>
<span class="n">var</span> <span class="n">err</span> <span class="o">=</span> <span class="n">_client</span><span class="o">.</span><span class="n">connect_to_url</span><span class="p">(</span><span class="n">websocket_url</span><span class="p">)</span>
<span class="k">if</span> <span class="n">err</span> <span class="o">!=</span> <span class="n">OK</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Unable to connect&quot;</span><span class="p">)</span>
<span class="n">set_process</span><span class="p">(</span><span class="n">false</span><span class="p">)</span>
<span class="k">func</span><span class="w"> </span><span class="n">_closed</span><span class="p">(</span><span class="n">was_clean</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">false</span><span class="p">):</span><span class="w"></span>
<span class="w"> </span><span class="c1"># was_clean will tell you if the disconnection was correctly notified</span><span class="w"></span>
<span class="w"> </span><span class="c1"># by the remote peer before closing the socket.</span><span class="w"></span>
<span class="w"> </span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Closed, clean: &quot;</span><span class="p">,</span><span class="w"> </span><span class="n">was_clean</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">set_process</span><span class="p">(</span><span class="bp">false</span><span class="p">)</span><span class="w"></span>
<span class="n">func</span> <span class="n">_closed</span><span class="p">(</span><span class="n">was_clean</span> <span class="o">=</span> <span class="n">false</span><span class="p">):</span>
<span class="c1"># was_clean will tell you if the disconnection was correctly notified</span>
<span class="c1"># by the remote peer before closing the socket.</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Closed, clean: &quot;</span><span class="p">,</span> <span class="n">was_clean</span><span class="p">)</span>
<span class="n">set_process</span><span class="p">(</span><span class="n">false</span><span class="p">)</span>
<span class="k">func</span><span class="w"> </span><span class="n">_connected</span><span class="p">(</span><span class="n">proto</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">):</span><span class="w"></span>
<span class="w"> </span><span class="n">is_connected</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">true</span><span class="w"></span>
<span class="w"> </span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Connected with protocol: &quot;</span><span class="p">,</span><span class="w"> </span><span class="n">proto</span><span class="p">)</span><span class="w"></span>
<span class="n">func</span> <span class="n">_connected</span><span class="p">(</span><span class="n">proto</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">):</span>
<span class="n">is_connected</span> <span class="o">=</span> <span class="n">true</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Connected with protocol: &quot;</span><span class="p">,</span> <span class="n">proto</span><span class="p">)</span>
<span class="k">func</span><span class="w"> </span><span class="n">_on_data</span><span class="p">():</span><span class="w"></span>
<span class="w"> </span><span class="c1"># This is called when Godot receives data from evennia</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">get_peer</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">get_packet</span><span class="p">()</span><span class="o">.</span><span class="n">get_string_from_utf8</span><span class="p">()</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">json_data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">JSON</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">result</span><span class="w"></span>
<span class="w"> </span><span class="c1"># Here we have the data from Evennia which is an array.</span><span class="w"></span>
<span class="w"> </span><span class="c1"># The first element will be text if it is a message</span><span class="w"></span>
<span class="w"> </span><span class="c1"># and would be the key of the OOB data you passed otherwise.</span><span class="w"></span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">&#39;text&#39;</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="c1"># In this case, we simply append the data as bbcode to our label.</span><span class="w"></span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span><span class="w"> </span><span class="n">label</span><span class="o">.</span><span class="n">append_bbcode</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="k">elif</span><span class="w"> </span><span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">&#39;coordinates&#39;</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="c1"># Dummy signal emitted if we wanted to handle the new coordinates</span><span class="w"></span>
<span class="w"> </span><span class="c1"># elsewhere in the project.</span><span class="w"></span>
<span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">emit_signal</span><span class="p">(</span><span class="s1">&#39;updated_coordinates&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="w"></span>
<span class="n">func</span> <span class="n">_on_data</span><span class="p">():</span>
<span class="c1"># This is called when Godot receives data from evennia</span>
<span class="n">var</span> <span class="n">data</span> <span class="o">=</span> <span class="n">_client</span><span class="o">.</span><span class="n">get_peer</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">get_packet</span><span class="p">()</span><span class="o">.</span><span class="n">get_string_from_utf8</span><span class="p">()</span>
<span class="n">var</span> <span class="n">json_data</span> <span class="o">=</span> <span class="n">JSON</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">result</span>
<span class="c1"># Here we have the data from Evennia which is an array.</span>
<span class="c1"># The first element will be text if it is a message</span>
<span class="c1"># and would be the key of the OOB data you passed otherwise.</span>
<span class="k">if</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;text&#39;</span><span class="p">:</span>
<span class="c1"># In this case, we simply append the data as bbcode to our label.</span>
<span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> <span class="n">label</span><span class="o">.</span><span class="n">append_bbcode</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;coordinates&#39;</span><span class="p">:</span>
<span class="c1"># Dummy signal emitted if we wanted to handle the new coordinates</span>
<span class="c1"># elsewhere in the project.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">emit_signal</span><span class="p">(</span><span class="s1">&#39;updated_coordinates&#39;</span><span class="p">,</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="w"> </span>
<span class="w"> </span><span class="c1"># We only print this for easier debugging.</span><span class="w"></span>
<span class="w"> </span><span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="w"></span>
<span class="k">func</span><span class="w"> </span><span class="n">_process</span><span class="p">(</span><span class="n">delta</span><span class="p">):</span><span class="w"></span>
<span class="w"> </span><span class="c1"># Required for websocket to properly react</span><span class="w"></span>
<span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">poll</span><span class="p">()</span><span class="w"></span>
<span class="c1"># We only print this for easier debugging.</span>
<span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="k">func</span><span class="w"> </span><span class="n">_on_button_send</span><span class="p">():</span><span class="w"></span>
<span class="w"> </span><span class="c1"># This is called when we press the button in the scene</span><span class="w"></span>
<span class="w"> </span><span class="c1"># with a connected signal, it sends the written message to Evennia.</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">txtEdit</span><span class="o">.</span><span class="n">text</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">msg_arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="n">msg</span><span class="p">],</span><span class="w"> </span><span class="p">{}]</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">msg_str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">JSON</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">msg_arr</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">get_peer</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">put_packet</span><span class="p">(</span><span class="n">msg_str</span><span class="o">.</span><span class="n">to_utf8</span><span class="p">())</span><span class="w"></span>
<span class="n">func</span> <span class="n">_process</span><span class="p">(</span><span class="n">delta</span><span class="p">):</span>
<span class="c1"># Required for websocket to properly react</span>
<span class="n">_client</span><span class="o">.</span><span class="n">poll</span><span class="p">()</span>
<span class="n">func</span> <span class="n">_on_button_send</span><span class="p">():</span>
<span class="c1"># This is called when we press the button in the scene</span>
<span class="c1"># with a connected signal, it sends the written message to Evennia.</span>
<span class="n">var</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">txtEdit</span><span class="o">.</span><span class="n">text</span>
<span class="n">var</span> <span class="n">msg_arr</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">,</span> <span class="p">[</span><span class="n">msg</span><span class="p">],</span> <span class="p">{}]</span>
<span class="n">var</span> <span class="n">msg_str</span> <span class="o">=</span> <span class="n">JSON</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">msg_arr</span><span class="p">)</span>
<span class="n">_client</span><span class="o">.</span><span class="n">get_peer</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">put_packet</span><span class="p">(</span><span class="n">msg_str</span><span class="o">.</span><span class="n">to_utf8</span><span class="p">())</span>
<span class="n">func</span> <span class="n">_notification</span><span class="p">(</span><span class="n">what</span><span class="p">):</span>
<span class="c1"># This is a special method that allows us to notify Evennia we are closing.</span>
<span class="k">if</span> <span class="n">what</span> <span class="o">==</span> <span class="n">MainLoop</span><span class="o">.</span><span class="n">NOTIFICATION_WM_QUIT_REQUEST</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_connected</span><span class="p">:</span>
<span class="n">var</span> <span class="n">msg_arr</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;quit&#39;</span><span class="p">],</span> <span class="p">{}]</span>
<span class="n">var</span> <span class="n">msg_str</span> <span class="o">=</span> <span class="n">JSON</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">msg_arr</span><span class="p">)</span>
<span class="n">_client</span><span class="o">.</span><span class="n">get_peer</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">put_packet</span><span class="p">(</span><span class="n">msg_str</span><span class="o">.</span><span class="n">to_utf8</span><span class="p">())</span>
<span class="n">get_tree</span><span class="p">()</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span> <span class="c1"># default behavior</span>
<span class="k">func</span><span class="w"> </span><span class="n">_notification</span><span class="p">(</span><span class="n">what</span><span class="p">):</span><span class="w"></span>
<span class="w"> </span><span class="c1"># This is a special method that allows us to notify Evennia we are closing.</span><span class="w"></span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">what</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">MainLoop</span><span class="o">.</span><span class="n">NOTIFICATION_WM_QUIT_REQUEST</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">is_connected</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">msg_arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="s1">&#39;quit&#39;</span><span class="p">],</span><span class="w"> </span><span class="p">{}]</span><span class="w"></span>
<span class="w"> </span><span class="k">var</span><span class="w"> </span><span class="n">msg_str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">JSON</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">msg_arr</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">_client</span><span class="o">.</span><span class="n">get_peer</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">put_packet</span><span class="p">(</span><span class="n">msg_str</span><span class="o">.</span><span class="n">to_utf8</span><span class="p">())</span><span class="w"></span>
<span class="w"> </span><span class="n">get_tree</span><span class="p">()</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span><span class="w"> </span><span class="c1"># default behavior</span><span class="w"></span>
</pre></div>
</div>
</section>
@ -306,65 +307,65 @@ The script can be attached to the root UI node.</p>
Note that the version is not final so the code may break.
It requires a WebSocketClientNode as a child of the root node.
The script can be attached to the root UI node.</p>
<div class="highlight-gdscript notranslate"><div class="highlight"><pre><span></span>extends Control
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">extends</span> <span class="n">Control</span>
# The URL to connect to, should be your mud.
var websocket_url = &quot;ws://127.0.0.1:4008&quot;
<span class="c1"># The URL to connect to, should be your mud.</span>
<span class="n">var</span> <span class="n">websocket_url</span> <span class="o">=</span> <span class="s2">&quot;ws://127.0.0.1:4008&quot;</span>
# These are references to controls in the scene
@onready
var label: RichTextLabel = get_node(&quot;%ChatLog&quot;)
@onready
var txtEdit: TextEdit = get_node(&quot;%ChatInput&quot;)
@onready
var websocket = get_node(&quot;WebSocketClient&quot;)
<span class="c1"># These are references to controls in the scene</span>
<span class="nd">@onready</span>
<span class="n">var</span> <span class="n">label</span><span class="p">:</span> <span class="n">RichTextLabel</span> <span class="o">=</span> <span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;%ChatLog&quot;</span><span class="p">)</span>
<span class="nd">@onready</span>
<span class="n">var</span> <span class="n">txtEdit</span><span class="p">:</span> <span class="n">TextEdit</span> <span class="o">=</span> <span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;%ChatInput&quot;</span><span class="p">)</span>
<span class="nd">@onready</span>
<span class="n">var</span> <span class="n">websocket</span> <span class="o">=</span> <span class="n">get_node</span><span class="p">(</span><span class="s2">&quot;WebSocketClient&quot;</span><span class="p">)</span>
func _ready():
# We connect the various signals
websocket.connect(&#39;connected_to_server&#39;, self._connected)
websocket.connect(&#39;connection_closed&#39;, self._closed)
websocket.connect(&#39;message_received&#39;, self._on_data)
# We attempt to connect and print out the error if we have one.
var result = websocket.connect_to_url(websocket_url)
if result != OK:
print(&#39;Could not connect:&#39; + str(result))
<span class="n">func</span> <span class="n">_ready</span><span class="p">():</span>
<span class="c1"># We connect the various signals</span>
<span class="n">websocket</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s1">&#39;connected_to_server&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connected</span><span class="p">)</span>
<span class="n">websocket</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s1">&#39;connection_closed&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_closed</span><span class="p">)</span>
<span class="n">websocket</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s1">&#39;message_received&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_data</span><span class="p">)</span>
<span class="c1"># We attempt to connect and print out the error if we have one.</span>
<span class="n">var</span> <span class="n">result</span> <span class="o">=</span> <span class="n">websocket</span><span class="o">.</span><span class="n">connect_to_url</span><span class="p">(</span><span class="n">websocket_url</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="o">!=</span> <span class="n">OK</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Could not connect:&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">))</span>
func _closed():
# This emits if the connection was closed by the remote host or unexpectedly
print(&#39;Connection closed.&#39;)
set_process(false)
<span class="n">func</span> <span class="n">_closed</span><span class="p">():</span>
<span class="c1"># This emits if the connection was closed by the remote host or unexpectedly</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Connection closed.&#39;</span><span class="p">)</span>
<span class="n">set_process</span><span class="p">(</span><span class="n">false</span><span class="p">)</span>
func _connected():
# This emits when the connection succeeds.
print(&#39;Connected!&#39;)
<span class="n">func</span> <span class="n">_connected</span><span class="p">():</span>
<span class="c1"># This emits when the connection succeeds.</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Connected!&#39;</span><span class="p">)</span>
func _on_data(data):
# This is called when Godot receives data from evennia
var json_data = JSON.parse_string(data)
# Here we have the data from Evennia which is an array.
# The first element will be text if it is a message
# and would be the key of the OOB data you passed otherwise.
if json_data[0] == &#39;text&#39;:
# In this case, we simply append the data as bbcode to our label.
for msg in json_data[1]: # Here we include a newline at every message.
label.append_text(&quot;\n&quot; + msg)
elif json_data[0] == &#39;coordinates&#39;:
# Dummy signal emitted if we wanted to handle the new coordinates
# elsewhere in the project.
self.emit_signal(&#39;updated_coordinates&#39;, json_data[1])
<span class="n">func</span> <span class="n">_on_data</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
<span class="c1"># This is called when Godot receives data from evennia</span>
<span class="n">var</span> <span class="n">json_data</span> <span class="o">=</span> <span class="n">JSON</span><span class="o">.</span><span class="n">parse_string</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="c1"># Here we have the data from Evennia which is an array.</span>
<span class="c1"># The first element will be text if it is a message</span>
<span class="c1"># and would be the key of the OOB data you passed otherwise.</span>
<span class="k">if</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;text&#39;</span><span class="p">:</span>
<span class="c1"># In this case, we simply append the data as bbcode to our label.</span>
<span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span> <span class="c1"># Here we include a newline at every message.</span>
<span class="n">label</span><span class="o">.</span><span class="n">append_text</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">msg</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;coordinates&#39;</span><span class="p">:</span>
<span class="c1"># Dummy signal emitted if we wanted to handle the new coordinates</span>
<span class="c1"># elsewhere in the project.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">emit_signal</span><span class="p">(</span><span class="s1">&#39;updated_coordinates&#39;</span><span class="p">,</span> <span class="n">json_data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
# We only print this for easier debugging.
print(data)
<span class="c1"># We only print this for easier debugging.</span>
<span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
func _on_button_pressed():
# This is called when we press the button in the scene
# with a connected signal, it sends the written message to Evennia.
var msg = txtEdit.text
var msg_arr = [&#39;text&#39;, [msg], {}]
var msg_str = JSON.stringify(msg_arr)
websocket.send(msg_str)
<span class="n">func</span> <span class="n">_on_button_pressed</span><span class="p">():</span>
<span class="c1"># This is called when we press the button in the scene</span>
<span class="c1"># with a connected signal, it sends the written message to Evennia.</span>
<span class="n">var</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">txtEdit</span><span class="o">.</span><span class="n">text</span>
<span class="n">var</span> <span class="n">msg_arr</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">,</span> <span class="p">[</span><span class="n">msg</span><span class="p">],</span> <span class="p">{}]</span>
<span class="n">var</span> <span class="n">msg_str</span> <span class="o">=</span> <span class="n">JSON</span><span class="o">.</span><span class="n">stringify</span><span class="p">(</span><span class="n">msg_arr</span><span class="p">)</span>
<span class="n">websocket</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg_str</span><span class="p">)</span>
</pre></div>
</div>

View file

@ -117,12 +117,12 @@
you can run <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">-l</span></code>, or start/reload the server with <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">start</span> <span class="pre">-l</span></code> or <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">reload</span> <span class="pre">-l</span></code>.</p>
<section id="check-your-requirements">
<h2>Check your Requirements<a class="headerlink" href="#check-your-requirements" title="Permalink to this headline"></a></h2>
<p>Any system that supports Python3.9+ should work.</p>
<p>Any system that supports Python3.10+ should work.</p>
<ul class="simple">
<li><p>Linux/Unix</p></li>
<li><p>Windows (Win7, Win8, Win10, Win11)</p></li>
<li><p>Mac OSX (&gt;10.5 recommended)</p></li>
<li><p><a class="reference external" href="https://www.python.org">Python</a> (v3.9, 3.10 and 3.11 are tested. 3.11 is recommended)</p></li>
<li><p><a class="reference external" href="https://www.python.org">Python</a> (3.10 and 3.11 are tested. 3.11 is recommended)</p></li>
<li><p><a class="reference external" href="https://twistedmatrix.com">Twisted</a> (v22.3+)</p>
<ul>
<li><p><a class="reference external" href="https://www.zope.org/Products/ZopeInterface">ZopeInterface</a> (v3.0+) - usually included in Twisted packages</p></li>

View file

@ -127,7 +127,7 @@ You can also <a class="reference internal" href="Installation-Git.html"><span c
<p>Installing Evennia doesnt make anything visible online. Apart from installation and updating, you can develop your game without any internet connection if you want to.</p>
</aside>
<ul class="simple">
<li><p>Evennia requires <a class="reference external" href="https://www.python.org/downloads/">Python</a> 3.9, 3.10 or 3.11 (recommended). Any OS that supports Python should work.</p>
<li><p>Evennia requires <a class="reference external" href="https://www.python.org/downloads/">Python</a> 3.10 or 3.11 (recommended). Any OS that supports Python should work.</p>
<ul>
<li><p><em>Windows</em>: In the installer, make sure you select <code class="docutils literal notranslate"><span class="pre">add</span> <span class="pre">python</span> <span class="pre">to</span> <span class="pre">path</span></code>. If you have multiple versions of Python installed, use <code class="docutils literal notranslate"><span class="pre">py</span></code> command instead of <code class="docutils literal notranslate"><span class="pre">python</span></code> to have Windows automatically use the latest.</p></li>
<li><p><em>Windows:</em> If you want to use Python 3.11, you must also install the <a class="reference external" href="https://aka.ms/vs/16/release/vs_buildtools.exe">Windows SDK</a>. Run the linked installer. Click the <code class="docutils literal notranslate"><span class="pre">Individual</span> <span class="pre">Components</span></code> tab at the top, then search and checkbox the latest <code class="docutils literal notranslate"><span class="pre">Windows</span> <span class="pre">10</span> <span class="pre">SDK</span></code> (also for older/newer Windows versions). Then click <code class="docutils literal notranslate"><span class="pre">Install</span></code>. If you have trouble, use Python 3.10 for now (2022).</p></li>

View file

@ -1996,7 +1996,6 @@
<span class="sd"> Usage:</span>
<span class="sd"> discord2chan[/switches]</span>
<span class="sd"> discord2chan[/switches] &lt;evennia_channel&gt; [= &lt;discord_channel_id&gt;]</span>
<span class="sd"> discord2chan/name &lt;bot_name&gt;</span>
<span class="sd"> Switches:</span>
<span class="sd"> /list - (or no switch) show existing Evennia &lt;-&gt; Discord links</span>
@ -2010,7 +2009,7 @@
<span class="sd"> This creates a link between an in-game Evennia channel and an external</span>
<span class="sd"> Discord channel. You must have a valid Discord bot application</span>
<span class="sd"> (https://discord.com/developers/applications)) and your DISCORD_BOT_TOKEN</span>
<span class="sd"> ( https://discord.com/developers/applications ) and your DISCORD_BOT_TOKEN</span>
<span class="sd"> must be added to settings. (Please put it in secret_settings !)</span>
<span class="sd"> &quot;&quot;&quot;</span>

View file

@ -98,14 +98,13 @@
<span class="p">)</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
<span class="kn">from</span> <span class="nn">twisted.internet</span> <span class="kn">import</span> <span class="n">protocol</span><span class="p">,</span> <span class="n">reactor</span><span class="p">,</span> <span class="n">ssl</span><span class="p">,</span> <span class="n">task</span>
<span class="kn">from</span> <span class="nn">twisted.web.client</span> <span class="kn">import</span> <span class="n">Agent</span><span class="p">,</span> <span class="n">FileBodyProducer</span><span class="p">,</span> <span class="n">readBody</span>
<span class="kn">from</span> <span class="nn">twisted.web.client</span> <span class="kn">import</span> <span class="n">Agent</span><span class="p">,</span> <span class="n">FileBodyProducer</span><span class="p">,</span> <span class="n">HTTPConnectionPool</span><span class="p">,</span> <span class="n">readBody</span>
<span class="kn">from</span> <span class="nn">twisted.web.http_headers</span> <span class="kn">import</span> <span class="n">Headers</span>
<span class="kn">from</span> <span class="nn">evennia.server.session</span> <span class="kn">import</span> <span class="n">Session</span>
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">get_evennia_version</span><span class="p">,</span> <span class="n">logger</span>
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">delay</span>
<span class="n">_AGENT</span> <span class="o">=</span> <span class="n">Agent</span><span class="p">(</span><span class="n">reactor</span><span class="p">)</span>
<span class="n">_BASE_SESSION_CLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_SESSION_CLASS</span><span class="p">)</span>
@ -128,6 +127,21 @@
<span class="n">OP_RESUME</span> <span class="o">=</span> <span class="mi">6</span>
<span class="c1"># create quiet HTTP pool to muffle GET/POST requests</span>
<div class="viewcode-block" id="QuietConnectionPool"><a class="viewcode-back" href="../../../../api/evennia.server.portal.discord.html#evennia.server.portal.discord.QuietConnectionPool">[docs]</a><span class="k">class</span> <span class="nc">QuietConnectionPool</span><span class="p">(</span><span class="n">HTTPConnectionPool</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A quiet version of the HTTPConnectionPool which sets the factory&#39;s</span>
<span class="sd"> `noisy` property to False to muffle log output.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="QuietConnectionPool.__init__"><a class="viewcode-back" href="../../../../api/evennia.server.portal.discord.html#evennia.server.portal.discord.QuietConnectionPool.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reactor</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">reactor</span><span class="p">,</span> <span class="n">persistent</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_factory</span><span class="o">.</span><span class="n">noisy</span> <span class="o">=</span> <span class="kc">False</span></div></div>
<span class="n">_AGENT</span> <span class="o">=</span> <span class="n">Agent</span><span class="p">(</span><span class="n">reactor</span><span class="p">,</span> <span class="n">pool</span><span class="o">=</span><span class="n">QuietConnectionPool</span><span class="p">(</span><span class="n">reactor</span><span class="p">))</span>
<div class="viewcode-block" id="should_retry"><a class="viewcode-back" href="../../../../api/evennia.server.portal.discord.html#evennia.server.portal.discord.should_retry">[docs]</a><span class="k">def</span> <span class="nf">should_retry</span><span class="p">(</span><span class="n">status_code</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Helper function to check if the request should be retried later.</span>
@ -156,11 +170,13 @@
<span class="n">initialDelay</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">factor</span> <span class="o">=</span> <span class="mf">1.5</span>
<span class="n">maxDelay</span> <span class="o">=</span> <span class="mi">60</span>
<span class="n">noisy</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">gateway</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">resume_url</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">do_retry</span> <span class="o">=</span> <span class="kc">True</span>
<div class="viewcode-block" id="DiscordWebsocketServerFactory.__init__"><a class="viewcode-back" href="../../../../api/evennia.server.portal.discord.html#evennia.server.portal.discord.DiscordWebsocketServerFactory.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sessionhandler</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;uid&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;uid&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sessionhandler</span> <span class="o">=</span> <span class="n">sessionhandler</span>
<span class="bp">self</span><span class="o">.</span><span class="n">port</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bot</span> <span class="o">=</span> <span class="kc">None</span></div>
@ -264,7 +280,7 @@
<span class="sd"> reason (str): The reason for the failure.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_retry</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bot</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_retry</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">bot</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">retry</span><span class="p">(</span><span class="n">connector</span><span class="p">)</span></div>
<div class="viewcode-block" id="DiscordWebsocketServerFactory.reconnect"><a class="viewcode-back" href="../../../../api/evennia.server.portal.discord.html#evennia.server.portal.discord.DiscordWebsocketServerFactory.reconnect">[docs]</a> <span class="k">def</span> <span class="nf">reconnect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
@ -273,8 +289,13 @@
<span class="sd"> de-registering the session and then reattaching a new one.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># set the retry flag to False so it doesn&#39;t attempt an automatic retry</span>
<span class="c1"># and duplicate the connection</span>
<span class="bp">self</span><span class="o">.</span><span class="n">do_retry</span> <span class="o">=</span> <span class="kc">False</span>
<span class="c1"># disconnect everything</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bot</span><span class="o">.</span><span class="n">transport</span><span class="o">.</span><span class="n">loseConnection</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">server_disconnect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bot</span><span class="p">)</span>
<span class="c1"># set up the reconnection</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">resume_url</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">resume_url</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">gateway</span><span class="p">:</span>
@ -293,12 +314,14 @@
<span class="c1"># get the gateway URL from Discord</span>
<span class="bp">self</span><span class="o">.</span><span class="n">get_gateway_url</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># set the retry flag so we maintain this connection</span>
<span class="bp">self</span><span class="o">.</span><span class="n">do_retry</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">connectWS</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="DiscordClient"><a class="viewcode-back" href="../../../../api/evennia.server.portal.discord.html#evennia.server.portal.discord.DiscordClient">[docs]</a><span class="k">class</span> <span class="nc">DiscordClient</span><span class="p">(</span><span class="n">WebSocketClientProtocol</span><span class="p">,</span> <span class="n">_BASE_SESSION_CLASS</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Implements the grapevine client</span>
<span class="sd"> Implements the Discord client</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">nextHeartbeatCall</span> <span class="o">=</span> <span class="kc">None</span>
@ -347,7 +370,7 @@
<span class="k">if</span> <span class="n">seqid</span> <span class="o">:=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;s&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">last_sequence</span> <span class="o">=</span> <span class="n">seqid</span>
<span class="c1"># not sure if that error json format is for websockets</span>
<span class="c1"># not sure if that error json format is for websockets, so</span>
<span class="c1"># check for it just in case</span>
<span class="k">if</span> <span class="s2">&quot;errors&quot;</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle_error</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>

View file

@ -313,14 +313,14 @@
<span class="k">def</span> <span class="nf">reduce</span><span class="p">(</span><span class="n">function</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="n">initial</span><span class="o">=</span><span class="n">_initial_missing</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> reduce(function, sequence[, initial]) -&gt; value</span>
<span class="sd"> reduce(function, iterable[, initial]) -&gt; value</span>
<span class="sd"> Apply a function of two arguments cumulatively to the items of a sequence,</span>
<span class="sd"> from left to right, so as to reduce the sequence to a single value.</span>
<span class="sd"> For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates</span>
<span class="sd"> Apply a function of two arguments cumulatively to the items of a sequence</span>
<span class="sd"> or iterable, from left to right, so as to reduce the iterable to a single</span>
<span class="sd"> value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates</span>
<span class="sd"> ((((1+2)+3)+4)+5). If initial is present, it is placed before the items</span>
<span class="sd"> of the sequence in the calculation, and serves as a default when the</span>
<span class="sd"> sequence is empty.</span>
<span class="sd"> of the iterable in the calculation, and serves as a default when the</span>
<span class="sd"> iterable is empty.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">it</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span>
@ -329,7 +329,8 @@
<span class="k">try</span><span class="p">:</span>
<span class="n">value</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">it</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;reduce() of empty sequence with no initial value&quot;</span><span class="p">)</span> <span class="kn">from</span> <span class="bp">None</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
<span class="s2">&quot;reduce() of empty iterable with no initial value&quot;</span><span class="p">)</span> <span class="kn">from</span> <span class="bp">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">initial</span>
@ -989,24 +990,11 @@
<span class="bp">self</span><span class="o">.</span><span class="n">dispatcher</span> <span class="o">=</span> <span class="n">singledispatch</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">func</span> <span class="o">=</span> <span class="n">func</span>
<span class="c1"># bpo-45678: special-casing for classmethod/staticmethod in Python &lt;=3.9,</span>
<span class="c1"># as functools.update_wrapper doesn&#39;t work properly in singledispatchmethod.__get__</span>
<span class="c1"># if it is applied to an unbound classmethod/staticmethod</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="p">(</span><span class="nb">staticmethod</span><span class="p">,</span> <span class="nb">classmethod</span><span class="p">)):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_wrapped_func</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="vm">__func__</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_wrapped_func</span> <span class="o">=</span> <span class="n">func</span>
<span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">cls</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;generic_method.register(cls, func) -&gt; func</span>
<span class="sd"> Registers a new implementation for the given *cls* on a *generic_method*.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># bpo-39679: in Python &lt;= 3.9, classmethods and staticmethods don&#39;t</span>
<span class="c1"># inherit __annotations__ of the wrapped function (fixed in 3.10+ as</span>
<span class="c1"># a side-effect of bpo-43682) but we need that for annotation-derived</span>
<span class="c1"># singledispatches. So we add that just-in-time here.</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="p">(</span><span class="nb">staticmethod</span><span class="p">,</span> <span class="nb">classmethod</span><span class="p">)):</span>
<span class="bp">cls</span><span class="o">.</span><span class="vm">__annotations__</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__func__</span><span class="p">,</span> <span class="s1">&#39;__annotations__&#39;</span><span class="p">,</span> <span class="p">{})</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispatcher</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">func</span><span class="o">=</span><span class="n">method</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
@ -1016,7 +1004,7 @@
<span class="n">_method</span><span class="o">.</span><span class="n">__isabstractmethod__</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__isabstractmethod__</span>
<span class="n">_method</span><span class="o">.</span><span class="n">register</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">register</span>
<span class="n">update_wrapper</span><span class="p">(</span><span class="n">_method</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrapped_func</span><span class="p">)</span>
<span class="n">update_wrapper</span><span class="p">(</span><span class="n">_method</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">)</span>
<span class="k">return</span> <span class="n">_method</span>
<span class="nd">@property</span>

View file

@ -375,6 +375,7 @@
<li><a href="evennia/web/website/views/mixins.html">evennia.web.website.views.mixins</a></li>
<li><a href="evennia/web/website/views/objects.html">evennia.web.website.views.objects</a></li>
</ul><li><a href="functools.html">functools</a></li>
<li><a href="re.html">re</a></li>
<li><a href="rest_framework/test.html">rest_framework.test</a></li>
</ul>

View file

@ -0,0 +1,488 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>re &#8212; Evennia 1.0-dev 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>
<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 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">re</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
<div class="documentwrapper">
<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><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="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Versions</h3>
<ul>
<li><a href="re.html">1.0-dev (develop branch)</a></li>
<ul>
<li><a href="../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for re</h1><div class="highlight"><pre>
<span></span><span class="c1">#</span>
<span class="c1"># Secret Labs&#39; Regular Expression Engine</span>
<span class="c1">#</span>
<span class="c1"># re-compatible interface for the sre matching engine</span>
<span class="c1">#</span>
<span class="c1"># Copyright (c) 1998-2001 by Secret Labs AB. All rights reserved.</span>
<span class="c1">#</span>
<span class="c1"># This version of the SRE library can be redistributed under CNRI&#39;s</span>
<span class="c1"># Python 1.6 license. For any other use, please contact Secret Labs</span>
<span class="c1"># AB (info@pythonware.com).</span>
<span class="c1">#</span>
<span class="c1"># Portions of this engine have been developed in cooperation with</span>
<span class="c1"># CNRI. Hewlett-Packard provided funding for 1.6 integration and</span>
<span class="c1"># other compatibility work.</span>
<span class="c1">#</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Support for regular expressions (RE).</span>
<span class="sd">This module provides regular expression matching operations similar to</span>
<span class="sd">those found in Perl. It supports both 8-bit and Unicode strings; both</span>
<span class="sd">the pattern and the strings being processed can contain null bytes and</span>
<span class="sd">characters outside the US ASCII range.</span>
<span class="sd">Regular expressions can contain both special and ordinary characters.</span>
<span class="sd">Most ordinary characters, like &quot;A&quot;, &quot;a&quot;, or &quot;0&quot;, are the simplest</span>
<span class="sd">regular expressions; they simply match themselves. You can</span>
<span class="sd">concatenate ordinary characters, so last matches the string &#39;last&#39;.</span>
<span class="sd">The special characters are:</span>
<span class="sd"> &quot;.&quot; Matches any character except a newline.</span>
<span class="sd"> &quot;^&quot; Matches the start of the string.</span>
<span class="sd"> &quot;$&quot; Matches the end of the string or just before the newline at</span>
<span class="sd"> the end of the string.</span>
<span class="sd"> &quot;*&quot; Matches 0 or more (greedy) repetitions of the preceding RE.</span>
<span class="sd"> Greedy means that it will match as many repetitions as possible.</span>
<span class="sd"> &quot;+&quot; Matches 1 or more (greedy) repetitions of the preceding RE.</span>
<span class="sd"> &quot;?&quot; Matches 0 or 1 (greedy) of the preceding RE.</span>
<span class="sd"> *?,+?,?? Non-greedy versions of the previous three special characters.</span>
<span class="sd"> {m,n} Matches from m to n repetitions of the preceding RE.</span>
<span class="sd"> {m,n}? Non-greedy version of the above.</span>
<span class="sd"> &quot;\\&quot; Either escapes special characters or signals a special sequence.</span>
<span class="sd"> [] Indicates a set of characters.</span>
<span class="sd"> A &quot;^&quot; as the first character indicates a complementing set.</span>
<span class="sd"> &quot;|&quot; A|B, creates an RE that will match either A or B.</span>
<span class="sd"> (...) Matches the RE inside the parentheses.</span>
<span class="sd"> The contents can be retrieved or matched later in the string.</span>
<span class="sd"> (?aiLmsux) The letters set the corresponding flags defined below.</span>
<span class="sd"> (?:...) Non-grouping version of regular parentheses.</span>
<span class="sd"> (?P&lt;name&gt;...) The substring matched by the group is accessible by name.</span>
<span class="sd"> (?P=name) Matches the text matched earlier by the group named name.</span>
<span class="sd"> (?#...) A comment; ignored.</span>
<span class="sd"> (?=...) Matches if ... matches next, but doesn&#39;t consume the string.</span>
<span class="sd"> (?!...) Matches if ... doesn&#39;t match next.</span>
<span class="sd"> (?&lt;=...) Matches if preceded by ... (must be fixed length).</span>
<span class="sd"> (?&lt;!...) Matches if not preceded by ... (must be fixed length).</span>
<span class="sd"> (?(id/name)yes|no) Matches yes pattern if the group with id/name matched,</span>
<span class="sd"> the (optional) no pattern otherwise.</span>
<span class="sd">The special sequences consist of &quot;\\&quot; and a character from the list</span>
<span class="sd">below. If the ordinary character is not on the list, then the</span>
<span class="sd">resulting RE will match the second character.</span>
<span class="sd"> \number Matches the contents of the group of the same number.</span>
<span class="sd"> \A Matches only at the start of the string.</span>
<span class="sd"> \Z Matches only at the end of the string.</span>
<span class="sd"> \b Matches the empty string, but only at the start or end of a word.</span>
<span class="sd"> \B Matches the empty string, but not at the start or end of a word.</span>
<span class="sd"> \d Matches any decimal digit; equivalent to the set [0-9] in</span>
<span class="sd"> bytes patterns or string patterns with the ASCII flag.</span>
<span class="sd"> In string patterns without the ASCII flag, it will match the whole</span>
<span class="sd"> range of Unicode digits.</span>
<span class="sd"> \D Matches any non-digit character; equivalent to [^\d].</span>
<span class="sd"> \s Matches any whitespace character; equivalent to [ \t\n\r\f\v] in</span>
<span class="sd"> bytes patterns or string patterns with the ASCII flag.</span>
<span class="sd"> In string patterns without the ASCII flag, it will match the whole</span>
<span class="sd"> range of Unicode whitespace characters.</span>
<span class="sd"> \S Matches any non-whitespace character; equivalent to [^\s].</span>
<span class="sd"> \w Matches any alphanumeric character; equivalent to [a-zA-Z0-9_]</span>
<span class="sd"> in bytes patterns or string patterns with the ASCII flag.</span>
<span class="sd"> In string patterns without the ASCII flag, it will match the</span>
<span class="sd"> range of Unicode alphanumeric characters (letters plus digits</span>
<span class="sd"> plus underscore).</span>
<span class="sd"> With LOCALE, it will match the set [0-9_] plus characters defined</span>
<span class="sd"> as letters for the current locale.</span>
<span class="sd"> \W Matches the complement of \w.</span>
<span class="sd"> \\ Matches a literal backslash.</span>
<span class="sd">This module exports the following functions:</span>
<span class="sd"> match Match a regular expression pattern to the beginning of a string.</span>
<span class="sd"> fullmatch Match a regular expression pattern to all of a string.</span>
<span class="sd"> search Search a string for the presence of a pattern.</span>
<span class="sd"> sub Substitute occurrences of a pattern found in a string.</span>
<span class="sd"> subn Same as sub, but also return the number of substitutions made.</span>
<span class="sd"> split Split a string by the occurrences of a pattern.</span>
<span class="sd"> findall Find all occurrences of a pattern in a string.</span>
<span class="sd"> finditer Return an iterator yielding a Match object for each match.</span>
<span class="sd"> compile Compile a pattern into a Pattern object.</span>
<span class="sd"> purge Clear the regular expression cache.</span>
<span class="sd"> escape Backslash all non-alphanumerics in a string.</span>
<span class="sd">Each function other than purge and escape can take an optional &#39;flags&#39; argument</span>
<span class="sd">consisting of one or more of the following module constants, joined by &quot;|&quot;.</span>
<span class="sd">A, L, and U are mutually exclusive.</span>
<span class="sd"> A ASCII For string patterns, make \w, \W, \b, \B, \d, \D</span>
<span class="sd"> match the corresponding ASCII character categories</span>
<span class="sd"> (rather than the whole Unicode categories, which is the</span>
<span class="sd"> default).</span>
<span class="sd"> For bytes patterns, this flag is the only available</span>
<span class="sd"> behaviour and needn&#39;t be specified.</span>
<span class="sd"> I IGNORECASE Perform case-insensitive matching.</span>
<span class="sd"> L LOCALE Make \w, \W, \b, \B, dependent on the current locale.</span>
<span class="sd"> M MULTILINE &quot;^&quot; matches the beginning of lines (after a newline)</span>
<span class="sd"> as well as the string.</span>
<span class="sd"> &quot;$&quot; matches the end of lines (before a newline) as well</span>
<span class="sd"> as the end of the string.</span>
<span class="sd"> S DOTALL &quot;.&quot; matches any character at all, including the newline.</span>
<span class="sd"> X VERBOSE Ignore whitespace and comments for nicer looking RE&#39;s.</span>
<span class="sd"> U UNICODE For compatibility only. Ignored for string patterns (it</span>
<span class="sd"> is the default), and forbidden for bytes patterns.</span>
<span class="sd">This module also defines an exception &#39;error&#39;.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">enum</span>
<span class="kn">import</span> <span class="nn">sre_compile</span>
<span class="kn">import</span> <span class="nn">sre_parse</span>
<span class="kn">import</span> <span class="nn">functools</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">_locale</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="n">_locale</span> <span class="o">=</span> <span class="kc">None</span>
<span class="c1"># public symbols</span>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span>
<span class="s2">&quot;match&quot;</span><span class="p">,</span> <span class="s2">&quot;fullmatch&quot;</span><span class="p">,</span> <span class="s2">&quot;search&quot;</span><span class="p">,</span> <span class="s2">&quot;sub&quot;</span><span class="p">,</span> <span class="s2">&quot;subn&quot;</span><span class="p">,</span> <span class="s2">&quot;split&quot;</span><span class="p">,</span>
<span class="s2">&quot;findall&quot;</span><span class="p">,</span> <span class="s2">&quot;finditer&quot;</span><span class="p">,</span> <span class="s2">&quot;compile&quot;</span><span class="p">,</span> <span class="s2">&quot;purge&quot;</span><span class="p">,</span> <span class="s2">&quot;template&quot;</span><span class="p">,</span> <span class="s2">&quot;escape&quot;</span><span class="p">,</span>
<span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="s2">&quot;Pattern&quot;</span><span class="p">,</span> <span class="s2">&quot;Match&quot;</span><span class="p">,</span> <span class="s2">&quot;A&quot;</span><span class="p">,</span> <span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;L&quot;</span><span class="p">,</span> <span class="s2">&quot;M&quot;</span><span class="p">,</span> <span class="s2">&quot;S&quot;</span><span class="p">,</span> <span class="s2">&quot;X&quot;</span><span class="p">,</span> <span class="s2">&quot;U&quot;</span><span class="p">,</span>
<span class="s2">&quot;ASCII&quot;</span><span class="p">,</span> <span class="s2">&quot;IGNORECASE&quot;</span><span class="p">,</span> <span class="s2">&quot;LOCALE&quot;</span><span class="p">,</span> <span class="s2">&quot;MULTILINE&quot;</span><span class="p">,</span> <span class="s2">&quot;DOTALL&quot;</span><span class="p">,</span> <span class="s2">&quot;VERBOSE&quot;</span><span class="p">,</span>
<span class="s2">&quot;UNICODE&quot;</span><span class="p">,</span>
<span class="p">]</span>
<span class="n">__version__</span> <span class="o">=</span> <span class="s2">&quot;2.2.1&quot;</span>
<span class="k">class</span> <span class="nc">RegexFlag</span><span class="p">(</span><span class="n">enum</span><span class="o">.</span><span class="n">IntFlag</span><span class="p">):</span>
<span class="n">ASCII</span> <span class="o">=</span> <span class="n">A</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_ASCII</span> <span class="c1"># assume ascii &quot;locale&quot;</span>
<span class="n">IGNORECASE</span> <span class="o">=</span> <span class="n">I</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_IGNORECASE</span> <span class="c1"># ignore case</span>
<span class="n">LOCALE</span> <span class="o">=</span> <span class="n">L</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_LOCALE</span> <span class="c1"># assume current 8-bit locale</span>
<span class="n">UNICODE</span> <span class="o">=</span> <span class="n">U</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_UNICODE</span> <span class="c1"># assume unicode &quot;locale&quot;</span>
<span class="n">MULTILINE</span> <span class="o">=</span> <span class="n">M</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_MULTILINE</span> <span class="c1"># make anchors look for newline</span>
<span class="n">DOTALL</span> <span class="o">=</span> <span class="n">S</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_DOTALL</span> <span class="c1"># make dot match newline</span>
<span class="n">VERBOSE</span> <span class="o">=</span> <span class="n">X</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_VERBOSE</span> <span class="c1"># ignore whitespace and comments</span>
<span class="c1"># sre extensions (experimental, don&#39;t rely on these)</span>
<span class="n">TEMPLATE</span> <span class="o">=</span> <span class="n">T</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_TEMPLATE</span> <span class="c1"># disable backtracking</span>
<span class="n">DEBUG</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">SRE_FLAG_DEBUG</span> <span class="c1"># dump pattern after compilation</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_name_</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="sa">f</span><span class="s1">&#39;re.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_name_</span><span class="si">}</span><span class="s1">&#39;</span>
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_value_</span>
<span class="n">members</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">negative</span> <span class="o">=</span> <span class="n">value</span> <span class="o">&lt;</span> <span class="mi">0</span>
<span class="k">if</span> <span class="n">negative</span><span class="p">:</span>
<span class="n">value</span> <span class="o">=</span> <span class="o">~</span><span class="n">value</span>
<span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">:</span>
<span class="k">if</span> <span class="n">value</span> <span class="o">&amp;</span> <span class="n">m</span><span class="o">.</span><span class="n">_value_</span><span class="p">:</span>
<span class="n">value</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">m</span><span class="o">.</span><span class="n">_value_</span>
<span class="n">members</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;re.</span><span class="si">{</span><span class="n">m</span><span class="o">.</span><span class="n">_name_</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
<span class="n">members</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="n">res</span> <span class="o">=</span> <span class="s1">&#39;|&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">members</span><span class="p">)</span>
<span class="k">if</span> <span class="n">negative</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">members</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">res</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;~(</span><span class="si">{</span><span class="n">res</span><span class="si">}</span><span class="s1">)&#39;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">res</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;~</span><span class="si">{</span><span class="n">res</span><span class="si">}</span><span class="s1">&#39;</span>
<span class="k">return</span> <span class="n">res</span>
<span class="fm">__str__</span> <span class="o">=</span> <span class="nb">object</span><span class="o">.</span><span class="fm">__str__</span>
<span class="nb">globals</span><span class="p">()</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">RegexFlag</span><span class="o">.</span><span class="n">__members__</span><span class="p">)</span>
<span class="c1"># sre exception</span>
<span class="n">error</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">error</span>
<span class="c1"># --------------------------------------------------------------------</span>
<span class="c1"># public interface</span>
<span class="k">def</span> <span class="nf">match</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Try to apply the pattern at the start of the string, returning</span>
<span class="sd"> a Match object, or None if no match was found.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">fullmatch</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Try to apply the pattern to all of the string, returning</span>
<span class="sd"> a Match object, or None if no match was found.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span><span class="o">.</span><span class="n">fullmatch</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">search</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Scan through string looking for a match to the pattern, returning</span>
<span class="sd"> a Match object, or None if no match was found.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">sub</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">repl</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return the string obtained by replacing the leftmost</span>
<span class="sd"> non-overlapping occurrences of the pattern in string by the</span>
<span class="sd"> replacement repl. repl can be either a string or a callable;</span>
<span class="sd"> if a string, backslash escapes in it are processed. If it is</span>
<span class="sd"> a callable, it&#39;s passed the Match object and must return</span>
<span class="sd"> a replacement string to be used.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="n">repl</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">subn</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">repl</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return a 2-tuple containing (new_string, number).</span>
<span class="sd"> new_string is the string obtained by replacing the leftmost</span>
<span class="sd"> non-overlapping occurrences of the pattern in the source</span>
<span class="sd"> string by the replacement repl. number is the number of</span>
<span class="sd"> substitutions that were made. repl can be either a string or a</span>
<span class="sd"> callable; if a string, backslash escapes in it are processed.</span>
<span class="sd"> If it is a callable, it&#39;s passed the Match object and must</span>
<span class="sd"> return a replacement string to be used.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span><span class="o">.</span><span class="n">subn</span><span class="p">(</span><span class="n">repl</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">split</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">maxsplit</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Split the source string by the occurrences of the pattern,</span>
<span class="sd"> returning a list containing the resulting substrings. If</span>
<span class="sd"> capturing parentheses are used in pattern, then the text of all</span>
<span class="sd"> groups in the pattern are also returned as part of the resulting</span>
<span class="sd"> list. If maxsplit is nonzero, at most maxsplit splits occur,</span>
<span class="sd"> and the remainder of the string is returned as the final element</span>
<span class="sd"> of the list.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">maxsplit</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">findall</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return a list of all non-overlapping matches in the string.</span>
<span class="sd"> If one or more capturing groups are present in the pattern, return</span>
<span class="sd"> a list of groups; this will be a list of tuples if the pattern</span>
<span class="sd"> has more than one group.</span>
<span class="sd"> Empty matches are included in the result.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">finditer</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return an iterator over all non-overlapping matches in the</span>
<span class="sd"> string. For each match, the iterator returns a Match object.</span>
<span class="sd"> Empty matches are included in the result.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span><span class="o">.</span><span class="n">finditer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="s2">&quot;Compile a regular expression pattern, returning a Pattern object.&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">purge</span><span class="p">():</span>
<span class="s2">&quot;Clear the regular expression caches&quot;</span>
<span class="n">_cache</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="n">_compile_repl</span><span class="o">.</span><span class="n">cache_clear</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">template</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="s2">&quot;Compile a template pattern, returning a Pattern object&quot;</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="o">|</span><span class="n">T</span><span class="p">)</span>
<span class="c1"># SPECIAL_CHARS</span>
<span class="c1"># closing &#39;)&#39;, &#39;}&#39; and &#39;]&#39;</span>
<span class="c1"># &#39;-&#39; (a range in character set)</span>
<span class="c1"># &#39;&amp;&#39;, &#39;~&#39;, (extended character set operations)</span>
<span class="c1"># &#39;#&#39; (comment) and WHITESPACE (ignored) in verbose mode</span>
<span class="n">_special_chars_map</span> <span class="o">=</span> <span class="p">{</span><span class="n">i</span><span class="p">:</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="sa">b</span><span class="s1">&#39;()[]</span><span class="si">{}</span><span class="s1">?*+-|^$</span><span class="se">\\</span><span class="s1">.&amp;~# </span><span class="se">\t\n\r\v\f</span><span class="s1">&#39;</span><span class="p">}</span>
<span class="k">def</span> <span class="nf">escape</span><span class="p">(</span><span class="n">pattern</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Escape special characters in a string.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="k">return</span> <span class="n">pattern</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">_special_chars_map</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">pattern</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="s1">&#39;latin1&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">pattern</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">_special_chars_map</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;latin1&#39;</span><span class="p">)</span>
<span class="n">Pattern</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">sre_compile</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
<span class="n">Match</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">sre_compile</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">))</span>
<span class="c1"># --------------------------------------------------------------------</span>
<span class="c1"># internals</span>
<span class="n">_cache</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># ordered!</span>
<span class="n">_MAXCACHE</span> <span class="o">=</span> <span class="mi">512</span>
<span class="k">def</span> <span class="nf">_compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span>
<span class="c1"># internal: compile pattern</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">flags</span><span class="p">,</span> <span class="n">RegexFlag</span><span class="p">):</span>
<span class="n">flags</span> <span class="o">=</span> <span class="n">flags</span><span class="o">.</span><span class="n">value</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="n">_cache</span><span class="p">[</span><span class="nb">type</span><span class="p">(</span><span class="n">pattern</span><span class="p">),</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">]</span>
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">Pattern</span><span class="p">):</span>
<span class="k">if</span> <span class="n">flags</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;cannot process flags argument with a compiled pattern&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">pattern</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">isstring</span><span class="p">(</span><span class="n">pattern</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;first argument must be string or compiled pattern&quot;</span><span class="p">)</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">DEBUG</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">_cache</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="n">_MAXCACHE</span><span class="p">:</span>
<span class="c1"># Drop the oldest item</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">del</span> <span class="n">_cache</span><span class="p">[</span><span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">_cache</span><span class="p">))]</span>
<span class="k">except</span> <span class="p">(</span><span class="ne">StopIteration</span><span class="p">,</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">):</span>
<span class="k">pass</span>
<span class="n">_cache</span><span class="p">[</span><span class="nb">type</span><span class="p">(</span><span class="n">pattern</span><span class="p">),</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">flags</span><span class="p">]</span> <span class="o">=</span> <span class="n">p</span>
<span class="k">return</span> <span class="n">p</span>
<span class="nd">@functools</span><span class="o">.</span><span class="n">lru_cache</span><span class="p">(</span><span class="n">_MAXCACHE</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_compile_repl</span><span class="p">(</span><span class="n">repl</span><span class="p">,</span> <span class="n">pattern</span><span class="p">):</span>
<span class="c1"># internal: compile replacement pattern</span>
<span class="k">return</span> <span class="n">sre_parse</span><span class="o">.</span><span class="n">parse_template</span><span class="p">(</span><span class="n">repl</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">match</span><span class="p">,</span> <span class="n">template</span><span class="p">):</span>
<span class="c1"># internal: Match.expand implementation hook</span>
<span class="n">template</span> <span class="o">=</span> <span class="n">sre_parse</span><span class="o">.</span><span class="n">parse_template</span><span class="p">(</span><span class="n">template</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span>
<span class="k">return</span> <span class="n">sre_parse</span><span class="o">.</span><span class="n">expand_template</span><span class="p">(</span><span class="n">template</span><span class="p">,</span> <span class="n">match</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_subx</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">template</span><span class="p">):</span>
<span class="c1"># internal: Pattern.sub/subn implementation helper</span>
<span class="n">template</span> <span class="o">=</span> <span class="n">_compile_repl</span><span class="p">(</span><span class="n">template</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">template</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">template</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="c1"># literal replacement</span>
<span class="k">return</span> <span class="n">template</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="k">def</span> <span class="nf">filter</span><span class="p">(</span><span class="n">match</span><span class="p">,</span> <span class="n">template</span><span class="o">=</span><span class="n">template</span><span class="p">):</span>
<span class="k">return</span> <span class="n">sre_parse</span><span class="o">.</span><span class="n">expand_template</span><span class="p">(</span><span class="n">template</span><span class="p">,</span> <span class="n">match</span><span class="p">)</span>
<span class="k">return</span> <span class="nb">filter</span>
<span class="c1"># register myself for pickling</span>
<span class="kn">import</span> <span class="nn">copyreg</span>
<span class="k">def</span> <span class="nf">_pickle</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
<span class="k">return</span> <span class="n">_compile</span><span class="p">,</span> <span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">pattern</span><span class="p">,</span> <span class="n">p</span><span class="o">.</span><span class="n">flags</span><span class="p">)</span>
<span class="n">copyreg</span><span class="o">.</span><span class="n">pickle</span><span class="p">(</span><span class="n">Pattern</span><span class="p">,</span> <span class="n">_pickle</span><span class="p">,</span> <span class="n">_compile</span><span class="p">)</span>
<span class="c1"># --------------------------------------------------------------------</span>
<span class="c1"># experimental stuff (see python-dev discussions for details)</span>
<span class="k">class</span> <span class="nc">Scanner</span><span class="p">:</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lexicon</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="kn">from</span> <span class="nn">sre_constants</span> <span class="kn">import</span> <span class="n">BRANCH</span><span class="p">,</span> <span class="n">SUBPATTERN</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">flags</span><span class="p">,</span> <span class="n">RegexFlag</span><span class="p">):</span>
<span class="n">flags</span> <span class="o">=</span> <span class="n">flags</span><span class="o">.</span><span class="n">value</span>
<span class="bp">self</span><span class="o">.</span><span class="n">lexicon</span> <span class="o">=</span> <span class="n">lexicon</span>
<span class="c1"># combine phrases into a compound pattern</span>
<span class="n">p</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">sre_parse</span><span class="o">.</span><span class="n">State</span><span class="p">()</span>
<span class="n">s</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">flags</span>
<span class="k">for</span> <span class="n">phrase</span><span class="p">,</span> <span class="n">action</span> <span class="ow">in</span> <span class="n">lexicon</span><span class="p">:</span>
<span class="n">gid</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">opengroup</span><span class="p">()</span>
<span class="n">p</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sre_parse</span><span class="o">.</span><span class="n">SubPattern</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="p">[</span>
<span class="p">(</span><span class="n">SUBPATTERN</span><span class="p">,</span> <span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">sre_parse</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">phrase</span><span class="p">,</span> <span class="n">flags</span><span class="p">))),</span>
<span class="p">]))</span>
<span class="n">s</span><span class="o">.</span><span class="n">closegroup</span><span class="p">(</span><span class="n">gid</span><span class="p">,</span> <span class="n">p</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">sre_parse</span><span class="o">.</span><span class="n">SubPattern</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="p">[(</span><span class="n">BRANCH</span><span class="p">,</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">p</span><span class="p">))])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">scanner</span> <span class="o">=</span> <span class="n">sre_compile</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">append</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">append</span>
<span class="n">match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scanner</span><span class="o">.</span><span class="n">scanner</span><span class="p">(</span><span class="n">string</span><span class="p">)</span><span class="o">.</span><span class="n">match</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">m</span> <span class="o">=</span> <span class="n">match</span><span class="p">()</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">m</span><span class="p">:</span>
<span class="k">break</span>
<span class="n">j</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">end</span><span class="p">()</span>
<span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="n">j</span><span class="p">:</span>
<span class="k">break</span>
<span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lexicon</span><span class="p">[</span><span class="n">m</span><span class="o">.</span><span class="n">lastindex</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
<span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">action</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">match</span> <span class="o">=</span> <span class="n">m</span>
<span class="n">action</span> <span class="o">=</span> <span class="n">action</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">())</span>
<span class="k">if</span> <span class="n">action</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">append</span><span class="p">(</span><span class="n">action</span><span class="p">)</span>
<span class="n">i</span> <span class="o">=</span> <span class="n">j</span>
<span class="k">return</span> <span class="n">result</span><span class="p">,</span> <span class="n">string</span><span class="p">[</span><span class="n">i</span><span class="p">:]</span>
</pre></div>
</div>
</div>
</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 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">re</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2022, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>

View file

@ -5,7 +5,7 @@
> Not released yet
> 2019-2022 develop branch (WIP)
Increase requirements: Django 4.1+, Twisted 22.10+ Python 3.9, 3.10, 3.11. PostgreSQL 11+.
Increase requirements: Django 4.1+, Twisted 22.10+ Python 3.10, 3.11. PostgreSQL 11+.
- New `drop:holds()` lock default to limit dropping nonsensical things. Access check
defaults to True for backwards-compatibility in 0.9, will be False in 1.0

View file

@ -53,7 +53,7 @@ You must also remove the protocol from the `connect_to_url` call made
within the `_ready` function.
```
func _ready():
func _ready():
# ...
# Change the following line from this
var err = _client.connect_to_url(websocket_url, ["lws-mirror-protocol"])
@ -73,12 +73,12 @@ func _on_data():
var data = _client.get_peer(1).get_packet().get_string_from_utf8()
var json_data = JSON.parse(data).result
# The json_data is an array
# The first element informs us this is simple text
# so we add it to the RichTextlabel
if json_data[0] == 'text':
for msg in json_data[1]: label.append_bbcode(msg)
# Always useful to print the data and see what we got.
print(data)
```
@ -101,17 +101,17 @@ caller.msg(coordinates=(9, 2))
```
Godot
```gdscript
```
func _on_data():
...
if json_data[0] == 'text':
for msg in json_data[1]: label.append_bbcode(msg)
# Notice the first element is the name of the kwarg we used from evennia.
elif json_data[0] == 'coordinates':
var coords_data = json_data[2]
player.set_pos(coords_data)
...
```
@ -130,7 +130,7 @@ you receive, so you can manage the code better.
This is an example of a Script to use in Godot 3.
The script can be attached to the root UI node.
```gdscript
```
extends Node
# The URL to connect to, should be your mud.
@ -187,7 +187,7 @@ func _on_data():
# elsewhere in the project.
self.emit_signal('updated_coordinates', json_data[1])
# We only print this for easier debugging.
print(data)
@ -221,7 +221,7 @@ Note that the version is not final so the code may break.
It requires a WebSocketClientNode as a child of the root node.
The script can be attached to the root UI node.
```gdscript
```
extends Control
# The URL to connect to, should be your mud.
@ -240,7 +240,7 @@ func _ready():
websocket.connect('connected_to_server', self._connected)
websocket.connect('connection_closed', self._closed)
websocket.connect('message_received', self._on_data)
# We attempt to connect and print out the error if we have one.
var result = websocket.connect_to_url(websocket_url)
if result != OK:
@ -284,6 +284,7 @@ func _on_button_pressed():
```
----
<small>This document page is generated from `evennia/contrib/base_systems/godotwebsocket/README.md`. Changes to this

View file

@ -7,12 +7,12 @@ you can run `evennia -l`, or start/reload the server with `evennia start -l` or
## Check your Requirements
Any system that supports Python3.9+ should work.
Any system that supports Python3.10+ should work.
- Linux/Unix
- Windows (Win7, Win8, Win10, Win11)
- Mac OSX (>10.5 recommended)
- [Python](https://www.python.org) (v3.9, 3.10 and 3.11 are tested. 3.11 is recommended)
- [Python](https://www.python.org) (3.10 and 3.11 are tested. 3.11 is recommended)
- [Twisted](https://twistedmatrix.com) (v22.3+)
- [ZopeInterface](https://www.zope.org/Products/ZopeInterface) (v3.0+) - usually included in Twisted packages
- Linux/Mac users may need the `gcc` and `python-dev` packages or equivalent.

View file

@ -12,7 +12,7 @@ You can also [clone Evennia from github](./Installation-Git.md) or use [docker
```{sidebar} Develop in isolation
Installing Evennia doesn't make anything visible online. Apart from installation and updating, you can develop your game without any internet connection if you want to.
```
- Evennia requires [Python](https://www.python.org/downloads/) 3.9, 3.10 or 3.11 (recommended). Any OS that supports Python should work.
- Evennia requires [Python](https://www.python.org/downloads/) 3.10 or 3.11 (recommended). Any OS that supports Python should work.
- _Windows_: In the installer, make sure you select `add python to path`. If you have multiple versions of Python installed, use `py` command instead of `python` to have Windows automatically use the latest.
- _Windows:_ If you want to use Python 3.11, you must also install the [Windows SDK](https://aka.ms/vs/16/release/vs_buildtools.exe). Run the linked installer. Click the `Individual Components` tab at the top, then search and checkbox the latest `Windows 10 SDK` (also for older/newer Windows versions). Then click `Install`. If you have trouble, use Python 3.10 for now (2022).
- Don't install Evennia as administrator or superuser.

View file

@ -133,7 +133,7 @@ method. Otherwise all text will be returned to all connected sessions.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.account.CmdOOCLook.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['ls', 'l']</em><a class="headerlink" href="#evennia.commands.default.account.CmdOOCLook.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'ls']</em><a class="headerlink" href="#evennia.commands.default.account.CmdOOCLook.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -164,7 +164,7 @@ method. Otherwise all text will be returned to all connected sessions.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.account.CmdOOCLook.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}</em><a class="headerlink" href="#evennia.commands.default.account.CmdOOCLook.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}</em><a class="headerlink" href="#evennia.commands.default.account.CmdOOCLook.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -317,7 +317,7 @@ to accounts respectively.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.admin.CmdEmit.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['remit', 'pemit']</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['pemit', 'remit']</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -348,7 +348,7 @@ to accounts respectively.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.admin.CmdEmit.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [&lt;obj&gt;, &lt;obj&gt;, ... =] &lt;message&gt;\n remit [&lt;obj&gt;, &lt;obj&gt;, ... =] &lt;message&gt;\n pemit [&lt;obj&gt;, &lt;obj&gt;, ... =] &lt;message&gt;\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [&lt;obj&gt;, &lt;obj&gt;, ... =] &lt;message&gt;\n remit [&lt;obj&gt;, &lt;obj&gt;, ... =] &lt;message&gt;\n pemit [&lt;obj&gt;, &lt;obj&gt;, ... =] &lt;message&gt;\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -138,7 +138,7 @@ skipping, reloading etc.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.batchprocess.CmdBatchCommands.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['batchcmd', 'batchcommand']</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['batchcommand', 'batchcmd']</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -169,7 +169,7 @@ skipping, reloading etc.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.batchprocess.CmdBatchCommands.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] &lt;python.path.to.file&gt;\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] &lt;python.path.to.file&gt;\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -592,7 +592,7 @@ You can specify the /force switch to bypass this confirmation.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdDestroy.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;del', '&#64;delete']</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;delete', '&#64;del']</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -633,7 +633,7 @@ You can specify the /force switch to bypass this confirmation.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdDestroy.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;del &#64;delete', 'category': 'building', 'key': '&#64;destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;delete &#64;del', 'category': 'building', 'key': '&#64;destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -1345,7 +1345,7 @@ server settings.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdTypeclass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;update', '&#64;parent', '&#64;type', '&#64;typeclasses', '&#64;swap']</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;update', '&#64;type', '&#64;swap', '&#64;typeclasses', '&#64;parent']</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -1376,7 +1376,7 @@ server settings.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdTypeclass.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;update &#64;parent &#64;type &#64;typeclasses &#64;swap', 'category': 'building', 'key': '&#64;typeclass', 'no_prefix': 'typeclass update parent type typeclasses swap', 'tags': '', 'text': &quot;\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] &lt;object&gt; [= typeclass.path]\n typeclass/prototype &lt;object&gt; = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n &quot;}</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;update &#64;type &#64;swap &#64;typeclasses &#64;parent', 'category': 'building', 'key': '&#64;typeclass', 'no_prefix': 'typeclass update type swap typeclasses parent', 'tags': '', 'text': &quot;\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] &lt;object&gt; [= typeclass.path]\n typeclass/prototype &lt;object&gt; = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n &quot;}</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -1531,7 +1531,7 @@ If object is not specified, the current location is examined.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdExamine.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;exam', '&#64;ex']</em><a class="headerlink" href="#evennia.commands.default.building.CmdExamine.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;ex', '&#64;exam']</em><a class="headerlink" href="#evennia.commands.default.building.CmdExamine.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -1799,7 +1799,7 @@ the cases, see the module doc.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdExamine.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;exam &#64;ex', 'category': 'building', 'key': '&#64;examine', 'no_prefix': 'examine exam ex', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [&lt;object&gt;[/attrname]]\n examine [*&lt;account&gt;[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}</em><a class="headerlink" href="#evennia.commands.default.building.CmdExamine.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;ex &#64;exam', 'category': 'building', 'key': '&#64;examine', 'no_prefix': 'examine ex exam', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [&lt;object&gt;[/attrname]]\n examine [*&lt;account&gt;[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}</em><a class="headerlink" href="#evennia.commands.default.building.CmdExamine.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -1326,8 +1326,7 @@ must be added to game settings.</p>
<p>Link an Evennia channel to an external Discord channel</p>
<dl>
<dt>Usage:</dt><dd><p>discord2chan[/switches]
discord2chan[/switches] &lt;evennia_channel&gt; [= &lt;discord_channel_id&gt;]
discord2chan/name &lt;bot_name&gt;</p>
discord2chan[/switches] &lt;evennia_channel&gt; [= &lt;discord_channel_id&gt;]</p>
</dd>
<dt>Switches:</dt><dd><dl class="option-list">
<dt><kbd><span class="option">/list</span></kbd></dt>
@ -1358,7 +1357,7 @@ discord2chan/name &lt;bot_name&gt;</p>
<p>discord2chan mydiscord = 555555555555555</p>
<p>This creates a link between an in-game Evennia channel and an external
Discord channel. You must have a valid Discord bot application
(<a class="reference external" href="https://discord.com/developers/applications">https://discord.com/developers/applications</a>)) and your DISCORD_BOT_TOKEN
( <a class="reference external" href="https://discord.com/developers/applications">https://discord.com/developers/applications</a> ) and your DISCORD_BOT_TOKEN
must be added to settings. (Please put it in secret_settings !)</p>
<dl class="py attribute">
<dt id="evennia.commands.default.comms.CmdDiscord2Chan.key">
@ -1398,7 +1397,7 @@ must be added to settings. (Please put it in secret_settings !)</p>
<dl class="py attribute">
<dt id="evennia.commands.default.comms.CmdDiscord2Chan.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'discord', 'category': 'comms', 'key': 'discord2chan', 'no_prefix': ' discord', 'tags': '', 'text': '\n Link an Evennia channel to an external Discord channel\n\n Usage:\n discord2chan[/switches]\n discord2chan[/switches] &lt;evennia_channel&gt; [= &lt;discord_channel_id&gt;]\n discord2chan/name &lt;bot_name&gt;\n\n Switches:\n /list - (or no switch) show existing Evennia &lt;-&gt; Discord links\n /remove - remove an existing link by link ID\n /delete - alias to remove\n /guild - toggle the Discord server tag on/off\n /channel - toggle the Evennia/Discord channel tags on/off\n\n Example:\n discord2chan mydiscord = 555555555555555\n\n This creates a link between an in-game Evennia channel and an external\n Discord channel. You must have a valid Discord bot application\n (https://discord.com/developers/applications)) and your DISCORD_BOT_TOKEN\n must be added to settings. (Please put it in secret_settings !)\n '}</em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'discord', 'category': 'comms', 'key': 'discord2chan', 'no_prefix': ' discord', 'tags': '', 'text': '\n Link an Evennia channel to an external Discord channel\n\n Usage:\n discord2chan[/switches]\n discord2chan[/switches] &lt;evennia_channel&gt; [= &lt;discord_channel_id&gt;]\n\n Switches:\n /list - (or no switch) show existing Evennia &lt;-&gt; Discord links\n /remove - remove an existing link by link ID\n /delete - alias to remove\n /guild - toggle the Discord server tag on/off\n /channel - toggle the Evennia/Discord channel tags on/off\n\n Example:\n discord2chan mydiscord = 555555555555555\n\n This creates a link between an in-game Evennia channel and an external\n Discord channel. You must have a valid Discord bot application\n ( https://discord.com/developers/applications ) and your DISCORD_BOT_TOKEN\n must be added to settings. (Please put it in secret_settings !)\n '}</em><a class="headerlink" href="#evennia.commands.default.comms.CmdDiscord2Chan.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -175,7 +175,7 @@ look <a href="#id1"><span class="problematic" id="id2">*</span></a>&lt;account&g
<dl class="py attribute">
<dt id="evennia.commands.default.general.CmdLook.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['ls', 'l']</em><a class="headerlink" href="#evennia.commands.default.general.CmdLook.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'ls']</em><a class="headerlink" href="#evennia.commands.default.general.CmdLook.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -206,7 +206,7 @@ look <a href="#id1"><span class="problematic" id="id2">*</span></a>&lt;account&g
<dl class="py attribute">
<dt id="evennia.commands.default.general.CmdLook.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look &lt;obj&gt;\n look *&lt;account&gt;\n\n Observes your location or objects in your vicinity.\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdLook.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look &lt;obj&gt;\n look *&lt;account&gt;\n\n Observes your location or objects in your vicinity.\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdLook.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -323,7 +323,7 @@ inv</p>
<dl class="py attribute">
<dt id="evennia.commands.default.general.CmdInventory.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['i', 'inv']</em><a class="headerlink" href="#evennia.commands.default.general.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['inv', 'i']</em><a class="headerlink" href="#evennia.commands.default.general.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -354,7 +354,7 @@ inv</p>
<dl class="py attribute">
<dt id="evennia.commands.default.general.CmdInventory.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdInventory.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdInventory.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -709,7 +709,7 @@ automatically begin with your name.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.general.CmdPose.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = [':', 'emote']</em><a class="headerlink" href="#evennia.commands.default.general.CmdPose.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['emote', ':']</em><a class="headerlink" href="#evennia.commands.default.general.CmdPose.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -750,7 +750,7 @@ space.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.general.CmdPose.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': &quot;\n strike a pose\n\n Usage:\n pose &lt;pose text&gt;\n pose's &lt;pose text&gt;\n\n Example:\n pose is standing by the wall, smiling.\n -&gt; others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n &quot;}</em><a class="headerlink" href="#evennia.commands.default.general.CmdPose.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': &quot;\n strike a pose\n\n Usage:\n pose &lt;pose text&gt;\n pose's &lt;pose text&gt;\n\n Example:\n pose is standing by the wall, smiling.\n -&gt; others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n &quot;}</em><a class="headerlink" href="#evennia.commands.default.general.CmdPose.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -683,7 +683,7 @@ See <a href="#id11"><span class="problematic" id="id12">|</span></a>luhttps://ww
<dl class="py attribute">
<dt id="evennia.commands.default.system.CmdTasks.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;task', '&#64;delays']</em><a class="headerlink" href="#evennia.commands.default.system.CmdTasks.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;delays', '&#64;task']</em><a class="headerlink" href="#evennia.commands.default.system.CmdTasks.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -729,7 +729,7 @@ to all the variables defined therein.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.system.CmdTasks.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;task &#64;delays', 'category': 'system', 'key': '&#64;tasks', 'no_prefix': 'tasks task delays', 'tags': '', 'text': &quot;\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n &quot;}</em><a class="headerlink" href="#evennia.commands.default.system.CmdTasks.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;delays &#64;task', 'category': 'system', 'key': '&#64;tasks', 'no_prefix': 'tasks delays task', 'tags': '', 'text': &quot;\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n &quot;}</em><a class="headerlink" href="#evennia.commands.default.system.CmdTasks.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -955,7 +955,7 @@ main test suite started with</p>
<p>Test the batch processor.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.tests.TestBatchProcess.red_button">
<code class="sig-name descname">red_button</code><em class="property"> = &lt;module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpgdacjs93/127176410081b3448b7297dcdb9fd2b286f222d6/evennia/contrib/tutorials/red_button/red_button.py'&gt;</em><a class="headerlink" href="#evennia.commands.default.tests.TestBatchProcess.red_button" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">red_button</code><em class="property"> = &lt;module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpauqbzk0x/5f6e17d634ebcb7fa6648a4ce077e7442a19cba2/evennia/contrib/tutorials/red_button/red_button.py'&gt;</em><a class="headerlink" href="#evennia.commands.default.tests.TestBatchProcess.red_button" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">

View file

@ -122,7 +122,7 @@ connect “account name” “pass word”</p>
<dl class="py attribute">
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedConnect.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['con', 'conn', 'co']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedConnect.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['co', 'conn', 'con']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedConnect.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -157,7 +157,7 @@ there is no object yet before the account has logged in)</p>
<dl class="py attribute">
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedConnect.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect &quot;account name&quot; &quot;pass word&quot;\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedConnect.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn con', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect &quot;account name&quot; &quot;pass word&quot;\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedConnect.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -335,7 +335,7 @@ for simplicity. It shows a pane of info.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -361,7 +361,7 @@ for simplicity. It shows a pane of info.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedHelp.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -139,7 +139,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['con', 'conn', 'co']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['co', 'conn', 'con']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -169,7 +169,7 @@ there is no object yet before the account has logged in)</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect &lt;email&gt; &lt;password&gt;\n\n Use the create command to first create an account before logging in.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn con', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect &lt;email&gt; &lt;password&gt;\n\n Use the create command to first create an account before logging in.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -335,7 +335,7 @@ for simplicity. It shows a pane of info.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -361,7 +361,7 @@ for simplicity. It shows a pane of info.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -116,7 +116,7 @@
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.ingame_python.commands.CmdCallback.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;callback', '&#64;callbacks', '&#64;calls']</em><a class="headerlink" href="#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;callback', '&#64;calls', '&#64;callbacks']</em><a class="headerlink" href="#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -197,7 +197,7 @@ on user permission.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.ingame_python.commands.CmdCallback.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;callback &#64;callbacks &#64;calls', 'category': 'building', 'key': '&#64;call', 'no_prefix': 'call callback callbacks calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;callback &#64;calls &#64;callbacks', 'category': 'building', 'key': '&#64;call', 'no_prefix': 'call callback calls callbacks', 'tags': '', 'text': '\n Command to edit callbacks.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -160,7 +160,7 @@ aliases to an already joined channel.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['aliaschan', 'chanalias']</em><a class="headerlink" href="#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['chanalias', 'aliaschan']</em><a class="headerlink" href="#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -191,7 +191,7 @@ aliases to an already joined channel.</p>
<dl class="py attribute">
<dt id="evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'aliaschan chanalias', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' aliaschan chanalias', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] &lt;channel&gt;\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'chanalias aliaschan', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' chanalias aliaschan', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] &lt;channel&gt;\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -211,7 +211,7 @@ the operation will be general or on the room.</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['abort', 'quit', 'chicken out', 'q']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['abort', 'chicken out', 'quit', 'q']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
@ -235,7 +235,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'abort quit chicken out q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort quit chicken out q', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'abort chicken out quit q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort chicken out quit q', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -256,7 +256,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdLook.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['ls', 'l']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdLook.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'ls']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdLook.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -290,7 +290,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdLook.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'ls l', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdLook.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l ls', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdLook.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -371,7 +371,7 @@ shout</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdSpeak.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['shout', 'whisper', ';']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdSpeak.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['shout', ';', 'whisper']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdSpeak.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -400,7 +400,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdSpeak.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'shout whisper ;', 'category': 'general', 'key': 'say', 'no_prefix': ' shout whisper ;', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say &lt;text&gt;\n whisper\n shout\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdSpeak.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'shout ; whisper', 'category': 'general', 'key': 'say', 'no_prefix': ' shout ; whisper', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say &lt;text&gt;\n whisper\n shout\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdSpeak.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -428,7 +428,7 @@ emote /me points to /box and /lever.</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdEmote.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['pose', ':']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdEmote.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = [':', 'pose']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdEmote.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -467,7 +467,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdEmote.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'pose :', 'category': 'general', 'key': 'emote', 'no_prefix': ' pose :', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use &quot;...&quot; to enact speech.\n\n Usage:\n emote &lt;emote&gt;\n :&lt;emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdEmote.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': ': pose', 'category': 'general', 'key': 'emote', 'no_prefix': ' : pose', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use &quot;...&quot; to enact speech.\n\n Usage:\n emote &lt;emote&gt;\n :&lt;emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdEmote.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -490,7 +490,7 @@ looks and what actions is available.</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['examine', 'e', 'ex', 'unfocus']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['examine', 'e', 'unfocus', 'ex']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -519,7 +519,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'examine e ex unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' examine e ex unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus &lt;obj&gt;\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'examine e unfocus ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' examine e unfocus ex', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus &lt;obj&gt;\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -581,7 +581,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdGet.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['inventory', 'give', 'i', 'inv']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGet.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['inv', 'give', 'inventory', 'i']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGet.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
@ -605,7 +605,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdGet.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'inventory give i inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory give i inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGet.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'inv give inventory i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv give inventory i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGet.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -626,7 +626,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;dig', '&#64;open']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;open', '&#64;dig']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
@ -649,7 +649,7 @@ to all the variables defined therein.</p>
<dl class="py attribute">
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;dig &#64;open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n &lt;action&gt; [arg]\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;open &#64;dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n &lt;action&gt; [arg]\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -622,7 +622,7 @@ inv</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.clothing.clothing.CmdInventory.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['i', 'inv']</em><a class="headerlink" href="#evennia.contrib.game_systems.clothing.clothing.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['inv', 'i']</em><a class="headerlink" href="#evennia.contrib.game_systems.clothing.clothing.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -653,7 +653,7 @@ inv</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.clothing.clothing.CmdInventory.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.clothing.clothing.CmdInventory.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.clothing.clothing.CmdInventory.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -672,7 +672,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_basic.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_basic.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_basic.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -698,7 +698,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_basic.CmdPass.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_basic.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_basic.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -567,7 +567,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_equip.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_equip.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_equip.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -587,7 +587,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_equip.CmdPass.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_equip.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_equip.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -690,7 +690,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_items.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_items.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_items.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -710,7 +710,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_items.CmdPass.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_items.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_items.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -469,7 +469,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_magic.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_magic.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_magic.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -489,7 +489,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_magic.CmdPass.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_magic.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_magic.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -929,7 +929,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_range.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_range.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_range.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -949,7 +949,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.game_systems.turnbattle.tb_range.CmdPass.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_range.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.turnbattle.tb_range.CmdPass.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -305,7 +305,7 @@ everyone but the person rolling.</p>
<dl class="py attribute">
<dt id="evennia.contrib.rpg.dice.dice.CmdDice.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['roll', '&#64;dice']</em><a class="headerlink" href="#evennia.contrib.rpg.dice.dice.CmdDice.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;dice', 'roll']</em><a class="headerlink" href="#evennia.contrib.rpg.dice.dice.CmdDice.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -331,7 +331,7 @@ everyone but the person rolling.</p>
<dl class="py attribute">
<dt id="evennia.contrib.rpg.dice.dice.CmdDice.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'roll &#64;dice', 'category': 'general', 'key': 'dice', 'no_prefix': ' roll dice', 'tags': '', 'text': &quot;\n roll dice\n\n Usage:\n dice[/switch] &lt;nr&gt;d&lt;sides&gt; [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 &lt; 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (&lt;,&gt;,&lt;=,&gt;=,==,!=). So e.g. 2d6 + 3 &gt; 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n &quot;}</em><a class="headerlink" href="#evennia.contrib.rpg.dice.dice.CmdDice.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '&#64;dice roll', 'category': 'general', 'key': 'dice', 'no_prefix': ' dice roll', 'tags': '', 'text': &quot;\n roll dice\n\n Usage:\n dice[/switch] &lt;nr&gt;d&lt;sides&gt; [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 &lt; 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (&lt;,&gt;,&lt;=,&gt;=,==,!=). So e.g. 2d6 + 3 &gt; 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n &quot;}</em><a class="headerlink" href="#evennia.contrib.rpg.dice.dice.CmdDice.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -865,7 +865,7 @@ Using the command without arguments will list all current recogs.</p>
<dl class="py attribute">
<dt id="evennia.contrib.rpg.rpsystem.rpsystem.CmdRecog.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['forget', 'recognize']</em><a class="headerlink" href="#evennia.contrib.rpg.rpsystem.rpsystem.CmdRecog.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['recognize', 'forget']</em><a class="headerlink" href="#evennia.contrib.rpg.rpsystem.rpsystem.CmdRecog.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
@ -892,7 +892,7 @@ Using the command without arguments will list all current recogs.</p>
<dl class="py attribute">
<dt id="evennia.contrib.rpg.rpsystem.rpsystem.CmdRecog.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'forget recognize', 'category': 'general', 'key': 'recog', 'no_prefix': ' forget recognize', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}</em><a class="headerlink" href="#evennia.contrib.rpg.rpsystem.rpsystem.CmdRecog.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'recognize forget', 'category': 'general', 'key': 'recog', 'no_prefix': ' recognize forget', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}</em><a class="headerlink" href="#evennia.contrib.rpg.rpsystem.rpsystem.CmdRecog.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -256,7 +256,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.evadventure.commands.CmdInventory.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['i', 'inv']</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.commands.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['inv', 'i']</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.commands.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
@ -280,7 +280,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.evadventure.commands.CmdInventory.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.commands.CmdInventory.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.commands.CmdInventory.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -357,7 +357,7 @@ unwear &lt;item&gt;</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.evadventure.commands.CmdRemove.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['unwear', 'unwield']</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.commands.CmdRemove.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['unwield', 'unwear']</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.commands.CmdRemove.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
@ -381,7 +381,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.evadventure.commands.CmdRemove.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'unwear unwield', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwear unwield', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove &lt;item&gt;\n unwield &lt;item&gt;\n unwear &lt;item&gt;\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.commands.CmdRemove.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'unwield unwear', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwield unwear', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove &lt;item&gt;\n unwield &lt;item&gt;\n unwear &lt;item&gt;\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.commands.CmdRemove.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -153,7 +153,7 @@ such as when closing the lid and un-blinding a character.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdPushLidClosed.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['press', 'press button', 'push']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdPushLidClosed.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['push', 'press', 'press button']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdPushLidClosed.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -182,7 +182,7 @@ check if the lid is open or closed.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdPushLidClosed.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press press button push', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdPushLidClosed.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'push press press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press press button', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdPushLidClosed.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -252,7 +252,7 @@ check if the lid is open or closed.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['break lid', 'smash lid', 'smash']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['break lid', 'smash', 'smash lid']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -279,7 +279,7 @@ break.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'break lid smash lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash lid smash', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'break lid smash smash lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash smash lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -379,7 +379,7 @@ be mutually exclusive.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdPushLidOpen.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['press', 'press button', 'push']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdPushLidOpen.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['push', 'press', 'press button']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdPushLidOpen.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -408,7 +408,7 @@ set in self.parse())</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdPushLidOpen.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press press button push', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdPushLidOpen.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'push press press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press press button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdPushLidOpen.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -506,7 +506,7 @@ be mutually exclusive.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['listen', 'feel', 'examine', 'ex', 'l', 'get']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'get', 'listen', 'ex', 'feel', 'examine']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -532,7 +532,7 @@ be mutually exclusive.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'listen feel examine ex l get', 'category': 'general', 'key': 'look', 'no_prefix': ' listen feel examine ex l get', 'tags': '', 'text': &quot;\n Looking around in darkness\n\n Usage:\n look &lt;obj&gt;\n\n ... not that there's much to see in the dark.\n\n &quot;}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l get listen ex feel examine', 'category': 'general', 'key': 'look', 'no_prefix': ' l get listen ex feel examine', 'tags': '', 'text': &quot;\n Looking around in darkness\n\n Usage:\n look &lt;obj&gt;\n\n ... not that there's much to see in the dark.\n\n &quot;}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -425,7 +425,7 @@ of the object. We overload it with our own version.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdLight.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['burn', 'light']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdLight.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['light', 'burn']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdLight.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -452,7 +452,7 @@ to sit on a “lightable” object, we operate only on self.obj.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdLight.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'burn light', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' burn light', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdLight.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'light burn', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' light burn', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdLight.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -556,7 +556,7 @@ shift green root up/down</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['move', 'shiftroot', 'pull', 'push']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['push', 'move', 'pull', 'shiftroot']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -592,7 +592,7 @@ yellow/green - horizontal roots</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'move shiftroot pull push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move shiftroot pull push', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'push move pull shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' push move pull shiftroot', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -609,7 +609,7 @@ yellow/green - horizontal roots</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['press button', 'button', 'push button']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['button', 'press button', 'push button']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -635,7 +635,7 @@ yellow/green - horizontal roots</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'press button button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button button push button', 'tags': '', 'text': '\n Presses a button.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'button press button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' button press button push button', 'tags': '', 'text': '\n Presses a button.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -779,7 +779,7 @@ parry - forgoes your attack but will make you harder to hit on next</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['stab', 'defend', 'fight', 'hit', 'parry', 'kill', 'thrust', 'chop', 'pierce', 'slash', 'bash']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['fight', 'stab', 'parry', 'kill', 'hit', 'thrust', 'slash', 'bash', 'pierce', 'defend', 'chop']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -805,7 +805,7 @@ parry - forgoes your attack but will make you harder to hit on next</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'stab defend fight hit parry kill thrust chop pierce slash bash', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' stab defend fight hit parry kill thrust chop pierce slash bash', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab &lt;enemy&gt;\n slash &lt;enemy&gt;\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'fight stab parry kill hit thrust slash bash pierce defend chop', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' fight stab parry kill hit thrust slash bash pierce defend chop', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab &lt;enemy&gt;\n slash &lt;enemy&gt;\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -816,7 +816,7 @@ if they fall off the bridge.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -842,7 +842,7 @@ if they fall off the bridge.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
@ -968,7 +968,7 @@ to find something.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['feel', 'search', 'fiddle', 'l', 'feel around']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'feel around', 'fiddle', 'feel', 'search']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -996,7 +996,7 @@ random chance of eventually finding a light source.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'feel search fiddle l feel around', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel search fiddle l feel around', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l feel around fiddle feel search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l feel around fiddle feel search', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -208,7 +208,7 @@ git evennia pull - Pull the latest evennia code.</p>
<dl class="py attribute">
<dt id="evennia.contrib.utils.git_integration.git_integration.CmdGitEvennia.directory">
<code class="sig-name descname">directory</code><em class="property"> = '/tmp/tmpgdacjs93/127176410081b3448b7297dcdb9fd2b286f222d6/evennia'</em><a class="headerlink" href="#evennia.contrib.utils.git_integration.git_integration.CmdGitEvennia.directory" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">directory</code><em class="property"> = '/tmp/tmpauqbzk0x/5f6e17d634ebcb7fa6648a4ce077e7442a19cba2/evennia'</em><a class="headerlink" href="#evennia.contrib.utils.git_integration.git_integration.CmdGitEvennia.directory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -269,7 +269,7 @@ git pull - Pull the latest code from your current branch.</p>
<dl class="py attribute">
<dt id="evennia.contrib.utils.git_integration.git_integration.CmdGit.directory">
<code class="sig-name descname">directory</code><em class="property"> = '/tmp/tmpgdacjs93/127176410081b3448b7297dcdb9fd2b286f222d6/evennia/game_template'</em><a class="headerlink" href="#evennia.contrib.utils.git_integration.git_integration.CmdGit.directory" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">directory</code><em class="property"> = '/tmp/tmpauqbzk0x/5f6e17d634ebcb7fa6648a4ce077e7442a19cba2/evennia/game_template'</em><a class="headerlink" href="#evennia.contrib.utils.git_integration.git_integration.CmdGit.directory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -113,6 +113,20 @@ added to <strong>server/conf/secret_settings.py</strong> as your DISCORD_BOT_TO
<code class="sig-prename descclassname">evennia.server.portal.discord.</code><code class="sig-name descname">random</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; x in the interval [0, 1).<a class="headerlink" href="#evennia.server.portal.discord.random" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.discord.QuietConnectionPool">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.discord.</code><code class="sig-name descname">QuietConnectionPool</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">reactor</span></em>, <em class="sig-param"><span class="n">persistent</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/discord.html#QuietConnectionPool"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.discord.QuietConnectionPool" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.web.client.HTTPConnectionPool</span></code></p>
<p>A quiet version of the HTTPConnectionPool which sets the factorys
<strong>noisy</strong> property to False to muffle log output.</p>
<dl class="py method">
<dt id="evennia.server.portal.discord.QuietConnectionPool.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">reactor</span></em>, <em class="sig-param"><span class="n">persistent</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/discord.html#QuietConnectionPool.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.discord.QuietConnectionPool.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt id="evennia.server.portal.discord.should_retry">
<code class="sig-prename descclassname">evennia.server.portal.discord.</code><code class="sig-name descname">should_retry</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">status_code</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/discord.html#should_retry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.discord.should_retry" title="Permalink to this definition"></a></dt>
@ -147,6 +161,11 @@ added to <strong>server/conf/secret_settings.py</strong> as your DISCORD_BOT_TO
<code class="sig-name descname">maxDelay</code><em class="property"> = 60</em><a class="headerlink" href="#evennia.server.portal.discord.DiscordWebsocketServerFactory.maxDelay" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.discord.DiscordWebsocketServerFactory.noisy">
<code class="sig-name descname">noisy</code><em class="property"> = False</em><a class="headerlink" href="#evennia.server.portal.discord.DiscordWebsocketServerFactory.noisy" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.discord.DiscordWebsocketServerFactory.gateway">
<code class="sig-name descname">gateway</code><em class="property"> = None</em><a class="headerlink" href="#evennia.server.portal.discord.DiscordWebsocketServerFactory.gateway" title="Permalink to this definition"></a></dt>
@ -157,6 +176,11 @@ added to <strong>server/conf/secret_settings.py</strong> as your DISCORD_BOT_TO
<code class="sig-name descname">resume_url</code><em class="property"> = None</em><a class="headerlink" href="#evennia.server.portal.discord.DiscordWebsocketServerFactory.resume_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.server.portal.discord.DiscordWebsocketServerFactory.do_retry">
<code class="sig-name descname">do_retry</code><em class="property"> = True</em><a class="headerlink" href="#evennia.server.portal.discord.DiscordWebsocketServerFactory.do_retry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.discord.DiscordWebsocketServerFactory.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">sessionhandler</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/server/portal/discord.html#DiscordWebsocketServerFactory.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.discord.DiscordWebsocketServerFactory.__init__" title="Permalink to this definition"></a></dt>
@ -246,7 +270,7 @@ de-registering the session and then reattaching a new one.</p>
<dt id="evennia.server.portal.discord.DiscordClient">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.discord.</code><code class="sig-name descname">DiscordClient</code><a class="reference internal" href="../_modules/evennia/server/portal/discord.html#DiscordClient"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.discord.DiscordClient" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">autobahn.twisted.websocket.WebSocketClientProtocol</span></code>, <a class="reference internal" href="evennia.server.session.html#evennia.server.session.Session" title="evennia.server.session.Session"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.server.session.Session</span></code></a></p>
<p>Implements the grapevine client</p>
<p>Implements the Discord client</p>
<dl class="py attribute">
<dt id="evennia.server.portal.discord.DiscordClient.nextHeartbeatCall">
<code class="sig-name descname">nextHeartbeatCall</code><em class="property"> = None</em><a class="headerlink" href="#evennia.server.portal.discord.DiscordClient.nextHeartbeatCall" title="Permalink to this definition"></a></dt>

View file

@ -156,7 +156,7 @@ as sends text to it when prompted</p>
<dl class="py attribute">
<dt id="evennia.server.portal.irc.IRCBot.factory">
<code class="sig-name descname">factory</code><em class="property">: Optional<span class="p">[</span>twisted.internet.protocol.Factory<span class="p">]</span></em><em class="property"> = None</em><a class="headerlink" href="#evennia.server.portal.irc.IRCBot.factory" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">factory</code><em class="property">: Optional<span class="p">[</span>twisted.internet.protocol.Factory<span class="p">, </span>None<span class="p">]</span></em><em class="property"> = None</em><a class="headerlink" href="#evennia.server.portal.irc.IRCBot.factory" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -336,7 +336,7 @@ indentation.</p>
<dl class="py attribute">
<dt id="evennia.utils.eveditor.CmdEditorGroup.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = [':dd', ':q', ':fi', ':p', '::', ':f', ':w', ':uu', ':DD', ':fd', ':!', ':dw', ':h', ':', ':UU', ':i', ':q!', ':::', ':u', ':r', ':y', ':S', ':wq', ':s', ':x', ':=', ':A', ':&lt;', ':j', ':echo', ':I', ':&gt;']</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = [':wq', ':s', ':echo', ':dd', '::', ':=', ':y', ':uu', ':A', ':fd', ':&gt;', ':f', ':x', ':h', ':UU', ':j', ':::', ':u', ':q', ':&lt;', ':I', ':DD', ':i', ':dw', ':!', ':S', ':p', ':', ':fi', ':w', ':q!', ':r']</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -364,7 +364,7 @@ efficient presentation.</p>
<dl class="py attribute">
<dt id="evennia.utils.eveditor.CmdEditorGroup.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': ':dd :q :fi :p :: :f :w :uu :DD :fd :! :dw :h : :UU :i :q! ::: :u :r :y :S :wq :s :x := :A :&lt; :j :echo :I :&gt;', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :dd :q :fi :p :: :f :w :uu :DD :fd :! :dw :h : :UU :i :q! ::: :u :r :y :S :wq :s :x := :A :&lt; :j :echo :I :&gt;', 'tags': '', 'text': '\n Commands for the editor\n '}</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': ':wq :s :echo :dd :: := :y :uu :A :fd :&gt; :f :x :h :UU :j ::: :u :q :&lt; :I :DD :i :dw :! :S :p : :fi :w :q! :r', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :wq :s :echo :dd :: := :y :uu :A :fd :&gt; :f :x :h :UU :j ::: :u :q :&lt; :I :DD :i :dw :! :S :p : :fi :w :q! :r', 'tags': '', 'text': '\n Commands for the editor\n '}</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -931,7 +931,7 @@ single question.</p>
<dl class="py attribute">
<dt id="evennia.utils.evmenu.CmdYesNoQuestion.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['n', 'abort', 'yes', 'y', 'a', 'no', '__nomatch_command']</em><a class="headerlink" href="#evennia.utils.evmenu.CmdYesNoQuestion.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['no', 'y', 'yes', 'a', 'n', '__nomatch_command', 'abort']</em><a class="headerlink" href="#evennia.utils.evmenu.CmdYesNoQuestion.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -957,7 +957,7 @@ single question.</p>
<dl class="py attribute">
<dt id="evennia.utils.evmenu.CmdYesNoQuestion.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'n abort yes y a no __nomatch_command', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n abort yes y a no __nomatch_command', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}</em><a class="headerlink" href="#evennia.utils.evmenu.CmdYesNoQuestion.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'no y yes a n __nomatch_command abort', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' no y yes a n __nomatch_command abort', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}</em><a class="headerlink" href="#evennia.utils.evmenu.CmdYesNoQuestion.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -137,7 +137,7 @@ the <strong>caller.msg()</strong> construct every time the page is updated.</p>
<dl class="py attribute">
<dt id="evennia.utils.evmore.CmdMore.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['n', 'abort', 'top', 'q', 'next', 'end', 'e', 'a', 'quit', 'previous', 't', 'p']</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['top', 't', 'n', 'p', 'next', 'e', 'quit', 'previous', 'a', 'abort', 'end', 'q']</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -163,7 +163,7 @@ the <strong>caller.msg()</strong> construct every time the page is updated.</p>
<dl class="py attribute">
<dt id="evennia.utils.evmore.CmdMore.search_index_entry">
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'n abort top q next end e a quit previous t p', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n abort top q next end e a quit previous t p', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.search_index_entry" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'top t n p next e quit previous a abort end q', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' top t n p next e quit previous a abort end q', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.search_index_entry" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>

View file

@ -109,7 +109,7 @@ documentation specifically regarding DRF integration.</p>
<p><a class="reference external" href="https://django-filter.readthedocs.io/en/latest/guide/rest_framework.html">https://django-filter.readthedocs.io/en/latest/guide/rest_framework.html</a></p>
<dl class="py function">
<dt id="evennia.web.api.filters.get_tag_query">
<code class="sig-prename descclassname">evennia.web.api.filters.</code><code class="sig-name descname">get_tag_query</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tag_type</span><span class="p">:</span> <span class="n">Optional<span class="p">[</span>str<span class="p">]</span></span></em>, <em class="sig-param"><span class="n">key</span><span class="p">:</span> <span class="n">str</span></em><span class="sig-paren">)</span> &#x2192; django.db.models.query_utils.Q<a class="reference internal" href="../_modules/evennia/web/api/filters.html#get_tag_query"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.web.api.filters.get_tag_query" title="Permalink to this definition"></a></dt>
<code class="sig-prename descclassname">evennia.web.api.filters.</code><code class="sig-name descname">get_tag_query</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">tag_type</span><span class="p">:</span> <span class="n">Optional<span class="p">[</span>str<span class="p">, </span>None<span class="p">]</span></span></em>, <em class="sig-param"><span class="n">key</span><span class="p">:</span> <span class="n">str</span></em><span class="sig-paren">)</span> &#x2192; django.db.models.query_utils.Q<a class="reference internal" href="../_modules/evennia/web/api/filters.html#get_tag_query"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.web.api.filters.get_tag_query" title="Permalink to this definition"></a></dt>
<dd><p>Returns a Q object for searching by tag names for typeclasses
:param tag_type: The type of tag (None, alias, etc)
:type tag_type: str or None

View file

@ -269,6 +269,8 @@
<li><a href="api/evennia.server.portal.discord.html#evennia.server.portal.discord.DiscordClient.__init__">(evennia.server.portal.discord.DiscordClient method)</a>
</li>
<li><a href="api/evennia.server.portal.discord.html#evennia.server.portal.discord.DiscordWebsocketServerFactory.__init__">(evennia.server.portal.discord.DiscordWebsocketServerFactory method)</a>
</li>
<li><a href="api/evennia.server.portal.discord.html#evennia.server.portal.discord.QuietConnectionPool.__init__">(evennia.server.portal.discord.QuietConnectionPool method)</a>
</li>
<li><a href="api/evennia.server.portal.grapevine.html#evennia.server.portal.grapevine.GrapevineClient.__init__">(evennia.server.portal.grapevine.GrapevineClient method)</a>
</li>
@ -5724,6 +5726,8 @@
<li><a href="api/evennia.contrib.tutorials.tutorial_world.mob.html#evennia.contrib.tutorials.tutorial_world.mob.Mob.do_patrol">do_patrol() (evennia.contrib.tutorials.tutorial_world.mob.Mob method)</a>
</li>
<li><a href="api/evennia.utils.dbserialize.html#evennia.utils.dbserialize.do_pickle">do_pickle() (in module evennia.utils.dbserialize)</a>
</li>
<li><a href="api/evennia.server.portal.discord.html#evennia.server.portal.discord.DiscordWebsocketServerFactory.do_retry">do_retry (evennia.server.portal.discord.DiscordWebsocketServerFactory attribute)</a>
</li>
<li><a href="api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.do_search">do_search() (evennia.commands.default.help.CmdHelp method)</a>
</li>
@ -15799,6 +15803,8 @@
<li><a href="api/evennia.server.game_index_client.client.html#evennia.server.game_index_client.client.QuietHTTP11ClientFactory.noisy">(evennia.server.game_index_client.client.QuietHTTP11ClientFactory attribute)</a>
</li>
<li><a href="api/evennia.server.portal.amp_server.html#evennia.server.portal.amp_server.AMPServerFactory.noisy">(evennia.server.portal.amp_server.AMPServerFactory attribute)</a>
</li>
<li><a href="api/evennia.server.portal.discord.html#evennia.server.portal.discord.DiscordWebsocketServerFactory.noisy">(evennia.server.portal.discord.DiscordWebsocketServerFactory attribute)</a>
</li>
<li><a href="api/evennia.server.portal.ssh.html#evennia.server.portal.ssh.AccountDBPasswordChecker.noisy">(evennia.server.portal.ssh.AccountDBPasswordChecker attribute)</a>
</li>
@ -17252,6 +17258,8 @@
<li><a href="api/evennia.contrib.tutorials.evadventure.quests.html#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.questhandler">questhandler() (evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest property)</a>
</li>
<li><a href="api/evennia.contrib.tutorials.evadventure.characters.html#evennia.contrib.tutorials.evadventure.characters.EvAdventureCharacter.quests">quests (evennia.contrib.tutorials.evadventure.characters.EvAdventureCharacter attribute)</a>
</li>
<li><a href="api/evennia.server.portal.discord.html#evennia.server.portal.discord.QuietConnectionPool">QuietConnectionPool (class in evennia.server.portal.discord)</a>
</li>
<li><a href="api/evennia.server.game_index_client.client.html#evennia.server.game_index_client.client.QuietHTTP11ClientFactory">QuietHTTP11ClientFactory (class in evennia.server.game_index_client.client)</a>
</li>

Binary file not shown.

File diff suppressed because one or more lines are too long