mirror of
https://github.com/evennia/evennia.git
synced 2026-03-31 13:07:16 +02:00
Updated HTML docs.
This commit is contained in:
parent
c4d635100d
commit
95fc796b1e
41 changed files with 1379 additions and 156 deletions
|
|
@ -89,21 +89,19 @@
|
|||
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.accounts</span> <span class="kn">import</span> <span class="n">DefaultAccount</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.scripts.scripts</span> <span class="kn">import</span> <span class="n">DefaultScript</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">search</span><span class="p">,</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">search</span><span class="p">,</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">strip_ansi</span>
|
||||
|
||||
<span class="n">_IDLE_TIMEOUT</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">IDLE_TIMEOUT</span>
|
||||
|
||||
<span class="n">_IRC_ENABLED</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">IRC_ENABLED</span>
|
||||
<span class="n">_RSS_ENABLED</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">RSS_ENABLED</span>
|
||||
<span class="n">_GRAPEVINE_ENABLED</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">GRAPEVINE_ENABLED</span>
|
||||
|
||||
<span class="n">_DISCORD_ENABLED</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">DISCORD_ENABLED</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="s2">"DISCORD_BOT_TOKEN"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">_SESSIONS</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
|
||||
<span class="c1"># Bot helper utilities</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="BotStarter"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.BotStarter">[docs]</a><span class="k">class</span> <span class="nc">BotStarter</span><span class="p">(</span><span class="n">DefaultScript</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This non-repeating script has the</span>
|
||||
|
|
@ -119,17 +117,18 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="s2">"botstarter"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">"bot start/keepalive"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">started</span> <span class="o">=</span> <span class="kc">False</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="kc">True</span></div>
|
||||
|
||||
<div class="viewcode-block" id="BotStarter.at_server_start"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.BotStarter.at_server_start">[docs]</a> <span class="k">def</span> <span class="nf">at_server_start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_start</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="BotStarter.at_start"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.BotStarter.at_start">[docs]</a> <span class="k">def</span> <span class="nf">at_start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Kick bot into gear.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">started</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">started</span> <span class="o">=</span> <span class="kc">True</span></div>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">start</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="BotStarter.at_repeat"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.BotStarter.at_repeat">[docs]</a> <span class="k">def</span> <span class="nf">at_repeat</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -144,22 +143,7 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="kn">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">for</span> <span class="n">session</span> <span class="ow">in</span> <span class="n">_SESSIONS</span><span class="o">.</span><span class="n">sessions_from_account</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">):</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">update_session_counters</span><span class="p">(</span><span class="n">idle</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="BotStarter.at_server_reload"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.BotStarter.at_server_reload">[docs]</a> <span class="k">def</span> <span class="nf">at_server_reload</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> If server reloads we don't need to reconnect the protocol</span>
|
||||
<span class="sd"> again, this is handled by the portal reconnect mechanism.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">started</span> <span class="o">=</span> <span class="kc">True</span></div>
|
||||
|
||||
<div class="viewcode-block" id="BotStarter.at_server_shutdown"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.BotStarter.at_server_shutdown">[docs]</a> <span class="k">def</span> <span class="nf">at_server_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Make sure we are shutdown.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">started</span> <span class="o">=</span> <span class="kc">False</span></div></div>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">update_session_counters</span><span class="p">(</span><span class="n">idle</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<span class="c1">#</span>
|
||||
|
|
@ -188,8 +172,7 @@
|
|||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">lockstring</span><span class="p">)</span>
|
||||
<span class="c1"># set the basics of being a bot</span>
|
||||
<span class="n">script_key</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">scripts</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">BotStarter</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="n">script_key</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">scripts</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">BotStarter</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"bot_starter"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">is_bot</span> <span class="o">=</span> <span class="kc">True</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Bot.start"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.Bot.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -654,6 +637,205 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">ev_channel</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channel</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<span class="c1"># Discord</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="DiscordBot"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.DiscordBot">[docs]</a><span class="k">class</span> <span class="nc">DiscordBot</span><span class="p">(</span><span class="n">Bot</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Discord bot relay. You will need to set up your own bot (https://discord.com/developers/applications)</span>
|
||||
<span class="sd"> and add the bot token as `DISCORD_BOT_TOKEN` to `secret_settings.py` to use</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">factory_path</span> <span class="o">=</span> <span class="s2">"evennia.server.portal.discord.DiscordWebsocketServerFactory"</span>
|
||||
|
||||
<div class="viewcode-block" id="DiscordBot.at_init"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.DiscordBot.at_init">[docs]</a> <span class="k">def</span> <span class="nf">at_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Load required channels back into memory</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">channel_links</span> <span class="o">:=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">:</span>
|
||||
<span class="c1"># this attribute contains a list of evennia<->discord links in the form of ("evennia_channel", "discord_chan_id")</span>
|
||||
<span class="c1"># grab Evennia channels, cache and connect</span>
|
||||
<span class="n">channel_set</span> <span class="o">=</span> <span class="p">{</span><span class="n">evchan</span> <span class="k">for</span> <span class="n">evchan</span><span class="p">,</span> <span class="n">dcid</span> <span class="ow">in</span> <span class="n">channel_links</span><span class="p">}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channels</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">channel_name</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">channel_set</span><span class="p">):</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">search_channel</span><span class="p">(</span><span class="n">channel_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channel</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Evennia Channel </span><span class="si">{</span><span class="n">channel_name</span><span class="si">}</span><span class="s2"> not found."</span><span class="p">)</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channels</span><span class="p">[</span><span class="n">channel_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">channel</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DiscordBot.start"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.DiscordBot.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Tell the Discord protocol to connect.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_DISCORD_ENABLED</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channels</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">channel</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channels</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="k">elif</span> <span class="n">channel_links</span> <span class="o">:=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">:</span>
|
||||
<span class="c1"># this attribute contains a list of evennia<->discord links in the form of ("evennia_channel", "discord_chan_id")</span>
|
||||
<span class="c1"># grab Evennia channels, cache and connect</span>
|
||||
<span class="n">channel_set</span> <span class="o">=</span> <span class="p">{</span><span class="n">evchan</span> <span class="k">for</span> <span class="n">evchan</span><span class="p">,</span> <span class="n">dcid</span> <span class="ow">in</span> <span class="n">channel_links</span><span class="p">}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channels</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">channel_name</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">channel_set</span><span class="p">):</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">search_channel</span><span class="p">(</span><span class="n">channel_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channel</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Evennia Channel </span><span class="si">{</span><span class="n">channel_name</span><span class="si">}</span><span class="s2"> not found."</span><span class="p">)</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channels</span><span class="p">[</span><span class="n">channel_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">channel</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># connect</span>
|
||||
<span class="k">global</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="kn">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</span>
|
||||
<span class="c1"># these will be made available as properties on the protocol factory</span>
|
||||
<span class="n">configdict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"uid"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">dbid</span><span class="p">}</span>
|
||||
<span class="n">_SESSIONS</span><span class="o">.</span><span class="n">start_bot_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">factory_path</span><span class="p">,</span> <span class="n">configdict</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DiscordBot.at_pre_channel_msg"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.DiscordBot.at_pre_channel_msg">[docs]</a> <span class="k">def</span> <span class="nf">at_pre_channel_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called by the Channel just before passing a message into `channel_msg`.</span>
|
||||
|
||||
<span class="sd"> We overload this to set the channel tag prefix.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"no_prefix"</span><span class="p">]</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_channel</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">at_pre_channel_msg</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="n">senders</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DiscordBot.channel_msg"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.DiscordBot.channel_msg">[docs]</a> <span class="k">def</span> <span class="nf">channel_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">relayed</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Passes channel messages received on to discord</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> message (str) - Incoming text from channel.</span>
|
||||
<span class="sd"> channel (Channel) - The channel the message is being received from</span>
|
||||
|
||||
<span class="sd"> Keyword Args:</span>
|
||||
<span class="sd"> senders (list or None) - Object(s) sending the message</span>
|
||||
<span class="sd"> relayed (bool) - A flag identifying whether the message was relayed by the bot.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"relayed"</span><span class="p">):</span>
|
||||
<span class="c1"># don't relay our own relayed messages</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="n">channel_list</span> <span class="o">:=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">:</span>
|
||||
<span class="c1"># get all the discord channels connected to this evennia channel</span>
|
||||
<span class="n">channel_name</span> <span class="o">=</span> <span class="n">channel</span><span class="o">.</span><span class="n">name</span>
|
||||
<span class="k">for</span> <span class="n">dc_chan</span> <span class="ow">in</span> <span class="p">[</span><span class="n">dcid</span> <span class="k">for</span> <span class="n">evchan</span><span class="p">,</span> <span class="n">dcid</span> <span class="ow">in</span> <span class="n">channel_list</span> <span class="k">if</span> <span class="n">evchan</span> <span class="o">==</span> <span class="n">channel_name</span><span class="p">]:</span>
|
||||
<span class="c1"># send outputfunc channel(msg, discord channel)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">channel</span><span class="o">=</span><span class="p">(</span><span class="n">strip_ansi</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">strip</span><span class="p">()),</span> <span class="n">dc_chan</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DiscordBot.direct_msg"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.DiscordBot.direct_msg">[docs]</a> <span class="k">def</span> <span class="nf">direct_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when the Discord bot receives a direct message on Discord.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> message (str) - Incoming text from Discord.</span>
|
||||
<span class="sd"> sender (tuple) - The Discord info for the sender in the form (id, nickname)</span>
|
||||
|
||||
<span class="sd"> Keyword args:</span>
|
||||
<span class="sd"> kwargs (optional) - Unused by default, but can carry additional data from the protocol.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DiscordBot.relay_to_channel"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.DiscordBot.relay_to_channel">[docs]</a> <span class="k">def</span> <span class="nf">relay_to_channel</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">to_channel</span><span class="p">,</span> <span class="n">sender</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_channel</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_server</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Formats and sends a Discord -> Evennia message. Called when the Discord bot receives a channel message on Discord.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> message (str) - Incoming text from Discord.</span>
|
||||
<span class="sd"> to_channel (Channel) - The Evennia channel receiving the message</span>
|
||||
|
||||
<span class="sd"> Keyword args:</span>
|
||||
<span class="sd"> sender (tuple) - The Discord info for the sender in the form (id, nickname)</span>
|
||||
<span class="sd"> from_channel (str) - The Discord channel name</span>
|
||||
<span class="sd"> from_server (str) - The Discord server name</span>
|
||||
<span class="sd"> kwargs - Any additional keywords. Unused by default, but available for adding additional flags or parameters.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">tag_str</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="n">from_channel</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_channel</span><span class="p">:</span>
|
||||
<span class="n">tag_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"#</span><span class="si">{</span><span class="n">from_channel</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">if</span> <span class="n">from_server</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_guild</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">tag_str</span><span class="p">:</span>
|
||||
<span class="n">tag_str</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"@</span><span class="si">{</span><span class="n">from_server</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">tag_str</span> <span class="o">=</span> <span class="n">from_server</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">tag_str</span><span class="p">:</span>
|
||||
<span class="n">tag_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">tag_str</span><span class="si">}</span><span class="s2">] "</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">sender</span><span class="p">:</span>
|
||||
<span class="n">sender_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|c</span><span class="si">{</span><span class="n">sender</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">|n: "</span>
|
||||
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">tag_str</span><span class="si">}{</span><span class="n">sender_name</span><span class="si">}{</span><span class="n">message</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">to_channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">relayed</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DiscordBot.execute_cmd"><a class="viewcode-back" href="../../../api/evennia.accounts.bots.html#evennia.accounts.bots.DiscordBot.execute_cmd">[docs]</a> <span class="k">def</span> <span class="nf">execute_cmd</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">content</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">sender</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Take incoming data from protocol and send it to connected channel. This is</span>
|
||||
<span class="sd"> triggered by the bot_data_in Inputfunc.</span>
|
||||
|
||||
<span class="sd"> Keyword args:</span>
|
||||
<span class="sd"> content (str) - The content of the message from Discord.</span>
|
||||
<span class="sd"> session (Session) - The protocol session this command came from.</span>
|
||||
<span class="sd"> type (str, optional) - Indicates the type of activity from Discord, if</span>
|
||||
<span class="sd"> the protocol pre-processed it.</span>
|
||||
<span class="sd"> sender (tuple) - Identifies the author of the Discord activity in a tuple of two</span>
|
||||
<span class="sd"> strings, in the form of (id, nickname)</span>
|
||||
|
||||
<span class="sd"> kwargs - Any additional data specific to a particular type of actions. The data for</span>
|
||||
<span class="sd"> any Discord actions not pre-processed by the protocol will also be passed via kwargs.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># normal channel message</span>
|
||||
<span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"channel"</span><span class="p">:</span>
|
||||
<span class="n">channel_id</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">"channel_id"</span><span class="p">)</span>
|
||||
<span class="n">channel_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">discord_channels</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">channel_id</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">)</span>
|
||||
<span class="n">guild_id</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">"guild_id"</span><span class="p">)</span>
|
||||
<span class="n">guild</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">guilds</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">guild_id</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">channel_links</span> <span class="o">:=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">ev_channel</span> <span class="ow">in</span> <span class="p">[</span>
|
||||
<span class="n">ev_chan</span> <span class="k">for</span> <span class="n">ev_chan</span><span class="p">,</span> <span class="n">dc_id</span> <span class="ow">in</span> <span class="n">channel_links</span> <span class="k">if</span> <span class="n">dc_id</span> <span class="o">==</span> <span class="n">channel_id</span>
|
||||
<span class="p">]:</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">channel_search</span><span class="p">(</span><span class="n">ev_channel</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channel</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">relay_to_channel</span><span class="p">(</span><span class="n">content</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">channel_name</span><span class="p">,</span> <span class="n">guild</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># direct message</span>
|
||||
<span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"direct"</span><span class="p">:</span>
|
||||
<span class="c1"># pass on to the DM hook</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">direct_msg</span><span class="p">(</span><span class="n">content</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># guild info update</span>
|
||||
<span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s2">"guild"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">guild_id</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">"guild_id"</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">db</span><span class="o">.</span><span class="n">guilds</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">guilds</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">guilds</span><span class="p">[</span><span class="n">guild_id</span><span class="p">]</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">"guild_name"</span><span class="p">,</span> <span class="s2">"Unidentified"</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">db</span><span class="o">.</span><span class="n">discord_channels</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">discord_channels</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">discord_channels</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"channels"</span><span class="p">,</span> <span class="p">{}))</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -149,7 +149,8 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">comms</span><span class="o">.</span><span class="n">CmdIRC2Chan</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">comms</span><span class="o">.</span><span class="n">CmdIRCStatus</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">comms</span><span class="o">.</span><span class="n">CmdRSS2Chan</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">comms</span><span class="o">.</span><span class="n">CmdGrapevine2Chan</span><span class="p">())</span></div></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">comms</span><span class="o">.</span><span class="n">CmdGrapevine2Chan</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">comms</span><span class="o">.</span><span class="n">CmdDiscord2Chan</span><span class="p">())</span></div></div>
|
||||
<span class="c1"># self.add(comms.CmdChannels())</span>
|
||||
<span class="c1"># self.add(comms.CmdAddCom())</span>
|
||||
<span class="c1"># self.add(comms.CmdDelCom())</span>
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
|
||||
<span class="sd">- channel</span>
|
||||
<span class="sd">- page</span>
|
||||
<span class="sd">- irc/rss/grapevine linking</span>
|
||||
<span class="sd">- irc/rss/grapevine/discord linking</span>
|
||||
|
||||
<span class="sd">"""</span>
|
||||
|
||||
|
|
@ -92,7 +92,7 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.comms.comms</span> <span class="kn">import</span> <span class="n">DefaultChannel</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="kn">import</span> <span class="n">Msg</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="kn">import</span> <span class="n">LockException</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">search</span><span class="p">,</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evmenu</span> <span class="kn">import</span> <span class="n">ask_yes_no</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.logger</span> <span class="kn">import</span> <span class="n">tail_log_file</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">strip_unsafe_input</span>
|
||||
|
|
@ -112,6 +112,7 @@
|
|||
<span class="s2">"CmdIRCStatus"</span><span class="p">,</span>
|
||||
<span class="s2">"CmdRSS2Chan"</span><span class="p">,</span>
|
||||
<span class="s2">"CmdGrapevine2Chan"</span><span class="p">,</span>
|
||||
<span class="s2">"CmdDiscord2Chan"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">_DEFAULT_WIDTH</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">CLIENT_DEFAULT_WIDTH</span>
|
||||
|
||||
|
|
@ -1986,6 +1987,176 @@
|
|||
|
||||
<span class="n">bot</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="n">ev_channel</span><span class="o">=</span><span class="n">channel</span><span class="p">,</span> <span class="n">grapevine_channel</span><span class="o">=</span><span class="n">grapevine_channel</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Grapevine connection created </span><span class="si">{</span><span class="n">channel</span><span class="si">}</span><span class="s2"> <-> </span><span class="si">{</span><span class="n">grapevine_channel</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdDiscord2Chan"><a class="viewcode-back" href="../../../../api/evennia.commands.default.comms.html#evennia.commands.default.comms.CmdDiscord2Chan">[docs]</a><span class="k">class</span> <span class="nc">CmdDiscord2Chan</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Link an Evennia channel to an external Discord channel</span>
|
||||
|
||||
<span class="sd"> Usage:</span>
|
||||
<span class="sd"> discord2chan[/switches]</span>
|
||||
<span class="sd"> discord2chan[/switches] <evennia_channel> [= <discord_channel_id>]</span>
|
||||
<span class="sd"> discord2chan/name <bot_name></span>
|
||||
|
||||
<span class="sd"> Switches:</span>
|
||||
<span class="sd"> /list - (or no switch) show existing Evennia <-> Discord links</span>
|
||||
<span class="sd"> /remove - remove an existing link by link ID</span>
|
||||
<span class="sd"> /delete - alias to remove</span>
|
||||
<span class="sd"> /guild - toggle the Discord server tag on/off</span>
|
||||
<span class="sd"> /channel - toggle the Evennia/Discord channel tags on/off</span>
|
||||
|
||||
<span class="sd"> Example:</span>
|
||||
<span class="sd"> discord2chan mydiscord = 555555555555555</span>
|
||||
|
||||
<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"> must be added to settings. (Please put it in secret_settings !)</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"discord2chan"</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"discord"</span><span class="p">,)</span>
|
||||
<span class="n">switch_options</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"channel"</span><span class="p">,</span>
|
||||
<span class="s2">"delete"</span><span class="p">,</span>
|
||||
<span class="s2">"guild"</span><span class="p">,</span>
|
||||
<span class="s2">"list"</span><span class="p">,</span>
|
||||
<span class="s2">"remove"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:serversetting(DISCORD_ENABLED) and pperm(Developer)"</span>
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"Comms"</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdDiscord2Chan.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.comms.html#evennia.commands.default.comms.CmdDiscord2Chan.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">"""Manage the Evennia<->Discord channel links"""</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">settings</span><span class="o">.</span><span class="n">DISCORD_BOT_TOKEN</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"You must add your Discord bot application token to settings as DISCORD_BOT_TOKEN"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">discord_bot</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">bot</span> <span class="k">for</span> <span class="n">bot</span> <span class="ow">in</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">db_is_bot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">username</span><span class="o">=</span><span class="s2">"DiscordBot"</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">discord_bot</span><span class="p">:</span>
|
||||
<span class="c1"># create a new discord bot</span>
|
||||
<span class="n">bot_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">DISCORD_BOT_CLASS</span><span class="p">,</span> <span class="n">fallback</span><span class="o">=</span><span class="n">bots</span><span class="o">.</span><span class="n">DiscordBot</span><span class="p">)</span>
|
||||
<span class="n">discord_bot</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span><span class="s2">"DiscordBot"</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">bot_class</span><span class="p">)</span>
|
||||
<span class="n">discord_bot</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Created and initialized a new Discord relay bot."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">discord_bot</span> <span class="o">=</span> <span class="n">discord_bot</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">is_typeclass</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">DISCORD_BOT_CLASS</span><span class="p">,</span> <span class="n">exact</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"WARNING: The Discord bot's typeclass is '</span><span class="si">{</span><span class="n">discord_bot</span><span class="o">.</span><span class="n">typeclass_path</span><span class="si">}</span><span class="s2">'. This does not match </span><span class="si">{</span><span class="n">settings</span><span class="o">.</span><span class="n">DISCORD_BOT_CLASS</span><span class="si">}</span><span class="s2"> in settings!"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"guild"</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="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_guild</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_guild</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Messages to Evennia |wwill </span><span class="si">{</span><span class="s1">''</span> <span class="k">if</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_guild</span> <span class="k">else</span> <span class="s1">'not '</span><span class="si">}</span><span class="s2">|ninclude the Discord server."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="s2">"channel"</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="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_channel</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_channel</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Relayed messages |wwill </span><span class="si">{</span><span class="s1">''</span> <span class="k">if</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">tag_channel</span> <span class="k">else</span> <span class="s1">'not '</span><span class="si">}</span><span class="s2">|ninclude the originating channel."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"list"</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="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
||||
<span class="c1"># show all connections</span>
|
||||
<span class="k">if</span> <span class="n">channel_list</span> <span class="o">:=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">:</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span>
|
||||
<span class="s2">"|wLink ID|n"</span><span class="p">,</span>
|
||||
<span class="s2">"|wEvennia|n"</span><span class="p">,</span>
|
||||
<span class="s2">"|wDiscord|n"</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="s2">"cells"</span><span class="p">,</span>
|
||||
<span class="n">maxwidth</span><span class="o">=</span><span class="n">_DEFAULT_WIDTH</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># iterate through the channel links</span>
|
||||
<span class="c1"># load in the pretty names for the discord channels from cache</span>
|
||||
<span class="n">dc_chan_names</span> <span class="o">=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"discord_channels"</span><span class="p">,</span> <span class="p">{})</span>
|
||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">evchan</span><span class="p">,</span> <span class="n">dcchan</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">channel_list</span><span class="p">):</span>
|
||||
<span class="n">dc_info</span> <span class="o">=</span> <span class="n">dc_chan_names</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dcchan</span><span class="p">,</span> <span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="n">dcchan</span><span class="p">,</span> <span class="s2">"guild"</span><span class="p">:</span> <span class="s2">"unknown"</span><span class="p">})</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
||||
<span class="n">i</span><span class="p">,</span> <span class="n">evchan</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"#</span><span class="si">{</span><span class="n">dc_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'name'</span><span class="p">,</span><span class="s1">'?'</span><span class="p">)</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">dc_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'guild'</span><span class="p">,</span><span class="s1">'?'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">table</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">msg</span><span class="p">(</span><span class="s2">"No Discord connections found."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"disconnect"</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">"remove"</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">"delete"</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">if</span> <span class="n">channel_list</span> <span class="o">:=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">lid</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">strip</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">msg</span><span class="p">(</span><span class="s2">"Usage: discord2chan/remove <link id>"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="n">lid</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">channel_list</span><span class="p">):</span>
|
||||
<span class="n">ev_chan</span><span class="p">,</span> <span class="n">dc_chan</span> <span class="o">=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">lid</span><span class="p">)</span>
|
||||
<span class="n">dc_chan_names</span> <span class="o">=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"discord_channels"</span><span class="p">,</span> <span class="p">{})</span>
|
||||
<span class="n">dc_info</span> <span class="o">=</span> <span class="n">dc_chan_names</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dc_chan</span><span class="p">,</span> <span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="s2">"unknown"</span><span class="p">,</span> <span class="s2">"guild"</span><span class="p">:</span> <span class="s2">"unknown"</span><span class="p">})</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Removed link between </span><span class="si">{</span><span class="n">ev_chan</span><span class="si">}</span><span class="s2"> and #</span><span class="si">{</span><span class="n">dc_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'name'</span><span class="p">,</span><span class="s1">'?'</span><span class="p">)</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">dc_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'guild'</span><span class="p">,</span><span class="s1">'?'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"There are no active connections to Discord."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">ev_channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span>
|
||||
<span class="n">dc_channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">ev_channel</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">dc_channel</span><span class="p">:</span>
|
||||
<span class="c1"># show all discord channels linked to self.lhs</span>
|
||||
<span class="k">if</span> <span class="n">channel_list</span> <span class="o">:=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">:</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span>
|
||||
<span class="s2">"|wLink ID|n"</span><span class="p">,</span>
|
||||
<span class="s2">"|wEvennia|n"</span><span class="p">,</span>
|
||||
<span class="s2">"|wDiscord|n"</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="s2">"cells"</span><span class="p">,</span>
|
||||
<span class="n">maxwidth</span><span class="o">=</span><span class="n">_DEFAULT_WIDTH</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># iterate through the channel links</span>
|
||||
<span class="c1"># load in the pretty names for the discord channels from cache</span>
|
||||
<span class="n">dc_chan_names</span> <span class="o">=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"discord_channels"</span><span class="p">,</span> <span class="p">{})</span>
|
||||
<span class="n">results</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">evchan</span><span class="p">,</span> <span class="n">dcchan</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">channel_list</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">evchan</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="n">ev_channel</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
|
||||
<span class="n">dc_info</span> <span class="o">=</span> <span class="n">dc_chan_names</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dcchan</span><span class="p">,</span> <span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="n">dcchan</span><span class="p">,</span> <span class="s2">"guild"</span><span class="p">:</span> <span class="s2">"unknown"</span><span class="p">})</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">evchan</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"#</span><span class="si">{</span><span class="n">dc_info</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">dc_info</span><span class="p">[</span><span class="s1">'guild'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">results</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">if</span> <span class="n">results</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">table</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">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"There are no Discord channels connected to </span><span class="si">{</span><span class="n">ev_channel</span><span class="si">}</span><span class="s2">."</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">msg</span><span class="p">(</span><span class="s2">"There are no active connections to Discord."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># check if link already exists</span>
|
||||
<span class="k">if</span> <span class="n">channel_list</span> <span class="o">:=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">ev_channel</span><span class="p">,</span> <span class="n">dc_channel</span><span class="p">)</span> <span class="ow">in</span> <span class="n">channel_list</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Those channels are already linked."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="c1"># create the new link</span>
|
||||
<span class="n">channel_obj</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">search_channel</span><span class="p">(</span><span class="n">ev_channel</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channel_obj</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"There is no channel '</span><span class="si">{</span><span class="n">ev_channel</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">channel_obj</span> <span class="o">=</span> <span class="n">channel_obj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">channel_obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">dc_channel</span><span class="p">))</span>
|
||||
<span class="n">channel_obj</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">discord_bot</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">dc_chans</span> <span class="o">:=</span> <span class="n">discord_bot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">discord_channels</span><span class="p">:</span>
|
||||
<span class="n">dc_channel_name</span> <span class="o">=</span> <span class="n">dc_chans</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dc_channel</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="n">dc_channel</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">dc_channel_name</span> <span class="o">=</span> <span class="n">dc_channel</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Discord connection created: </span><span class="si">{</span><span class="n">channel_obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> <-> #</span><span class="si">{</span><span class="n">dc_channel_name</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@
|
|||
<span class="k">if</span> <span class="n">strings</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">"</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">strings</span><span class="p">))</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="sa">f</span><span class="s2">"No nicks found matching '</span><span class="si">{</span><span class="bp">self</span><span class="p">,</span><span class="n">lhs</span><span class="si">}</span><span class="s2">'"</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="sa">f</span><span class="s2">"No nicks found matching '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="k">return</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="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -2080,6 +2080,58 @@
|
|||
<span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TestDiscord"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestDiscord">[docs]</a><span class="nd">@override_settings</span><span class="p">(</span><span class="n">DISCORD_BOT_TOKEN</span><span class="o">=</span><span class="s2">"notarealtoken"</span><span class="p">,</span> <span class="n">DISCORD_ENABLED</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">class</span> <span class="nc">TestDiscord</span><span class="p">(</span><span class="n">BaseEvenniaCommandTest</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="TestDiscord.setUp"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestDiscord.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_channel</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"testchannel"</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="s2">"A test channel"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmddiscord</span> <span class="o">=</span> <span class="n">cmd_comms</span><span class="o">.</span><span class="n">CmdDiscord2Chan</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmddiscord</span><span class="o">.</span><span class="n">account_caller</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="c1"># create bot manually so it doesn't get started</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">discordbot</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
|
||||
<span class="s2">"DiscordBot"</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="s2">"evennia.accounts.bots.DiscordBot"</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestDiscord.tearDown"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestDiscord.tearDown">[docs]</a> <span class="k">def</span> <span class="nf">tearDown</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">channel</span><span class="o">.</span><span class="n">pk</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span></div>
|
||||
|
||||
<span class="nd">@parameterized</span><span class="o">.</span><span class="n">expand</span><span class="p">(</span>
|
||||
<span class="p">[</span>
|
||||
<span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"No Discord connections found."</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"/list"</span><span class="p">,</span> <span class="s2">"No Discord connections found."</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"/guild"</span><span class="p">,</span> <span class="s2">"Messages to Evennia will include the Discord server."</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"/channel"</span><span class="p">,</span> <span class="s2">"Relayed messages will include the originating channel."</span><span class="p">),</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">test_discord__switches</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd_args</span><span class="p">,</span> <span class="n">expected</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cmddiscord</span><span class="p">(),</span> <span class="n">cmd_args</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="TestDiscord.test_discord__linking"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestDiscord.test_discord__linking">[docs]</a> <span class="k">def</span> <span class="nf">test_discord__linking</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmddiscord</span><span class="p">(),</span> <span class="s2">"nosuchchannel = 5555555"</span><span class="p">,</span> <span class="s2">"There is no channel 'nosuchchannel'"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmddiscord</span><span class="p">(),</span>
|
||||
<span class="s2">"testchannel = 5555555"</span><span class="p">,</span>
|
||||
<span class="s2">"Discord connection created: testchannel <-> #5555555"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">discordbot</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="o">.</span><span class="n">subscriptions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">((</span><span class="s2">"testchannel"</span><span class="p">,</span> <span class="s2">"5555555"</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">discordbot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cmddiscord</span><span class="p">(),</span> <span class="s2">"testchannel = 5555555"</span><span class="p">,</span> <span class="s2">"Those channels are already linked."</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestDiscord.test_discord__list"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestDiscord.test_discord__list">[docs]</a> <span class="k">def</span> <span class="nf">test_discord__list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">discordbot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">channels</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"testchannel"</span><span class="p">,</span> <span class="s2">"5555555"</span><span class="p">)]</span>
|
||||
<span class="n">cmdobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmddiscord</span><span class="p">()</span>
|
||||
<span class="n">cmdobj</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">text</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"out"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">text</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">cmdobj</span><span class="p">,</span> <span class="s2">""</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertIn</span><span class="p">(</span><span class="s2">"testchannel"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">out</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertIn</span><span class="p">(</span><span class="s2">"5555555"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">out</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">cmdobj</span><span class="p">,</span> <span class="s2">"testchannel"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertIn</span><span class="p">(</span><span class="s2">"testchannel"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">out</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertIn</span><span class="p">(</span><span class="s2">"5555555"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">out</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TestBatchProcess"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestBatchProcess">[docs]</a><span class="k">class</span> <span class="nc">TestBatchProcess</span><span class="p">(</span><span class="n">BaseEvenniaCommandTest</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Test the batch processor.</span>
|
||||
|
|
|
|||
|
|
@ -543,7 +543,8 @@
|
|||
<span class="c1"># included in location.contents</span>
|
||||
<span class="n">candidates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="n">tags</span> <span class="o">=</span> <span class="p">[(</span><span class="n">tagkey</span><span class="p">,</span> <span class="n">tagcat</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">tagcat</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> <span class="k">for</span> <span class="n">tagkey</span><span class="p">,</span> <span class="o">*</span><span class="n">tagcat</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">tags</span><span class="p">)]</span>
|
||||
<span class="k">if</span> <span class="n">tags</span><span class="p">:</span>
|
||||
<span class="n">tags</span> <span class="o">=</span> <span class="p">[(</span><span class="n">tagkey</span><span class="p">,</span> <span class="n">tagcat</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">tagcat</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> <span class="k">for</span> <span class="n">tagkey</span><span class="p">,</span> <span class="o">*</span><span class="n">tagcat</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">tags</span><span class="p">)]</span>
|
||||
|
||||
<span class="n">results</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">search_object</span><span class="p">(</span>
|
||||
<span class="n">searchdata</span><span class="p">,</span>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue