Sha256: 8bc16d8728c1a799f1c3d564fbdb861d4058d652e667015f22d93720beb23081
Contents?: true
Size: 1.61 KB
Versions: 1
Compression:
Stored size: 1.61 KB
Contents
require 'date' require_relative 'helpers' require_relative 'room' require_relative 'user' module ChatX class Message attr_reader :server, :timestamp, :content, :room, :user, :id, :parent_id 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 def reply(bot, content) bot.say ":#{id} #{content}", @room.id, server: @server end def reply? @content =~ /^:\d+\s/ end def pings @pings = @content.scan(/@(\w+)/).flatten if @pings.nil? @pings end def pinged?(username) @pings.map(&:downcase).map { |x| username.downcase.start_with? x }.any? end %i[ toggle_star star_count star unstar starred? cancel_stars delete edit toggle_pin pin unpin pinned? ].each do |name| define_method(name) { |bot| bot.send(name, @id, @server) } end def self.from_hash(server, hash) new server, **ChatX::Helpers.symbolize_hash_keys(hash) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
chatx-0.0.0.pre.pre3 | lib/chatx/models/message.rb |