Class: Discordrb::Role
- Inherits:
-
Object
- Object
- Discordrb::Role
- Includes:
- IDObject
- Defined in:
- lib/discordrb/data/role.rb
Overview
A Discord role that contains permissions and applies to certain users
Defined Under Namespace
Classes: RoleWriter
Instance Attribute Summary collapse
-
#colour ⇒ ColourRGB
(also: #color)
The role colour.
-
#hoist ⇒ true, false
Whether or not this role should be displayed separately from other users.
-
#icon ⇒ String?
The icon hash for this role.
-
#managed ⇒ true, false
(also: #managed?)
readonly
Whether or not this role is managed by an integration or a bot.
-
#mentionable ⇒ true, false
(also: #mentionable?)
Whether this role can be mentioned using a role mention.
-
#name ⇒ String
This role's name ("new role" if it hasn't been changed).
-
#permissions ⇒ Permissions
readonly
This role's permissions.
-
#position ⇒ Integer
readonly
The position of this role in the hierarchy.
-
#server ⇒ Server
readonly
The server this role belongs to.
Attributes included from IDObject
Instance Method Summary collapse
-
#delete(reason = nil) ⇒ Object
Deletes this role.
-
#icon_url(format = 'webp') ⇒ String
URL to the icon on Discord's CDN.
-
#inspect ⇒ Object
The inspect method is overwritten to give more useful output.
-
#members ⇒ Array<Member>
(also: #users)
An array of members who have this role.
-
#mention ⇒ String
A string that will mention this role, if it is mentionable.
-
#packed=(packed, update_perms = true) ⇒ Object
Changes this role's permissions to a fixed bitfield.
-
#sort_above(other = nil) ⇒ Integer
(also: #move_above)
Moves this role above another role in the list.
Methods included from IDObject
#==, #creation_time, synthesise
Instance Attribute Details
#colour ⇒ ColourRGB Also known as: color
Returns the role colour.
29 30 31 |
# File 'lib/discordrb/data/role.rb', line 29 def colour @colour end |
#hoist ⇒ true, false
Returns whether or not this role should be displayed separately from other users.
18 19 20 |
# File 'lib/discordrb/data/role.rb', line 18 def hoist @hoist end |
#icon ⇒ String?
Returns The icon hash for this role.
36 37 38 |
# File 'lib/discordrb/data/role.rb', line 36 def icon @icon end |
#managed ⇒ true, false (readonly) Also known as: managed?
Returns whether or not this role is managed by an integration or a bot.
21 22 23 |
# File 'lib/discordrb/data/role.rb', line 21 def managed @managed end |
#mentionable ⇒ true, false Also known as: mentionable?
Returns whether this role can be mentioned using a role mention.
25 26 27 |
# File 'lib/discordrb/data/role.rb', line 25 def mentionable @mentionable end |
#name ⇒ String
Returns this role's name ("new role" if it hasn't been changed).
12 13 14 |
# File 'lib/discordrb/data/role.rb', line 12 def name @name end |
#permissions ⇒ Permissions (readonly)
Returns this role's permissions.
9 10 11 |
# File 'lib/discordrb/data/role.rb', line 9 def @permissions end |
#position ⇒ Integer (readonly)
Returns the position of this role in the hierarchy.
33 34 35 |
# File 'lib/discordrb/data/role.rb', line 33 def position @position end |
#server ⇒ Server (readonly)
Returns the server this role belongs to.
15 16 17 |
# File 'lib/discordrb/data/role.rb', line 15 def server @server end |
Instance Method Details
#delete(reason = nil) ⇒ Object
Deletes this role. This cannot be undone without recreating the role!
189 190 191 192 |
# File 'lib/discordrb/data/role.rb', line 189 def delete(reason = nil) API::Server.delete_role(@bot.token, @server.id, @id, reason) @server.delete_role(@id) end |
#icon_url(format = 'webp') ⇒ String
Returns URL to the icon on Discord's CDN.
145 146 147 148 149 |
# File 'lib/discordrb/data/role.rb', line 145 def icon_url(format = 'webp') return nil unless @icon Discordrb::API.role_icon_url(@id, @icon, format) end |
#inspect ⇒ Object
The inspect method is overwritten to give more useful output
195 196 197 |
# File 'lib/discordrb/data/role.rb', line 195 def inspect "<Role name=#{@name} permissions=#{@permissions.inspect} hoist=#{@hoist} colour=#{@colour.inspect} server=#{@server.inspect} position=#{@position} mentionable=#{@mentionable}>" end |
#members ⇒ Array<Member> Also known as: users
This requests a member chunk if it hasn't for the server before, which may be slow initially
Returns an array of members who have this role.
84 85 86 |
# File 'lib/discordrb/data/role.rb', line 84 def members @server.members.select { |m| m.role? self } end |
#mention ⇒ String
Returns a string that will mention this role, if it is mentionable.
78 79 80 |
# File 'lib/discordrb/data/role.rb', line 78 def mention "<@&#{@id}>" end |
#packed=(packed, update_perms = true) ⇒ Object
Changes this role's permissions to a fixed bitfield. This allows setting multiple permissions at once with just one API call.
Information on how this bitfield is structured can be found at https://discord.com/developers/docs/topics/permissions.
163 164 165 166 |
# File 'lib/discordrb/data/role.rb', line 163 def packed=(packed, update_perms = true) update_role_data(permissions: packed) @permissions.bits = packed if update_perms end |
#sort_above(other = nil) ⇒ Integer Also known as: move_above
Moves this role above another role in the list.
172 173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/discordrb/data/role.rb', line 172 def sort_above(other = nil) other = @server.role(other.resolve_id) if other roles = @server.roles.sort_by(&:position) roles.delete_at(@position) index = other ? roles.index { |role| role.id == other.id } + 1 : 1 roles.insert(index, self) updated_roles = roles.map.with_index { |role, position| { id: role.id, position: position } } @server.update_role_positions(updated_roles) index end |