Class: Rubirai::MessageChain
- Inherits:
-
Object
- Object
- Rubirai::MessageChain
- Includes:
- Enumerable
- Defined in:
- lib/rubirai/messages/message_chain.rb
Instance Attribute Summary collapse
-
#bot ⇒ Object
readonly
Returns the value of attribute bot.
-
#messages ⇒ Object
readonly
Returns the value of attribute messages.
-
#read_only ⇒ Object
readonly
Returns the value of attribute read_only.
-
#send_time ⇒ Object
readonly
Returns the value of attribute send_time.
-
#sender_id ⇒ Object
readonly
Returns the value of attribute sender_id.
Class Method Summary collapse
-
.make(*messages, sender_id: nil, bot: nil) ⇒ Rubirai::MessageChain
Makes a message chain from a list of messages.
Instance Method Summary collapse
- #[](idx) ⇒ Object
- #concat(msg_chain) ⇒ Object
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
-
#extend(*messages) ⇒ Rubirai::MessageChain
(also: #<<, #append)
Append messages to this message chain.
-
#initialize(bot = nil, source = nil, sender_id: nil) ⇒ MessageChain
constructor
A new instance of MessageChain.
- #length ⇒ Object
- #size ⇒ Object
- #to_a ⇒ Object
Constructor Details
#initialize(bot = nil, source = nil, sender_id: nil) ⇒ MessageChain
Returns a new instance of MessageChain.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/rubirai/messages/message_chain.rb', line 76 def initialize(bot = nil, source = nil, sender_id: nil) @bot = bot @sender_id = sender_id @messages = [] return unless source raise(MiraiError, 'source is not array') unless source.is_a? Array raise(MiraiError, 'length is zero') if source.empty? if source[0]['type'] == 'Source' @sender_id = source[0]['id'] @send_time = source[0]['time'] extend(*source.drop(1)) else extend(*source) end end |
Instance Attribute Details
#bot ⇒ Object (readonly)
Returns the value of attribute bot.
10 11 12 |
# File 'lib/rubirai/messages/message_chain.rb', line 10 def bot @bot end |
#messages ⇒ Object (readonly)
Returns the value of attribute messages.
10 11 12 |
# File 'lib/rubirai/messages/message_chain.rb', line 10 def @messages end |
#read_only ⇒ Object (readonly)
Returns the value of attribute read_only.
10 11 12 |
# File 'lib/rubirai/messages/message_chain.rb', line 10 def read_only @read_only end |
#send_time ⇒ Object (readonly)
Returns the value of attribute send_time.
10 11 12 |
# File 'lib/rubirai/messages/message_chain.rb', line 10 def send_time @send_time end |
#sender_id ⇒ Object (readonly)
Returns the value of attribute sender_id.
10 11 12 |
# File 'lib/rubirai/messages/message_chain.rb', line 10 def sender_id @sender_id end |
Class Method Details
.make(*messages, sender_id: nil, bot: nil) ⇒ Rubirai::MessageChain
Makes a message chain from a list of messages
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/rubirai/messages/message_chain.rb', line 18 def self.make(*, sender_id: nil, bot: nil) chain = new(bot, sender_id: sender_id) 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
53 54 55 |
# File 'lib/rubirai/messages/message_chain.rb', line 53 def [](idx) @messages[idx] end |
#concat(msg_chain) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/rubirai/messages/message_chain.rb', line 46 def concat(msg_chain) msg_chain.to_a.each do |msg| internal_append msg end self end |
#each(&block) ⇒ Object
57 58 59 |
# File 'lib/rubirai/messages/message_chain.rb', line 57 def each(&block) @messages.each(&block) end |
#empty? ⇒ Boolean
69 70 71 |
# File 'lib/rubirai/messages/message_chain.rb', line 69 def empty? @messages.empty? end |
#extend(*messages) ⇒ Rubirai::MessageChain Also known as: <<, append
Append messages to this message chain
36 37 38 39 40 41 |
# File 'lib/rubirai/messages/message_chain.rb', line 36 def extend(*) .each do |msg| internal_append msg end self end |
#length ⇒ Object
61 62 63 |
# File 'lib/rubirai/messages/message_chain.rb', line 61 def length @messages.length end |
#size ⇒ Object
65 66 67 |
# File 'lib/rubirai/messages/message_chain.rb', line 65 def size @messages.size end |
#to_a ⇒ Object
93 94 95 |
# File 'lib/rubirai/messages/message_chain.rb', line 93 def to_a @messages.map(&:to_h) end |