class Ruboty::Handlers::TwitterTL

Public Class Methods

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

  @stream = Ruboty::TwitterTL::Stream.new(robot)
  @stream.start(users)
end

Public Instance Methods

follow(message) click to toggle source
# File lib/ruboty/handlers/twitter_tl.rb, line 23
def follow(message)
  username = message[:name]
  userinfo = {
    message:    message.original.except(:robot),
    twitter_id: @stream.rest.user(username).id
  }

  if users.has_value?(userinfo)
    message.reply("Already following '@#{username}'.")
  else
    users.update(username => userinfo)
    @stream.update(users)
    message.reply("Followed '@#{username}'.")
  end
rescue Twitter::Error::NotFound
  message.reply("'@#{username}' is not found.")
rescue Twitter::Error::Forbidden
  message.reply("Unable to verify your credentials.")
end
following(message) click to toggle source
# File lib/ruboty/handlers/twitter_tl.rb, line 54
def following(message)
  if users.empty?
    message.reply("Following no user.")
  else
    list = users.select { |_, userinfo| userinfo[:message][:from] == message.original[:from] }
    text = list.keys.map { |username| "@#{username}" }.join("\n")
    message.reply(text, code: true)
  end
end
unfollow(message) click to toggle source
# File lib/ruboty/handlers/twitter_tl.rb, line 43
def unfollow(message)
  username = message[:name]

  if userinfo = users.delete(username)
    @stream.update(users)
    message.reply("Unfollowed '@#{username}'.")
  else
    message.reply("'@#{username}' is not found.")
  end
end
users() click to toggle source
# File lib/ruboty/handlers/twitter_tl.rb, line 64
def users
  robot.brain.data[Ruboty::TwitterTL::NAMESPACE] ||= {}
end