def robot_config
      root.config :robot do
        config :name, type: String, default: "Lita"
        config :mention_name, type: String
        config :alias, type: String
        config :adapter, types: [String, Symbol], default: :shell
        config :locale, types: [String, Symbol], default: I18n.locale
        config :log_level, types: [String, Symbol], default: :info do
          validate do |value|
            unless LOG_LEVELS.include?(value.to_s.downcase.strip)
              "must be one of: #{LOG_LEVELS.join(', ')}"
            end
          end
        end
        config :log_formatter, type: Proc, default: (lambda do |severity, datetime, _progname, msg|
          "[#{datetime.utc}] #{severity}: #{msg}\n"
        end)
        config :admins
        config :error_handler, default: ->(_error, _metadata) {} do
          validate do |value|
            "must respond to #call" unless value.respond_to?(:call)
          end
        end
      end
    end
def robot_config
      root.config :robot do
        config :name, type: String, default: "Lita"
        config :mention_name, type: String
        config :alias, type: String
        config :adapter, types: [String, Symbol], default: :shell
        config :locale, types: [String, Symbol], default: I18n.locale
        config :log_level, types: [String, Symbol], default: :info do
          validate do |value|
            unless LOG_LEVELS.include?(value.to_s.downcase.strip)
              "must be one of: #{LOG_LEVELS.join(', ')}"
            end
          end
        end
        config :log_formatter, type: Proc, default: (lambda do |severity, datetime, _progname, msg|
          "[#{datetime.utc}] #{severity}: #{msg}\n"
        end)
        config :admins
        config :error_handler, default: ->(_error, _metadata) {} do
          validate do |value|
            "must respond to #call" unless value.respond_to?(:call)
          end
        end
      end
    end
Builds config.robot