Class: Rubirai::MessageChain
- Inherits:
-
Object
- Object
- Rubirai::MessageChain
- Includes:
- Enumerable
- Defined in:
- lib/rubirai/messages/message_chain.rb
Overview
Message chain
Instance Attribute Summary collapse
-
#bot ⇒ Bot
readonly
The bot object.
-
#id ⇒ Integer?
readonly
The message id, may be
nil. -
#messages ⇒ Object
readonly
Returns the value of attribute messages.
-
#raw ⇒ Hash{String => Object}?
readonly
The raw message chain, may be
nil. -
#send_time ⇒ Integer?
readonly
The send time of the message chain, may be
nil.
Class Method Summary collapse
-
.make(*messages, bot: nil) ⇒ Rubirai::MessageChain
Makes a message chain from a list of messages.
Instance Method Summary collapse
- #[](idx) ⇒ Object
-
#concat!(msg_chain) ⇒ MessageChain
Concats this message chain with another one.
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
-
#extend(*messages) ⇒ Rubirai::MessageChain
(also: #<<, #append)
Append messages to this message chain.
- #length ⇒ Object
- #size ⇒ Object
-
#to_a ⇒ Array<Hash{String => Object}>
Convert the message chain to an array of hashes.
Instance Attribute Details
#bot ⇒ Bot (readonly)
Returns the bot object.
21 22 23 |
# File 'lib/rubirai/messages/message_chain.rb', line 21 def bot @bot end |
#id ⇒ Integer? (readonly)
Returns the message id, may be nil.
21 |
# File 'lib/rubirai/messages/message_chain.rb', line 21 attr_reader :bot, :id, :raw, :send_time, :messages |
#messages ⇒ Object (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 |
#raw ⇒ Hash{String => Object}? (readonly)
Returns 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_time ⇒ Integer? (readonly)
Returns 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
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(*, bot: nil) chain = new(bot) result = [] .map { |msg| 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
60 61 62 63 64 65 |
# File 'lib/rubirai/messages/message_chain.rb', line 60 def concat!(msg_chain) msg_chain..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
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
46 47 48 49 50 51 |
# File 'lib/rubirai/messages/message_chain.rb', line 46 def extend(*) .each do |msg| internal_append msg end self end |
#length ⇒ Object
75 76 77 |
# File 'lib/rubirai/messages/message_chain.rb', line 75 def length @messages.length end |
#size ⇒ Object
79 80 81 |
# File 'lib/rubirai/messages/message_chain.rb', line 79 def size @messages.size end |
#to_a ⇒ Array<Hash{String => Object}>
Convert the message chain to an array of hashes.
112 113 114 |
# File 'lib/rubirai/messages/message_chain.rb', line 112 def to_a @messages.map(&:to_h) end |