# File lib/rbot/timer.rb, line 118
    def tick 
      if(@lasttime == 0)
        # don't do anything on the first tick
        @lasttime = Time.now
        return
      end
      @next_action_time = 0
      diff = (Time.now - @lasttime).to_f
      @lasttime = Time.now
      @timers.each { |key,timer|
        timer.tick
        next if timer.blocked
        if(timer.due?)
          if(timer.run)
            # run once
            @timers.delete(key)
          end
        end
        if @next_action_time == 0 || timer.in < @next_action_time
          @next_action_time = timer.in
        end
      }
      #debug "ticked. now #{@timers.length} timers remain"
      #debug "next timer due at #{@next_action_time}"
    end