# File lib/rbot/timer.rb, line 103
    def run(now = Time.now)
      raise 'inappropriate time to run()' unless self.next && self.next <= now
      self.next = nil
      begin
        @block.call(*@args)
      rescue Exception => e
        error "Timer action #{self.inspect}: block #{@block.inspect} failed!"
        error e.pretty_inspect
        debug e.backtrace.join("\n")
      end

      if @repeat && @period > 0
        self.next = now + @period
      end

      return self.next
    end