<p>Say we have a troublesome player “YouSuck” - this is a person that refuses common courtesy - an abusive and spammy account that is clearly created by some bored internet hooligan only to cause grief. You have tried to be nice. Now you just want this troll gone.</p>
<p>This will lock the name YouSuck (as well as ‘yousuck’ and any other capitalization combination), and next time they try to log in with this name the server will not let them!</p>
<p>You can also give a reason so you remember later why this was a good thing (the banned account will never see this)</p>
<p>Just because you block YouSuck’s name might not mean the trolling human behind that account gives up. They can just create a new account YouSuckMore and be back at it. One way to make things harder for them is to tell the server to not allow connections from their particular IP address.</p>
<p>This will stop YouSuckMore connecting from their computer. Note however that IP address might change easily - either due to how the player’s Internet Service Provider operates or by the user simply changing computers. You can make a more general ban by putting asterisks <codeclass="docutils literal notranslate"><spanclass="pre">*</span></code> as wildcards for the groups of three digits in the address. So if you figure out that !YouSuckMore mainly connects from <codeclass="docutils literal notranslate"><spanclass="pre">237.333.0.223</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">237.333.0.225</span></code>, and <codeclass="docutils literal notranslate"><spanclass="pre">237.333.0.256</span></code> (only changes in their subnet), it might be an idea to put down a ban like this to include any number in that subnet:</p>
<p>You should combine the IP ban with a name-ban too of course, so the account YouSuckMore is truly locked regardless of where they connect from.</p>
<p>Be careful with too general IP bans however (more asterisks above). If you are unlucky you could be blocking out innocent players who just happen to connect from the same subnet as the offender.</p>
<p>Use the <codeclass="docutils literal notranslate"><spanclass="pre">unban</span></code> (or <codeclass="docutils literal notranslate"><spanclass="pre">ban</span></code>) command without any arguments and you will see a list of all currently active bans:</p>
<h2>Booting<aclass="headerlink"href="#booting"title="Permalink to this headline">¶</a></h2>
<p>YouSuck is not really noticing all this banning yet though - and won’t until having logged out and trying to log back in again. Let’s help the troll along.</p>
<h2>Summary of abuse-handling tools<aclass="headerlink"href="#summary-of-abuse-handling-tools"title="Permalink to this headline">¶</a></h2>
<p>Below are other useful commands for dealing with annoying players.</p>
<ulclass="simple">
<li><p><strong>who</strong>– (as admin) Find the IP of a account. Note that one account can be connected to from
multiple IPs depending on what you allow in your settings.</p></li>
<li><p><strong>examine/account thomas</strong>– Get all details about an account. You can also use <codeclass="docutils literal notranslate"><spanclass="pre">*thomas</span></code> to get
the account. If not given, you will get the <em>Object</em> thomas if it exists in the same location, which
is not what you want in this case.</p></li>
<li><p><strong>boot thomas</strong>– Boot all sessions of the given account name.</p></li>
<li><p><strong>boot 23</strong>– Boot one specific client session/IP by its unique id.</p></li>
<li><p><strong>ban</strong>– List all bans (listed with ids)</p></li>
<li><p><strong>ban thomas</strong>– Ban the user with the given account name</p></li>
<li><p><strong>ban/ip <codeclass="docutils literal notranslate"><spanclass="pre">134.233.2.111</span></code></strong>– Ban by IP</p></li>
<li><p><strong>ban/ip <codeclass="docutils literal notranslate"><spanclass="pre">134.233.2.*</span></code></strong>– Widen IP ban</p></li>
<li><p><strong>ban/ip <codeclass="docutils literal notranslate"><spanclass="pre">134.233.*.*</span></code></strong>– Even wider IP ban</p></li>
<li><p><strong>unban 34</strong>– Remove ban with id #34</p></li>
<li><p><strong>cboot mychannel = thomas</strong>– Boot a subscriber from a channel you control</p></li>
<li><p><strong>clock mychannel = control:perm(Admin);listen:all();send:all()</strong>– Fine control of access to your channel using <aclass="reference internal"href="../Components/Locks.html"><spanclass="doc std std-doc">lock definitions</span></a>.</p></li>
<li><p>Examine the source of the command. <aclass="reference external"href="https://github.com/evennia/evennia/blob/main/evennia/commands/default/comms.py#L686">The default <codeclass="docutils literal notranslate"><spanclass="pre">page</span></code> command class</a> has the lock string <strong>“cmd:not pperm(page_banned)”</strong>. This means that unless the player has the ‘permission’ “page_banned” they can use this command. You can assign any lock string to allow finer customization in your commands. You might look for the value of an <aclass="reference internal"href="../Components/Attributes.html"><spanclass="doc std std-doc">Attribute</span></a> or <aclass="reference internal"href="../Components/Tags.html"><spanclass="doc std std-doc">Tag</span></a>, your current location etc.</p></li>
<li><p><strong>type thomas = FlowerPot</strong>– Turn an annoying player into a flower pot (assuming you have a <codeclass="docutils literal notranslate"><spanclass="pre">FlowerPot</span></code> typeclass ready)</p></li>
<li><p><strong>py</strong>– Executes raw Python code, allows for direct inspection of the database and account objects on the fly. For advanced users.</p></li>