module TweetBot::Talk

Public Instance Methods

announce_wake_up() click to toggle source
# File lib/tweetbot/talk.rb, line 94
def announce_wake_up
  puts "Waking up to greet the world... #{Time.now}"
   send_twitter_message "Waking up to greet the world... #{Time.now}"
rescue Twitter::Error::Forbidden => ex
  puts "Twitter Forbidden Error while waking up"
  puts ex
  puts "Continuing"
rescue Twitter::Error => ex
  puts "Twitter Error while waking up"
  puts ex
  exit!(1)
rescue => ex
  puts "Unknown Error while waking up"
  puts ex
  exit!(1)
end
configure_rest_twitter_client() click to toggle source
# File lib/tweetbot/talk.rb, line 24
def configure_rest_twitter_client
  Twitter::REST::Client.new do |config|
    config.consumer_key = twitter_auth[:consumer_key]
    config.consumer_secret = twitter_auth[:consumer_secret]
    config.access_token = twitter_auth[:access_token]
    config.access_token_secret = twitter_auth[:access_token_secret]
  end
end
configure_streaming_twitter() click to toggle source
# File lib/tweetbot/talk.rb, line 15
def configure_streaming_twitter
  Twitter::Streaming::Client.new do |config|
    config.consumer_key = twitter_auth[:consumer_key]
    config.consumer_secret = twitter_auth[:consumer_secret]
    config.access_token = twitter_auth[:access_token]
    config.access_token_secret = twitter_auth[:access_token_secret]
  end
end
send_twitter_message(message, options = {}) click to toggle source
# File lib/tweetbot/talk.rb, line 89
def send_twitter_message(message, options = {})
  client = configure_rest_twitter_client
  client.update message, options
end
talk() click to toggle source
# File lib/tweetbot/talk.rb, line 33
def talk
  client = configure_streaming_twitter

  bot = self

  announce_wake_up
  puts "Listening... #{Time.now}"

  ["INT", "TERM"].each do |signal|
    trap(signal) do
      puts "Got #{signal}"
      exit!(1)
    end
  end

  at_exit do
    puts "Shutting down... #{Time.now}"
    begin
      # send_twitter_message "Going to sleep... #{Time.now}"
    rescue
    end
  end



  client.filter(track: bot.phrases_to_search.join(",")) do |status|
    puts status.text if status.is_a?(Twitter::Tweet)
    if status.user.screen_name.downcase == TwitterAuth::MyName.downcase
      puts "#{Time.now} Caught myself saying it"
    else
      puts "#{Time.now} #{status.user.screen_name} said #{status.text}"
      if bot.should_i_respond_to?(status)
        response = bot.response_for(status)
        begin
          send_twitter_message(response, :in_reply_to_status_id => status.id)
          puts "Responding"
        rescue Twitter::Error::Forbidden => ex
          puts "Rate limited!"
          bot.rate_limited!
        rescue Exception => ex
          puts "Exception while sending the reply"
          puts ex
        end
      else
        puts "Bot told me not to respond"
      end
      begin
        bot.alert_status_captured(status)
      rescue => ex
        puts "Exception while alerting status"
        puts ex
      end
    end
  end
end