class Ruboty::Adapters::TwitterDirectMessage

Public Instance Methods

run() click to toggle source
# File lib/ruboty/adapters/twitter_direct_message.rb, line 16
def run
  Ruboty.logger.debug("#{self.class}##{__method__} started")
  abortable
  listen
  Ruboty.logger.debug("#{self.class}##{__method__} finished")
end
say(message) click to toggle source
# File lib/ruboty/adapters/twitter_direct_message.rb, line 23
def say(message)
  client.update(message[:body], in_reply_to_status_id: message[:original][:tweet].try(:id))
end

Private Instance Methods

abortable() click to toggle source
# File lib/ruboty/adapters/twitter_direct_message.rb, line 66
def abortable
  Thread.abort_on_exception = true
end
client() click to toggle source
# File lib/ruboty/adapters/twitter_direct_message.rb, line 45
def client
  ::Twitter::REST::Client.new do |config|
    config.consumer_key        = ENV["TWITTER_CONSUMER_KEY"]
    config.consumer_secret     = ENV["TWITTER_CONSUMER_SECRET"]
    config.access_token        = ENV["TWITTER_ACCESS_TOKEN"]
    config.access_token_secret = ENV["TWITTER_ACCESS_TOKEN_SECRET"]
  end
end
enabled_to_auto_follow_back?() click to toggle source
# File lib/ruboty/adapters/twitter_direct_message.rb, line 29
def enabled_to_auto_follow_back?
  ENV["TWITTER_AUTO_FOLLOW_BACK"] == "1"
end
listen() click to toggle source
# File lib/ruboty/adapters/twitter_direct_message.rb, line 33
def listen
  stream.on_direct_message do |direct_message|
    Ruboty.logger.debug("#{direct_message.sender.screen_name} send direct message #{direct_message.text.inspect}")
    robot.receive(
      body: direct_message.text,
      from: direct_message.sender.screen_name,
      tweet: direct_message
    )
  end
  stream.userstream
end
stream() click to toggle source
# File lib/ruboty/adapters/twitter_direct_message.rb, line 55
def stream
  ::TweetStream::Client.new(
    consumer_key: ENV["TWITTER_CONSUMER_KEY"],
    consumer_secret: ENV["TWITTER_CONSUMER_SECRET"],
    oauth_token: ENV["TWITTER_ACCESS_TOKEN"],
    oauth_token_secret: ENV["TWITTER_ACCESS_TOKEN_SECRET"],
    auth_method: :oauth
  )
end