Class: Discordrb::Channel
- Inherits:
-
Object
- Object
- Discordrb::Channel
- Defined in:
- lib/discordrb/data.rb
Overview
A Discord channel, including data like the topic
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#is_private ⇒ Object
readonly
Returns the value of attribute is_private.
-
#name ⇒ Object
Returns the value of attribute name.
-
#permission_overwrites ⇒ Object
readonly
Returns the value of attribute permission_overwrites.
-
#position ⇒ Object
Returns the value of attribute position.
-
#recipient ⇒ Object
readonly
Returns the value of attribute recipient.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
-
#topic ⇒ Object
Returns the value of attribute topic.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Instance Method Summary collapse
-
#await(key, attributes = {}, &block) ⇒ Object
Add an await for a message in this channel.
- #delete ⇒ Object
- #history(amount, before_id = nil, after_id = nil) ⇒ Object
-
#initialize(data, bot, server = nil) ⇒ Channel
constructor
A new instance of Channel.
- #make_invite(max_age = 0, max_uses = 0, temporary = false, xkcd = false) ⇒ Object (also: #invite)
- #private? ⇒ Boolean
- #send_file(file) ⇒ Object
- #send_message(content) ⇒ Object (also: #send, #message)
-
#start_typing ⇒ Object
Starts typing, which displays the typing indicator on the client for five seconds.
- #update_from(other) ⇒ Object
- #update_overwrites(overwrites) ⇒ Object
-
#users ⇒ Object
List of users currently in a channel.
Constructor Details
#initialize(data, bot, server = nil) ⇒ Channel
Returns a new instance of Channel.
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 |
# File 'lib/discordrb/data.rb', line 295 def initialize(data, bot, server = nil) @bot = bot # data is a sometimes a Hash and othertimes an array of Hashes, you only want the last one if it's an array data = data[-1] if data.is_a?(Array) @id = data['id'].to_i @type = data['type'] || 'text' @topic = data['topic'] @position = data['position'] @is_private = data['is_private'] if @is_private @recipient = User.new(data['recipient'], bot) @name = @recipient.username else @name = data['name'] @server = bot.server(data['guild_id'].to_i) @server ||= server end # Populate permission overwrites = {} return unless data['permission_overwrites'] data['permission_overwrites'].each do |element| role_id = element['id'].to_i deny = Permissions.new(element['deny']) allow = Permissions.new(element['allow']) [role_id] = OpenStruct.new [role_id].deny = deny [role_id].allow = allow end end |
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def id @id end |
#is_private ⇒ Object (readonly)
Returns the value of attribute is_private.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def is_private @is_private end |
#name ⇒ Object
Returns the value of attribute name.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def name @name end |
#permission_overwrites ⇒ Object (readonly)
Returns the value of attribute permission_overwrites.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def end |
#position ⇒ Object
Returns the value of attribute position.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def position @position end |
#recipient ⇒ Object (readonly)
Returns the value of attribute recipient.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def recipient @recipient end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def server @server end |
#topic ⇒ Object
Returns the value of attribute topic.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def topic @topic end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
289 290 291 |
# File 'lib/discordrb/data.rb', line 289 def type @type end |
Instance Method Details
#await(key, attributes = {}, &block) ⇒ Object
Add an await for a message in this channel
385 386 387 |
# File 'lib/discordrb/data.rb', line 385 def await(key, attributes = {}, &block) @bot.add_await(key, MessageEvent, { in: @id }.merge(attributes), &block) end |
#delete ⇒ Object
337 338 339 |
# File 'lib/discordrb/data.rb', line 337 def delete API.delete_channel(@bot.token, @id) end |
#history(amount, before_id = nil, after_id = nil) ⇒ Object
375 376 377 378 |
# File 'lib/discordrb/data.rb', line 375 def history(amount, before_id = nil, after_id = nil) logs = API.channel_log(@bot.token, @id, amount, before_id, after_id) JSON.parse(logs).map { || Message.new(, @bot) } end |
#make_invite(max_age = 0, max_uses = 0, temporary = false, xkcd = false) ⇒ Object Also known as: invite
389 390 391 392 |
# File 'lib/discordrb/data.rb', line 389 def make_invite(max_age = 0, max_uses = 0, temporary = false, xkcd = false) response = API.create_invite(@bot.token, @id, max_age, max_uses, temporary, xkcd) Invite.new(JSON.parse(response), @bot) end |
#private? ⇒ Boolean
291 292 293 |
# File 'lib/discordrb/data.rb', line 291 def private? @server.nil? end |
#send_file(file) ⇒ Object
333 334 335 |
# File 'lib/discordrb/data.rb', line 333 def send_file(file) @bot.send_file(@id, file) end |
#send_message(content) ⇒ Object Also known as: send, message
329 330 331 |
# File 'lib/discordrb/data.rb', line 329 def (content) @bot.(@id, content) end |
#start_typing ⇒ Object
Starts typing, which displays the typing indicator on the client for five seconds. If you want to keep typing you'll have to resend this every five seconds. (An abstraction for this will eventually be coming)
397 398 399 |
# File 'lib/discordrb/data.rb', line 397 def start_typing API.start_typing(@bot.token, @id) end |
#update_from(other) ⇒ Object
356 357 358 359 360 361 362 |
# File 'lib/discordrb/data.rb', line 356 def update_from(other) @topic = other.topic @name = other.name @is_private = other.is_private @recipient = other.recipient = other. end |
#update_overwrites(overwrites) ⇒ Object
380 381 382 |
# File 'lib/discordrb/data.rb', line 380 def update_overwrites(overwrites) = overwrites end |
#users ⇒ Object
List of users currently in a channel
365 366 367 368 369 370 371 372 373 |
# File 'lib/discordrb/data.rb', line 365 def users if @type == 'text' @server.members.select { |u| u.status != :offline } else @server.members.select do |user| user.voice_channel.id == @id if user.voice_channel end end end |