<p>
Hey everyone! 4 months and 438 files later, ESM has been migrated over to Discord Slash Commands. This means that ESM will no longer respond to any messages outside of the Slash Commands.
</p>
<h2><strong class="esm-text-color-red"><a href="https://github.com/itsthedevman/esm_bot" target="_blank">esm_bot</a></strong> changelog</h2>
<h3>Highlights</h3>
<ul class="uk-list uk-list-hyphen">
<li>
Added an experimental "hint" system to ESM that will display tips when executing a command.<br>
<small>I suspect this will require tweaking. Please let me know if tips are showing up too often.</small>
</li>
<li>
Added the ability for users to create aliases and set defaults for communities and servers. These can be managed via the <%= link_to "player dashboard", dashboard_index_path %> under your account information
</li>
<li>
Migrated all commands to use slash commands
</li>
</ul>
<h3>Core System</h3>
<ul class="uk-list uk-list-hyphen">
<li>Added <code>#attributes</code> and <code>#to_h</code> to various <code>Discordrb</code> classes</li>
<li>Added <code>Module#attr_predicate</code> for defining <code>?</code> methods easily</li>
<li>Added <code>ESM::Command::Arguments</code> that holds the command's arguments and values</li>
<li>Added <code>ESM::User::Ephemeral</code> to represent non-user objects (like steam uids)</li>
<li>Added Docker support</li>
<li>Added new colors to the list of available colors</li>
<li>Added support for defining a command's usage</li>
<li>Added timers for tracking how long it takes to run sections of code</li>
<li>Adjusted how commands are loaded, stored, registered, and found</li>
<li>Changed <code>ESM::Command::Base::Checks</code> from a class to a module</li>
<li>Changed <code>ESM::Command::Base::Permissions</code> from a class to a module</li>
<li>Created <code>Inquirer</code> class for better performance over <code>ActiveSupport::StringInquirer</code> and <code>ActiveSupport::ArrayInquirer</code></li>
<li><code>current_user</code> and <code>target_user</code> are now consistent and both return an instance of <code>ESM::User</code></li>
<li>Defaulted the internal timezone to UTC</li>
<li>Deprecated <code>ESM::CommandCache</code> in favor of <code>ESM::CommandDetail</code></li>
<li>Deprecated <code>ESM::Notifications</code></li>
<li>Deprecated <code>whitelists</code> for <code>allowlists</code></li>
<li>Improved bot pre-init and init</li>
<li>Improved configuration detection and loading for commands</li>
<li>Improved Discord user to ESM user matching</li>
<li>Re-implemented <code>Zeitwerk</code> to better clean up all file loading</li>
<li>Removed <code>ESM::Command::Argument::Parser</code> and <code>ESM::Command::ArgumentContainer</code></li>
<li>Removed anything related to prefixes for commands</li>
<li>Removed Rust dependencies</li>
<li>Replaced manual workflow for defining command examples with an automated one</li>
<li>Responses from servers no longer go through the Discord workflows</li>
<li>Rewrote <code>ESM::Command::Argument</code> to work with slash command arguments and improved it significantly</li>
<li>Rewrote how commands are registered and defined internally. Commands now have a set of defaults which can be modified when defining a command.</li>
<li>Significantly improved handling loading of older code when a command has been updated to V2</li>
<li>Upgraded dependencies</li>
</ul>
<h3>Commands</h3>
<ul class="uk-list uk-list-hyphen">
<li>
<code>/my aliases</code> <span class="uk-label">NEW</span>
<ul class="uk-list uk-list-hyphen">
<li>Displays any community or server aliases you've created</li>
</ul>
</li>
<li>
<code>!mode</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/community admin change_mode</code></li>
<li>No longer requires the "mode" to be provided. It acts like a toggle now</li>
</ul>
</li>
<li>
<code>!whois</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/community admin find_player</code></li>
</ul>
</li>
<li>
<code>!reset_cooldown</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/community admin reset_cooldown</code></li>
</ul>
</li>
<li>
<code>!id</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/community id</code></li>
</ul>
</li>
<li>
<code>!servers</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/community servers</code></li>
<li>Online servers are displayed first followed by offline servers</li>
</ul>
</li>
<li>
<code>!help</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/help</code></li>
<li>Removed history section</li>
</ul>
</li>
<li>
<code>!preferences</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/my preferences</code></li>
</ul>
</li>
<li>
<code>!requests</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/my requests</code></li>
</ul>
</li>
<li>
<code>!steam_uid</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/my steam_uid</code></li>
</ul>
</li>
<li>
<code>!birb</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/pictures birb</code></li>
</ul>
</li>
<li>
<code>!doggo</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/pictures doggo</code></li>
</ul>
</li>
<li>
<code>!meow</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/pictures meow</code></li>
</ul>
</li>
<li>
<code>!snek</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/pictures snek</code></li>
</ul>
</li>
<li>
<code>!register</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/register</code></li>
</ul>
</li>
<li>
<code>!accept</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/request accept</code></li>
</ul>
</li>
<li>
<code>!decline</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/request decline</code></li>
</ul>
</li>
<li>
<code>!broadcast</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server admin broadcast</code></li>
</ul>
</li>
<li>
<code>!sqf</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server admin execute_code</code></li>
</ul>
</li>
<li>
<code>!info</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server admin find</code></li>
</ul>
</li>
<li>
<code>!player</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server admin modify_player</code></li>
</ul>
</li>
<li>
<code>!reset</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server admin reset_player</code></li>
</ul>
</li>
<li>
<code>!logs</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server admin search_logs</code></li>
</ul>
</li>
<li>
<code>!server</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server details</code></li>
</ul>
</li>
<li>
<code>!gamble</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server gamble</code></li>
</ul>
</li>
<li>
<code>!me</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server my player</code></li>
</ul>
</li>
<li>
<code>!territories</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server my territories</code></li>
</ul>
</li>
<li>
<code>!reward</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server reward</code></li>
</ul>
</li>
<li>
<code>!stuck</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server stuck</code></li>
</ul>
</li>
<li>
<code>!uptime</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/server uptime</code></li>
</ul>
</li>
<li>
<code>!add</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory add_player</code></li>
</ul>
</li>
<li>
<code>!server_territories</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory admin list</code></li>
</ul>
</li>
<li>
<code>!restore</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory admin restore</code></li>
</ul>
</li>
<li>
<code>!demote</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory demote_player</code></li>
</ul>
</li>
<li>
<code>!pay</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory pay</code></li>
</ul>
</li>
<li>
<code>!promote</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory promote_player</code></li>
</ul>
</li>
<li>
<code>!remove</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory remove_player</code></li>
</ul>
</li>
<li>
<code>!set_id</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory set_id</code></li>
</ul>
</li>
<li>
<code>!upgrade</code>
<ul class="uk-list uk-list-hyphen">
<li>Renamed to <code>/territory upgrade</code></li>
</ul>
</li>
</ul>
<h2><strong class="esm-text-color-red">esm_website</strong> changelog</h2>
<h3>Core System</h3>
<ul class="uk-list uk-list-hyphen">
<li>Added user aliases and defaults to player dashboard</li>
<li>Adjusted how URLs are displayed to fix an edge case</li>
<li>Improved UI when commands are listed</li>
<li>Improved command references in the wiki <%= link_to "(check it out!)", wiki_commands_path %></li>
</ul>
<h2><strong class="esm-text-color-red"><a href="https://github.com/itsthedevman/esm_arma" target="_blank">esm_arma</a></strong> changelog</h2>
<p>No changes this update</p>
<%# <h3>Core System</h3>
<ul class="uk-list uk-list-hyphen">
<li>
</li>
</ul> %>