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.
{ # 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 => :stream, # 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 => :view_server_insights, # 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, also Manage Stickers 31 => :use_slash_commands, # 2147483648 32 => :request_to_speak, # 4294967296 33 => :manage_events, # 8589934592 34 => :manage_threads, # 17179869184 35 => :use_public_threads, # 34359738368 36 => :use_private_threads, # 68719476736 37 => :use_external_stickers, # 137438953472 38 => :send_messages_in_threads, # 274877906944 39 => :use_embedded_activities, # 549755813888 40 => :moderate_members # 1099511627776 }.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.
-
#defined_permissions ⇒ Array<Symbol>
Return an array of permission flag symbols for this class's permissions.
-
#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.
116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/discordrb/permissions.rb', line 116 def initialize(bits = 0, writer = nil) @writer = writer @bits = if bits.is_a? Array self.class.bits(bits) else bits.to_i end init_vars end |
Instance Attribute Details
#bits ⇒ Object
Returns the value of attribute bits.
71 72 73 |
# File 'lib/discordrb/permissions.rb', line 71 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.
95 96 97 98 99 100 101 102 103 |
# File 'lib/discordrb/permissions.rb', line 95 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
138 139 140 141 |
# File 'lib/discordrb/permissions.rb', line 138 def ==(other) false unless other.is_a? Discordrb::Permissions bits == other.bits end |
#defined_permissions ⇒ Array<Symbol>
Return an array of permission flag symbols for this class's permissions
133 134 135 |
# File 'lib/discordrb/permissions.rb', line 133 def FLAGS.filter_map { |value, name| (@bits & (1 << value)).positive? ? name : nil } end |
#init_vars ⇒ Object
Initialize the instance variables based on the bitset.
81 82 83 84 85 86 |
# File 'lib/discordrb/permissions.rb', line 81 def init_vars FLAGS.each do |position, flag| flag_set = ((@bits >> position) & 0x1) == 1 instance_variable_set "@#{flag}", flag_set end end |