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)

Returns the channel in which this event occurred.

Returns:

  • (Channel)

    the channel in which this event occurred



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)

Parameters:

  • message (String)

    The message to send to the channel



31
32
33
34
35
# File 'lib/discordrb/events/message.rb', line 31

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:



40
41
42
43
# File 'lib/discordrb/events/message.rb', line 40

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.

Parameters:

  • result (String)

    The result string to drain into.

Returns:

  • (String)

    a string formed by concatenating the saved message and the argument.



49
50
51
52
53
54
55
# File 'lib/discordrb/events/message.rb', line 49

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_message(content) ⇒ 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

Parameters:

  • content (String)

    The message to send to the channel

Returns:



16
17
18
# File 'lib/discordrb/events/message.rb', line 16

def send_message(content)
  channel.send_message(content)
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.

Parameters:

  • content (String)

    The content to send. Should not be longer than 2000 characters or it will result in an error.

  • timeout (Float)

    The amount of time in seconds after which the message sent will be deleted.



23
24
25
# File 'lib/discordrb/events/message.rb', line 23

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