Method: Discordrb::Overwrite#initialize

Defined in:
lib/discordrb/data/overwrite.rb

#initialize(object = nil, type: nil, allow: 0, deny: 0) ⇒ Overwrite

Creates a new Overwrite object

Examples:

Create an overwrite for a role that can mention everyone, send TTS messages, but can't create instant invites

allow = Discordrb::Permissions.new
allow.can_mention_everyone = true
allow.can_send_tts_messages = true

deny = Discordrb::Permissions.new
deny.can_create_instant_invite = true

# Find some role by name
role = server.roles.find { |r| r.name == 'some role' }

Overwrite.new(role, allow: allow, deny: deny)

Create an overwrite by ID and permissions bits

Overwrite.new(120571255635181568, type: 'member', allow: 1024, deny: 0)

Parameters:

  • object (Integer, #id) (defaults to: nil)

    the ID or object this overwrite is for

  • type (String, Symbol, Integer) (defaults to: nil)

    the type of object this overwrite is for (only required if object is an Integer)

  • allow (String, Integer, Permissions) (defaults to: 0)

    allowed permissions for this overwrite, by bits or a Permissions object

  • deny (String, Integer, Permissions) (defaults to: 0)

    denied permissions for this overwrite, by bits or a Permissions object

Raises:

  • (ArgumentError)

    if type is not :member or :role



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/discordrb/data/overwrite.rb', line 45

def initialize(object = nil, type: nil, allow: 0, deny: 0)
  if type
    type = TYPES.value?(type) ? TYPES.key(type) : type.to_sym
    raise ArgumentError, 'Overwrite type must be :member or :role' unless type
  end

  @id = object.respond_to?(:id) ? object.id : object

  @type = case object
          when User, Member, Recipient, Profile
            :member
          when Role
            :role
          else
            type
          end

  @allow = allow.is_a?(Permissions) ? allow : Permissions.new(allow)
  @deny = deny.is_a?(Permissions) ? deny : Permissions.new(deny)
end