Friday, September 20, 2024 2:48:04 AM
> settings

Customize


Authenticate

> discord_log_v1.rb
# frozen_string_literal: true

module ESM
  module Event
    class DiscordLogV1
      def initialize(connection:, server:, parameters:)
        @server = server
        @community = server.community
        @params = parameters.log_info
      end

      # params
      #   template [embed, message]
      #   message -> if template == "message"
      #   embed [title, description, fields: [name, value, inline]] -> if template == "embed"
      #   type [success, warn, error]
      def run!
        message =
          case @params.template
          when "message"
            "**Log from `#{@server.server_id}`**\n#{@params.message}"
          when "embed"
            build_embed
          end

        @community.log_event(:discord_log, message)
      end

      private

      def build_embed
        # Unpack the array
        title, description, fields = ESM::JSON.parse(@params.embed)

        # Build an embed from the values
        ESM::Embed.build do |e|
          e.set_author(name: "Log from #{@server.server_id}")
          e.title = title.to_s
          e.description = description.to_s

          fields.each do |field|
            e.add_field(name: field.first.to_s, value: field.second.to_s, inline: field.third || false)
          end

          e.color =
            case @params.type
            when "success"
              :green
            when "warn"
              :yellow
            when "error"
              :red
            when "info"
              :blue
            else
              ESM::Color.random
            end
        end
      rescue => e
        ESM.logger.error("#{self.class}##{__method__}") do
          ESM::JSON.pretty_generate(
            exception: e.message,
            backtrace: e.backtrace[0..2]
          )
        end

        I18n.t("exceptions.invalid_discord_log", server: @server.server_id, message: @params.embed)
      end
    end
  end
end
All opinions represented herein are my own
- © 2024 itsthedevman
- build 340fbb8