Class: Discordrb::Permissions
- Inherits:
-
Object
- Object
- Discordrb::Permissions
- Defined in:
- lib/discordrb/permissions.rb
Overview
List of permissions Discord uses
Constant Summary collapse
- FLAGS =
This hash maps bit positions to logical permissions. I'm not sure what the unlabeled bits are reserved for.
{ # Bit => Permission # Value 0 => :create_instant_invite, # 1 1 => :kick_members, # 2 2 => :ban_members, # 4 3 => :administrator, # 8 4 => :manage_channels, # 16 5 => :manage_server, # 32 6 => :add_reactions, # 64 7 => :view_audit_log, # 128 8 => :priority_speaker, # 256 # 9 # 512 10 => :read_messages, # 1024 11 => :send_messages, # 2048 12 => :send_tts_messages, # 4096 13 => :manage_messages, # 8192 14 => :embed_links, # 16384 15 => :attach_files, # 32768 16 => :read_message_history, # 65536 17 => :mention_everyone, # 131072 18 => :use_external_emoji, # 262144 # 19 # 524288 20 => :connect, # 1048576 21 => :speak, # 2097152 22 => :mute_members, # 4194304 23 => :deafen_members, # 8388608 24 => :move_members, # 16777216 25 => :use_voice_activity, # 33554432 26 => :change_nickname, # 67108864 27 => :manage_nicknames, # 134217728 28 => :manage_roles, # 268435456, also Manage Permissions 29 => :manage_webhooks, # 536870912 30 => :manage_emojis # 1073741824 }.freeze
Instance Attribute Summary collapse
-
#bits ⇒ Object
Returns the value of attribute bits.
Class Method Summary collapse
-
.bits(list) ⇒ Integer
Return the corresponding bits for an array of permission flag symbols.
Instance Method Summary collapse
-
#==(other) ⇒ Object
Comparison based on permission bits.
-
#init_vars ⇒ Object
Initialize the instance variables based on the bitset.
-
#initialize(bits = 0, writer = nil) ⇒ Permissions
constructor
Create a new Permissions object either as a blank slate to add permissions to (for example for Channel#define_overwrite) or from existing bit data to read out.
Constructor Details
#initialize(bits = 0, writer = nil) ⇒ Permissions
Create a new Permissions object either as a blank slate to add permissions to (for example for Channel#define_overwrite) or from existing bit data to read out.
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/discordrb/permissions.rb', line 106 def initialize(bits = 0, writer = nil) @writer = writer @bits = if bits.is_a? Array self.class.bits(bits) else bits end init_vars end |
Instance Attribute Details
#bits ⇒ Object
Returns the value of attribute bits.
61 62 63 |
# File 'lib/discordrb/permissions.rb', line 61 def bits @bits end |
Class Method Details
.bits(list) ⇒ Integer
Return the corresponding bits for an array of permission flag symbols. This is a class method that can be used to calculate bits instead of instancing a new Permissions object.
85 86 87 88 89 90 91 92 93 |
# File 'lib/discordrb/permissions.rb', line 85 def self.bits(list) value = 0 FLAGS.each do |position, flag| value += 2**position if list.include? flag end value end |
Instance Method Details
#==(other) ⇒ Object
Comparison based on permission bits
119 120 121 122 |
# File 'lib/discordrb/permissions.rb', line 119 def ==(other) false unless other.is_a? Discordrb::Permissions bits == other.bits end |
#init_vars ⇒ Object
Initialize the instance variables based on the bitset.
71 72 73 74 75 76 |
# File 'lib/discordrb/permissions.rb', line 71 def init_vars FLAGS.each do |position, flag| flag_set = ((@bits >> position) & 0x1) == 1 instance_variable_set "@#{flag}", flag_set end end |