Wednesday, July 15, 2026 4:56:15 AM
> reset.rb
# frozen_string_literal: true

module ESM
  module Command
    module Server
      class Reset < ApplicationCommand
        #################################
        #
        # Arguments (required first, then order matters)
        #

        # See Argument::TEMPLATES[:server_id]
        argument :server_id, display_name: :on

        # See Argument::TEMPLATES[:target]
        # Optional: Omitting resets all
        argument :target, display_name: :whom, required: false

        #
        # Configuration
        #

        change_attribute :allowlist_enabled, default: true

        command_namespace :server, :admin, command_name: :reset_player
        command_type :admin

        limit_to :text

        skip_action :nil_target_user

        #################################

        def on_execute
          check_for_registered_target_user! if target_user.is_a?(ESM::User)
          check_for_pending_request!

          # Create a confirmation request to the requestee
          add_request(
            to: current_user,
            description: I18n.t(
              "commands.reset.request_description",
              user: current_user.mention,
              server: target_server.server_id
            )
          )

          # Remind them to check their PMs
          embed = ESM::Embed.build(
            :success,
            description: I18n.t("commands.request.check_pm", user: current_user.mention)
          )

          reply(embed)
        end

        def on_request_accepted
          if target_user
            query_exile_database!("reset_player", uid: target_user.steam_uid)
          else
            query_exile_database!("reset_all")
          end

          description =
            if target_user
              I18n.t(
                "commands.reset.success_message_target",
                user: current_user.mention,
                target: target_user.mention
              )
            else
              I18n.t("commands.reset.success_message_all", user: current_user.mention)
            end

          embed = ESM::Embed.build(:success, description:)
          reply(embed)
        end

        module V1
          def on_response
            embed =
              if target_user.present?
                if @response.success
                  ESM::Embed.build(:success, description: I18n.t("commands.reset.success_message_target", user: current_user.mention, target: target_user.mention))
                else
                  ESM::Embed.build(:error, description: I18n.t("commands.reset.failure_message_target", user: current_user.mention, target: target_user.mention))
                end
              elsif @response.success
                ESM::Embed.build(:success, description: I18n.t("commands.reset.success_message_all", user: current_user.mention))
              else
                ESM::Embed.build(:error, description: I18n.t("commands.reset.failure_message_all", user: current_user.mention))
              end

            reply(embed)
          end

          def on_request_accepted
            deliver!(
              query: target_user.present? ? "reset_player" : "reset_all",
              targetUID: target_user&.steam_uid
            )
          end
        end
      end
    end
  end
end
All opinions represented herein are my own
- © 2024 - 2026 itsthedevman
- build 43aa0d7