Module: Discordrb::Events::Respondable

Included in:
MessageEvent, MessageIDEvent, ReactionEvent, ReactionRemoveAllEvent, TypingEvent
Defined in:
lib/discordrb/events/message.rb

Overview

Module to make sending messages easier with the presence of a text channel in an event

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#channelChannel (readonly)


10
11
12
# File 'lib/discordrb/events/message.rb', line 10

def channel
  @channel
end

Instance Method Details

#<<(message) ⇒ Object

Adds a string to be sent after the event has finished execution. Avoids problems with rate limiting because only one message is ever sent. If it is used multiple times, the strings will bunch up into one message (separated by newlines)


44
45
46
47
48
# File 'lib/discordrb/events/message.rb', line 44

def <<(message)
  addition = "#{message}\n"
  @saved_message = @saved_message ? @saved_message + addition : addition
  nil
end

#drainObject

Drains the currently saved message, which clears it out, resulting in everything being saved before being thrown away and nothing being sent to the channel (unless there is something saved after this).

See Also:


53
54
55
56
# File 'lib/discordrb/events/message.rb', line 53

def drain
  @saved_message = ''
  nil
end

#drain_into(result) ⇒ String

Drains the currently saved message into a result string. This prepends it before that string, clears the saved message and returns the concatenation.


62
63
64
65
66
67
68
# File 'lib/discordrb/events/message.rb', line 62

def drain_into(result)
  return if result.is_a?(Discordrb::Message)

  result = (@saved_message.nil? ? '' : @saved_message.to_s) + (result.nil? ? '' : result.to_s)
  drain
  result
end

#send_embed(message = '', embed = nil) {|embed| ... } ⇒ Message

The same as #send_message, but yields a Webhooks::Embed for easy building of embedded content inside a block.

Yields:

  • (embed)

    Yields the embed to allow for easy building inside a block.

Yield Parameters:

See Also:


29
30
31
# File 'lib/discordrb/events/message.rb', line 29

def send_embed(message = '', embed = nil, &block)
  channel.send_embed(message, embed, &block)
end

#send_message(content, tts = false, embed = nil) ⇒ Discordrb::Message Also known as: send, respond

Sends a message to the channel this message was sent in, right now. It is usually preferable to use #<< instead because it avoids rate limiting problems


18
19
20
# File 'lib/discordrb/events/message.rb', line 18

def send_message(content, tts = false, embed = nil)
  channel.send_message(content, tts, embed)
end

#send_temporary_message(content, timeout) ⇒ Object Also known as: send_temp

Sends a temporary message to the channel this message was sent in, right now.


36
37
38
# File 'lib/discordrb/events/message.rb', line 36

def send_temporary_message(content, timeout)
  channel.send_temporary_message(content, timeout)
end