class Ruboty::Handlers::Delay

Public Instance Methods

delay(message) click to toggle source
# File lib/ruboty/delay.rb, line 13
def delay(message)
  sec, body_ = *message.match_data.captures

  message.instance_eval do
    define_singleton_method(:body) do
      body_
    end
  end

  Thread.new do
    sleep sec.to_i

    begin
      robot.send(:handlers).each do |handler|
        handler.call(message)
      end
    rescue
      message.reply("after #{sec} seconds, fail with: #{message.body}")
    end
  end
end