mirror of
https://github.com/evennia/evennia.git
synced 2026-03-21 23:36:30 +01:00
454 lines
No EOL
55 KiB
HTML
454 lines
No EOL
55 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>evennia.contrib.mail — 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> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../evennia.html" accesskey="U">evennia</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">evennia.contrib.mail</a></li>
|
|
</ul>
|
|
<div class="develop">develop branch</div>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for evennia.contrib.mail</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""</span>
|
|
<span class="sd">In-Game Mail system</span>
|
|
|
|
<span class="sd">Evennia Contribution - grungies1138 2016</span>
|
|
|
|
<span class="sd">A simple Brandymail style @mail system that uses the Msg class from Evennia</span>
|
|
<span class="sd">Core. It has two Commands, both of which can be used on their own:</span>
|
|
<span class="sd"> - CmdMail - this should sit on the Account cmdset and makes the @mail command</span>
|
|
<span class="sd"> available both IC and OOC. Mails will always go to Accounts (other players).</span>
|
|
<span class="sd"> - CmdMailCharacter - this should sit on the Character cmdset and makes the @mail</span>
|
|
<span class="sd"> command ONLY available when puppeting a character. Mails will be sent to other</span>
|
|
<span class="sd"> Characters only and will not be available when OOC.</span>
|
|
<span class="sd"> - If adding *both* commands to their respective cmdsets, you'll get two separate</span>
|
|
<span class="sd"> IC and OOC mailing systems, with different lists of mail for IC and OOC modes.</span>
|
|
|
|
<span class="sd">Installation:</span>
|
|
|
|
<span class="sd">Install one or both of the following (see above):</span>
|
|
|
|
<span class="sd">- CmdMail (IC + OOC mail, sent between players)</span>
|
|
|
|
<span class="sd"> # mygame/commands/default_cmds.py</span>
|
|
|
|
<span class="sd"> from evennia.contrib import mail</span>
|
|
|
|
<span class="sd"> # in AccountCmdSet.at_cmdset_creation:</span>
|
|
<span class="sd"> self.add(mail.CmdMail())</span>
|
|
|
|
<span class="sd">- CmdMailCharacter (optional, IC only mail, sent between characters)</span>
|
|
|
|
<span class="sd"> # mygame/commands/default_cmds.py</span>
|
|
|
|
<span class="sd"> from evennia.contrib import mail</span>
|
|
|
|
<span class="sd"> # in CharacterCmdSet.at_cmdset_creation:</span>
|
|
<span class="sd"> self.add(mail.CmdMailCharacter())</span>
|
|
|
|
<span class="sd">Once installed, use `help mail` in game for help with the mail command. Use</span>
|
|
<span class="sd">@ic/@ooc to switch in and out of IC/OOC modes.</span>
|
|
|
|
<span class="sd">"""</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">re</span>
|
|
<span class="kn">from</span> <span class="nn">evennia</span> <span class="k">import</span> <span class="n">ObjectDB</span><span class="p">,</span> <span class="n">AccountDB</span>
|
|
<span class="kn">from</span> <span class="nn">evennia</span> <span class="k">import</span> <span class="n">default_cmds</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">evtable</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">inherits_from</span><span class="p">,</span> <span class="n">datetime_format</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">Msg</span>
|
|
|
|
|
|
<span class="n">_HEAD_CHAR</span> <span class="o">=</span> <span class="s2">"|015-|n"</span>
|
|
<span class="n">_SUB_HEAD_CHAR</span> <span class="o">=</span> <span class="s2">"-"</span>
|
|
<span class="n">_WIDTH</span> <span class="o">=</span> <span class="mi">78</span>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdMail"><a class="viewcode-back" href="../../../api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail">[docs]</a><span class="k">class</span> <span class="nc">CmdMail</span><span class="p">(</span><span class="n">default_cmds</span><span class="o">.</span><span class="n">MuxAccountCommand</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Communicate with others by sending mail.</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> @mail - Displays all the mail an account has in their mailbox</span>
|
|
<span class="sd"> @mail <#> - Displays a specific message</span>
|
|
<span class="sd"> @mail <accounts>=<subject>/<message></span>
|
|
<span class="sd"> - Sends a message to the comma separated list of accounts.</span>
|
|
<span class="sd"> @mail/delete <#> - Deletes a specific message</span>
|
|
<span class="sd"> @mail/forward <account list>=<#>[/<Message>]</span>
|
|
<span class="sd"> - Forwards an existing message to the specified list of accounts,</span>
|
|
<span class="sd"> original message is delivered with optional Message prepended.</span>
|
|
<span class="sd"> @mail/reply <#>=<message></span>
|
|
<span class="sd"> - Replies to a message #. Prepends message to the original</span>
|
|
<span class="sd"> message text.</span>
|
|
<span class="sd"> Switches:</span>
|
|
<span class="sd"> delete - deletes a message</span>
|
|
<span class="sd"> forward - forward a received message to another object with an optional message attached.</span>
|
|
<span class="sd"> reply - Replies to a received message, appending the original message to the bottom.</span>
|
|
<span class="sd"> Examples:</span>
|
|
<span class="sd"> @mail 2</span>
|
|
<span class="sd"> @mail Griatch=New mail/Hey man, I am sending you a message!</span>
|
|
<span class="sd"> @mail/delete 6</span>
|
|
<span class="sd"> @mail/forward feend78 Griatch=4/You guys should read this.</span>
|
|
<span class="sd"> @mail/reply 9=Thanks for the info!</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"@mail"</span>
|
|
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"mail"</span><span class="p">]</span>
|
|
<span class="n">lock</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<div class="viewcode-block" id="CmdMail.parse"><a class="viewcode-back" href="../../../api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.parse">[docs]</a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Add convenience check to know if caller is an Account or not since this cmd</span>
|
|
<span class="sd"> will be able to add to either Object- or Account level.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">parse</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller_is_account</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span>
|
|
<span class="n">inherits_from</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"evennia.accounts.accounts.DefaultAccount"</span><span class="p">)</span>
|
|
<span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="CmdMail.search_targets"><a class="viewcode-back" href="../../../api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.search_targets">[docs]</a> <span class="k">def</span> <span class="nf">search_targets</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">namelist</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Search a list of targets of the same type as caller.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> caller (Object or Account): The type of object to search.</span>
|
|
<span class="sd"> namelist (list): List of strings for objects to search for.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> targetlist (Queryset): Any target matches.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">nameregex</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"|"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^</span><span class="si">%s</span><span class="s2">$"</span> <span class="o">%</span> <span class="n">re</span><span class="o">.</span><span class="n">escape</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">namelist</span><span class="p">))</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller_is_account</span><span class="p">:</span>
|
|
<span class="n">matches</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">username__iregex</span><span class="o">=</span><span class="n">nameregex</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">matches</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_key__iregex</span><span class="o">=</span><span class="n">nameregex</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">matches</span></div>
|
|
|
|
<div class="viewcode-block" id="CmdMail.get_all_mail"><a class="viewcode-back" href="../../../api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.get_all_mail">[docs]</a> <span class="k">def</span> <span class="nf">get_all_mail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Returns a list of all the messages where the caller is a recipient. These</span>
|
|
<span class="sd"> are all messages tagged with tags of the `mail` category.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> messages (QuerySet): Matching Msg objects.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller_is_account</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">Msg</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_by_tag</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_receivers_accounts</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">Msg</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_by_tag</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_receivers_objects</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="CmdMail.send_mail"><a class="viewcode-back" href="../../../api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.send_mail">[docs]</a> <span class="k">def</span> <span class="nf">send_mail</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">recipients</span><span class="p">,</span> <span class="n">subject</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Function for sending new mail. Also useful for sending notifications</span>
|
|
<span class="sd"> from objects or systems.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> recipients (list): list of Account or Character objects to receive</span>
|
|
<span class="sd"> the newly created mails.</span>
|
|
<span class="sd"> subject (str): The header or subject of the message to be delivered.</span>
|
|
<span class="sd"> message (str): The body of the message being sent.</span>
|
|
<span class="sd"> caller (obj): The object (or Account or Character) that is sending the message.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="k">for</span> <span class="n">recipient</span> <span class="ow">in</span> <span class="n">recipients</span><span class="p">:</span>
|
|
<span class="n">recipient</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You have received a new @mail from </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">caller</span><span class="p">)</span>
|
|
<span class="n">new_message</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_message</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">receivers</span><span class="o">=</span><span class="n">recipient</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="n">subject</span>
|
|
<span class="p">)</span>
|
|
<span class="n">new_message</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"new"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">recipients</span><span class="p">:</span>
|
|
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You sent your message."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"No valid target(s) found. Cannot send message."</span><span class="p">)</span>
|
|
<span class="k">return</span></div>
|
|
|
|
<div class="viewcode-block" id="CmdMail.func"><a class="viewcode-back" href="../../../api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Do the main command functionality</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">subject</span> <span class="o">=</span> <span class="s2">""</span>
|
|
<span class="n">body</span> <span class="o">=</span> <span class="s2">""</span>
|
|
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="s2">"delete"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">"del"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"No Message ID given. Unable to delete."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">all_mail</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_all_mail</span><span class="p">()</span>
|
|
<span class="n">mind_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">all_mail</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="n">mind</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="n">mind_max</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
|
|
<span class="k">if</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]:</span>
|
|
<span class="n">mail</span> <span class="o">=</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]</span>
|
|
<span class="n">question</span> <span class="o">=</span> <span class="s2">"Delete message </span><span class="si">{}</span><span class="s2"> (</span><span class="si">{}</span><span class="s2">) [Y]/N?"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">mind</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">mail</span><span class="o">.</span><span class="n">header</span><span class="p">)</span>
|
|
<span class="n">ret</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span><span class="n">question</span><span class="p">)</span>
|
|
<span class="c1"># handle not ret, it will be None during unit testing</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">ret</span> <span class="ow">or</span> <span class="n">ret</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"N"</span><span class="p">,</span> <span class="s2">"No"</span><span class="p">):</span>
|
|
<span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Message </span><span class="si">%s</span><span class="s2"> deleted"</span> <span class="o">%</span> <span class="p">(</span><span class="n">mind</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,))</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Message not deleted."</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">IndexError</span>
|
|
<span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"That message does not exist."</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: @mail/delete <message ID>"</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="s2">"forward"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">"fwd"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="s2">"Cannot forward a message without a target list. "</span> <span class="s2">"Please try again."</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You must define a message to forward."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">all_mail</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_all_mail</span><span class="p">()</span>
|
|
<span class="n">mind_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">all_mail</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="s2">"/"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
|
<span class="n">message_number</span><span class="p">,</span> <span class="n">message</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"/"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="n">mind</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="n">mind_max</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">message_number</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
|
|
|
|
<span class="k">if</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]:</span>
|
|
<span class="n">old_message</span> <span class="o">=</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">send_mail</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">search_targets</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhslist</span><span class="p">),</span>
|
|
<span class="s2">"FWD: "</span> <span class="o">+</span> <span class="n">old_message</span><span class="o">.</span><span class="n">header</span><span class="p">,</span>
|
|
<span class="n">message</span>
|
|
<span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">---- Original Message ----</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="o">+</span> <span class="n">old_message</span><span class="o">.</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Message forwarded."</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">IndexError</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">mind</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="n">mind_max</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
|
|
<span class="k">if</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]:</span>
|
|
<span class="n">old_message</span> <span class="o">=</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">send_mail</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">search_targets</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhslist</span><span class="p">),</span>
|
|
<span class="s2">"FWD: "</span> <span class="o">+</span> <span class="n">old_message</span><span class="o">.</span><span class="n">header</span><span class="p">,</span>
|
|
<span class="s2">"</span><span class="se">\n</span><span class="s2">---- Original Message ----</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">old_message</span><span class="o">.</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Message forwarded."</span><span class="p">)</span>
|
|
<span class="n">old_message</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">"new"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span>
|
|
<span class="n">old_message</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"fwd"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">IndexError</span>
|
|
<span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Message does not exist."</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: @mail/forward <account list>=<#>[/<Message>]"</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="s2">"reply"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">"rep"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You must define a message to reply to."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You must supply a reply message"</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">all_mail</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_all_mail</span><span class="p">()</span>
|
|
<span class="n">mind_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">all_mail</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="n">mind</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="n">mind_max</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
|
|
<span class="k">if</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]:</span>
|
|
<span class="n">old_message</span> <span class="o">=</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">send_mail</span><span class="p">(</span>
|
|
<span class="n">old_message</span><span class="o">.</span><span class="n">senders</span><span class="p">,</span>
|
|
<span class="s2">"RE: "</span> <span class="o">+</span> <span class="n">old_message</span><span class="o">.</span><span class="n">header</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">rhs</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">---- Original Message ----</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">old_message</span><span class="o">.</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">old_message</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">"new"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span>
|
|
<span class="n">old_message</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">IndexError</span>
|
|
<span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Message does not exist."</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: @mail/reply <#>=<message>"</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="c1"># normal send</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="s2">"/"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
|
<span class="n">subject</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"/"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">send_mail</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">search_targets</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhslist</span><span class="p">),</span> <span class="n">subject</span><span class="p">,</span> <span class="n">body</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">all_mail</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_all_mail</span><span class="p">()</span>
|
|
<span class="n">mind_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">all_mail</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">mind</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="n">mind_max</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
|
|
<span class="n">message</span> <span class="o">=</span> <span class="n">all_mail</span><span class="p">[</span><span class="n">mind</span><span class="p">]</span>
|
|
<span class="k">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"'</span><span class="si">%s</span><span class="s2">' is not a valid mail id."</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="n">messageForm</span> <span class="o">=</span> <span class="p">[]</span>
|
|
<span class="k">if</span> <span class="n">message</span><span class="p">:</span>
|
|
<span class="n">messageForm</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_HEAD_CHAR</span> <span class="o">*</span> <span class="n">_WIDTH</span><span class="p">)</span>
|
|
<span class="n">messageForm</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
<span class="s2">"|wFrom:|n </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">senders</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">))</span>
|
|
<span class="p">)</span>
|
|
<span class="c1"># note that we cannot use %-d format here since Windows does not support it</span>
|
|
<span class="n">day</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">db_date_created</span><span class="o">.</span><span class="n">day</span>
|
|
<span class="n">messageForm</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
<span class="s2">"|wSent:|n </span><span class="si">%s</span><span class="s2">"</span>
|
|
<span class="o">%</span> <span class="n">message</span><span class="o">.</span><span class="n">db_date_created</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">f</span><span class="s2">"%b </span><span class="si">{day}</span><span class="s2">, %Y - %H:%M:%S"</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="n">messageForm</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"|wSubject:|n </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">message</span><span class="o">.</span><span class="n">header</span><span class="p">)</span>
|
|
<span class="n">messageForm</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_SUB_HEAD_CHAR</span> <span class="o">*</span> <span class="n">_WIDTH</span><span class="p">)</span>
|
|
<span class="n">messageForm</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
|
|
<span class="n">messageForm</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_HEAD_CHAR</span> <span class="o">*</span> <span class="n">_WIDTH</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">messageForm</span><span class="p">))</span>
|
|
<span class="n">message</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">"new"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span>
|
|
<span class="n">message</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"mail"</span><span class="p">)</span>
|
|
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="c1"># list messages</span>
|
|
<span class="n">messages</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_all_mail</span><span class="p">()</span>
|
|
|
|
<span class="k">if</span> <span class="n">messages</span><span class="p">:</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="n">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span>
|
|
<span class="s2">"|wID|n"</span><span class="p">,</span>
|
|
<span class="s2">"|wFrom|n"</span><span class="p">,</span>
|
|
<span class="s2">"|wSubject|n"</span><span class="p">,</span>
|
|
<span class="s2">"|wArrived|n"</span><span class="p">,</span>
|
|
<span class="s2">""</span><span class="p">,</span>
|
|
<span class="n">table</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">border</span><span class="o">=</span><span class="s2">"header"</span><span class="p">,</span>
|
|
<span class="n">header_line_char</span><span class="o">=</span><span class="n">_SUB_HEAD_CHAR</span><span class="p">,</span>
|
|
<span class="n">width</span><span class="o">=</span><span class="n">_WIDTH</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">index</span> <span class="o">=</span> <span class="mi">1</span>
|
|
<span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span><span class="p">:</span>
|
|
<span class="n">status</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">db_tags</span><span class="o">.</span><span class="n">last</span><span class="p">()</span><span class="o">.</span><span class="n">db_key</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
|
|
<span class="k">if</span> <span class="n">status</span> <span class="o">==</span> <span class="s2">"NEW"</span><span class="p">:</span>
|
|
<span class="n">status</span> <span class="o">=</span> <span class="s2">"|gNEW|n"</span>
|
|
|
|
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
|
<span class="n">index</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">.</span><span class="n">senders</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">),</span>
|
|
<span class="n">message</span><span class="o">.</span><span class="n">header</span><span class="p">,</span>
|
|
<span class="n">datetime_format</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">db_date_created</span><span class="p">),</span>
|
|
<span class="n">status</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">index</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="n">table</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">6</span><span class="p">)</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">18</span><span class="p">)</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">34</span><span class="p">)</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">13</span><span class="p">)</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">7</span><span class="p">)</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_HEAD_CHAR</span> <span class="o">*</span> <span class="n">_WIDTH</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">table</span><span class="p">))</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_HEAD_CHAR</span> <span class="o">*</span> <span class="n">_WIDTH</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"There are no messages in your inbox."</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<span class="c1"># character - level version of the command</span>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdMailCharacter"><a class="viewcode-back" href="../../../api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMailCharacter">[docs]</a><span class="k">class</span> <span class="nc">CmdMailCharacter</span><span class="p">(</span><span class="n">CmdMail</span><span class="p">):</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">False</span></div>
|
|
</pre></div>
|
|
|
|
<div class="clearer"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<p class="logo"><a href="../../../index.html">
|
|
<img class="logo" src="../../../_static/evennia_logo.png" alt="Logo"/>
|
|
</a></p>
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3 id="searchlabel">Quick search</h3>
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="../../../search.html" method="get">
|
|
<input type="text" name="q" aria-labelledby="searchlabel" />
|
|
<input type="submit" value="Go" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script>$('#searchbox').show(0);</script>
|
|
<h3>Versions</h3>
|
|
<ul>
|
|
<li><a href="mail.html">1.0-dev (develop branch)</a></li>
|
|
<li><a href="../../../../0.9.5/index.html">0.9.5 (master branch)</a></li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../evennia.html" >evennia</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">evennia.contrib.mail</a></li>
|
|
</ul>
|
|
<div class="develop">develop branch</div>
|
|
</div>
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2020, The Evennia developer community.
|
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
|
</div>
|
|
</body>
|
|
</html> |