def add_emoji(name, image, roles = [], reason: nil)
      image_string = image
      if image.respond_to? :read
        image_string = 'data:image/jpg;base64,'
        image_string += Base64.strict_encode64(image.read)
      end

      data = JSON.parse(API::Server.add_emoji(@bot.token, @id, image_string, name, roles.map(&:resolve_id), reason))
      new_emoji = Emoji.new(data)
      @emoji[new_emoji.id] = new_emoji
    end
def add_emoji(name, image, roles = [], reason: nil)
      image_string = image
      if image.respond_to? :read
        image_string = 'data:image/jpg;base64,'
        image_string += Base64.strict_encode64(image.read)
      end

      data = JSON.parse(API::Server.add_emoji(@bot.token, @id, image_string, name, roles.map(&:resolve_id), reason))
      new_emoji = Emoji.new(data)
      @emoji[new_emoji.id] = new_emoji
    end
Adds a new custom emoji on this server.
 @param name [String] The name of emoji to create.
 @param image [String, #read] A base64 encoded string with the image data, or an object that responds to `#read`, such as `File`.
 @param roles [Array<Role, String, Integer>] An array of roles, or role IDs to be whitelisted for this emoji.
 @param reason [String] The reason the for the creation of this emoji.
 @return [Emoji] The emoji that has been added.