class ChatX::Message
Attributes
body[R]
content[R]
id[R]
parent_id[R]
room[R]
server[R]
timestamp[R]
user[R]
Public Class Methods
from_hash(server, hash)
click to toggle source
# File lib/chatx/models/message.rb, line 66 def self.from_hash(server, hash) new server, **ChatX::Helpers.symbolize_hash_keys(hash) end
new(server, **opts)
click to toggle source
# File lib/chatx/models/message.rb, line 10 def initialize(server, **opts) if opts.values_at(:time_stamp, :content, :room_id, :user_id, :message_id).any?(&:nil?) raise ChatX::InitializationDataException, 'Got nil for an expected message property' end @server = server @id = opts[:message_id] @timestamp = Time.at(opts[:time_stamp]).utc.to_datetime @content = opts[:content] @room = ChatX::Helpers.cached opts[:room_id].to_i, :rooms do ChatX::Room.new server, room_id: opts[:room_id].to_i end @user = ChatX::Helpers.cached opts[:user_id].to_i, :users do ChatX::User.new server, user_id: opts[:user_id].to_i end @parent_id = opts[:parent_id] end
Public Instance Methods
pinged?(username)
click to toggle source
# File lib/chatx/models/message.rb, line 45 def pinged?(username) @pings.map(&:downcase).map { |x| username.downcase.start_with? x }.any? end
pings()
click to toggle source
# File lib/chatx/models/message.rb, line 40 def pings @pings = @content.scan(/@(\w+)/).flatten if @pings.nil? @pings end
reply(bot, content)
click to toggle source
# File lib/chatx/models/message.rb, line 32 def reply(bot, content) bot.say ":#{id} #{content}", @room.id, server: @server end
reply?()
click to toggle source
# File lib/chatx/models/message.rb, line 36 def reply? @content =~ /^:\d+\s/ end