Friday, September 20, 2024 2:56:44 AM
> settings

Customize


Authenticate

> player.rb
# frozen_string_literal: true

module ESM
  class Message
    class Player < ImmutableStruct.define(:discord_id, :discord_name, :discord_mention, :steam_uid)
      def self.from(user)
        # Creates a hash with the keys being the keys of this class, and the value of nil
        # Allows for defaulting the values since ImmutableStruct requires a value of some sort
        data = members.zip([nil]).to_h

        case user
        when ESM::User
          data.merge!(
            steam_uid: user.steam_uid,
            discord_id: user.discord_id,
            discord_name: user.discord_username,
            discord_mention: user.mention
          )
        when ESM::User::Ephemeral
          # Having steam_uid as the default saves work for the A3 server
          data[:steam_uid] = user.steam_uid
          data[:discord_mention] = user.mention
          data[:discord_name] = user.mention
        else
          data.merge!(user)
        end

        new(**data)
      end

      def to_h
        super.delete_if { |_k, v| v.nil? }
      end
    end
  end
end
All opinions represented herein are my own
- © 2024 itsthedevman
- build 340fbb8