Class: Rubirai::MessageChain

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/rubirai/messages/message_chain.rb

Overview

Message chain

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#botBot (readonly)

Returns the bot object.

Returns:

  • (Bot)

    the bot object



21
22
23
# File 'lib/rubirai/messages/message_chain.rb', line 21

def bot
  @bot
end

#idInteger? (readonly)

Returns the message id, may be nil.

Returns:

  • (Integer, nil)

    the message id, may be nil



21
# File 'lib/rubirai/messages/message_chain.rb', line 21

attr_reader :bot, :id, :raw, :send_time, :messages

#messagesObject (readonly)

Returns the value of attribute messages.



21
# File 'lib/rubirai/messages/message_chain.rb', line 21

attr_reader :bot, :id, :raw, :send_time, :messages

#rawHash{String => Object}? (readonly)

Returns the raw message chain, may be nil.

Returns:

  • (Hash{String => Object}, nil)

    the raw message chain, may be nil



21
# File 'lib/rubirai/messages/message_chain.rb', line 21

attr_reader :bot, :id, :raw, :send_time, :messages

#send_timeInteger? (readonly)

Returns the send time of the message chain, may be nil.

Returns:

  • (Integer, nil)

    the send time of the message chain, may be nil



21
# File 'lib/rubirai/messages/message_chain.rb', line 21

attr_reader :bot, :id, :raw, :send_time, :messages

Class Method Details

.make(*messages, bot: nil) ⇒ Rubirai::MessageChain

Makes a message chain from a list of messages

Parameters:

Returns:



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/rubirai/messages/message_chain.rb', line 28

def self.make(*messages, bot: nil)
  chain = new(bot)
  result = []
  messages.map { |msg| Message.to_message(msg, bot) }.each do |msg|
    if !result.empty? && result[-1].is_a?(PlainMessage) && msg.is_a?(PlainMessage)
      result[-1] = PlainMessage.from(text: result[-1].text + msg.text, bot: bot)
    else
      result.append msg
    end
  end
  chain.extend(*result)
  chain
end

Instance Method Details

#[](idx) ⇒ Object



67
68
69
# File 'lib/rubirai/messages/message_chain.rb', line 67

def [](idx)
  @messages[idx]
end

#concat!(msg_chain) ⇒ MessageChain

Concats this message chain with another one

Parameters:

Returns:



60
61
62
63
64
65
# File 'lib/rubirai/messages/message_chain.rb', line 60

def concat!(msg_chain)
  msg_chain.messages.each do |msg|
    internal_append msg
  end
  self
end

#each(&block) ⇒ Object



71
72
73
# File 'lib/rubirai/messages/message_chain.rb', line 71

def each(&block)
  @messages.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/rubirai/messages/message_chain.rb', line 83

def empty?
  @messages.empty?
end

#extend(*messages) ⇒ Rubirai::MessageChain Also known as: <<, append

Append messages to this message chain

Parameters:

Returns:



46
47
48
49
50
51
# File 'lib/rubirai/messages/message_chain.rb', line 46

def extend(*messages)
  messages.each do |msg|
    internal_append msg
  end
  self
end

#lengthObject



75
76
77
# File 'lib/rubirai/messages/message_chain.rb', line 75

def length
  @messages.length
end

#sizeObject



79
80
81
# File 'lib/rubirai/messages/message_chain.rb', line 79

def size
  @messages.size
end

#to_aArray<Hash{String => Object}>

Convert the message chain to an array of hashes.

Returns:

  • (Array<Hash{String => Object}>)


112
113
114
# File 'lib/rubirai/messages/message_chain.rb', line 112

def to_a
  @messages.map(&:to_h)
end