class Ruboty::Handlers::TwitterTrack

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/ruboty/handlers/twitter_track.rb, line 16
def initialize(*args)
  super

  @stream = Ruboty::TwitterTrack::Stream.new(robot)
  @stream.start(cache[:message], cache[:terms])
end

Public Instance Methods

cache() click to toggle source
# File lib/ruboty/handlers/twitter_track.rb, line 67
def cache
  unless robot.brain.data[Ruboty::TwitterTrack::NAMESPACE]
    status = { message: nil, terms: {} }
    robot.brain.data[Ruboty::TwitterTrack::NAMESPACE] = status
  end

  robot.brain.data[Ruboty::TwitterTrack::NAMESPACE]
end
track(message) click to toggle source
# File lib/ruboty/handlers/twitter_track.rb, line 23
def track(message)
  cache[:message] = message.original.except(:robot)

  message[:term].split(',').each do |term|
    key   = generate_id
    words = term.strip.split(/\s+/)
    cache[:terms][key] = words
  end

  begin
    @stream.restart(cache[:message], cache[:terms].values)
    message.reply("Tracked '#{message[:term]}'.")
  rescue Twitter::Error::Forbidden
    message.reply("Unable to verify your credentials.")
  end
end
tracking(message) click to toggle source
# File lib/ruboty/handlers/twitter_track.rb, line 58
def tracking(message)
  if cache[:terms].empty?
    message.reply("Tracking no terms.")
  else
    response = cache[:terms].map { |key, words| "#{key}: #{words.join(' ')}" }
    message.reply(response.join("\n"), code:true)
  end
end
untrack(message) click to toggle source
# File lib/ruboty/handlers/twitter_track.rb, line 40
def untrack(message)
  cache[:message] = message.original.except(:robot)

  key   = message[:id].to_i
  words = cache[:terms].delete(key)
  unless words
    message.reply("'#{key}' not found.")
    return
  end

  begin
    @stream.restart(cache[:message], cache[:terms].values)
    message.reply("Untracked '#{key}: #{words.join(' ')}'.")
  rescue Twitter::Error::Forbidden
    message.reply("Unable to verify your credentials.")
  end
end

Private Instance Methods

generate_id() click to toggle source
# File lib/ruboty/handlers/twitter_track.rb, line 77
def generate_id
  id = (100..999).to_a.sample
  cache[:terms][id].nil? ? id : generate_id
end