How to create instance of Twitter::Tweet to create retweeted_by_user - ruby

I want to call retweeted_by_user(user, options = {}). How do I create instance of object Twitter::Tweet (in Twitter::REST::Timelines module) to call this method. It is instance method, correct?
I did this for Twitter::REST::CLIENT
client = client = Twitter::REST::Client.new do |config|
config.consumer_key = "..."
config.consumer_secret = "..."
config.access_token = "..."
config.access_token_secret = "..."
end
but it does not work for Twitter::Tweet
client = client = Twitter::Tweet.new do |config|
config.consumer_key = "..."
config.consumer_secret = "..."
config.access_token = "..."
config.access_token_secret = "..."
end
Here are the docs for Twitter gem. I need a little more explanation
http://rdoc.info/gems/twitter/Twitter/REST/Timelines#retweeted_by_user-instance_method

spec are the best documentation and explanation:
client:
https://github.com/sferik/twitter/blob/c9cfca9bf156ac0569d6c2cd7117327daf10a643/spec/twitter/rest/timelines_spec.rb#L6
method usage:
https://github.com/sferik/twitter/blob/c9cfca9bf156ac0569d6c2cd7117327daf10a643/spec/twitter/rest/timelines_spec.rb#L58

Related

Send direct messages with twitter gem

I'm working on a twitter bot with the twitter gem. This bot is liking and following peoples. But now i want to send private messages with this gem and i cant.
This is what Im testing :
def login_twitter_stream
client_streaming =
Twitter::Streaming::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
return client_streaming
end
def login_twitter
client_REST =
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
return client_REST
end
def direct_messages
client = login_twitter
client
.search("#helloworld", result_type: "recent")
.take(5)
.each do
client.create_direct_message(
"#{tweet.user}",
"hello this is a test!",
options = {}
)
end
end
direct_messages
And this is the error I have with a simple
client.create_direct_message("#username","hello this is a test!",options={})
event.message_create.target.recipient_id: '#username' is not a valid Long (Twitter::Error::BadRequest)
ans this one:
undefined local variable or method `tweet' for main:Object (NameError)
I hope u have the solution ! Have a great day.
get the id of the twitter you want to send a message with. You can use this link to get an Id.
Then you can execute the command:
client.create_direct_message('<replace with the twitter Id you obtained>',"hello this is a test!",options={})
the tweet.user in your example means, there is a tweets-table(a model class) and the twitter Id is saved in the user-column.

Keep getting Ruby Twitter::Error::Forbidden

I'm pulling tweets from a text file and tweeting them in timed intervals. As the first tweet is posted, everything is fine. When its time for the next tweet to post I get an error that reads:
I got my four keys, but I can always renew them or get new ones...Here is the code I'm using:
require 'Twitter'
client = Twitter::REST::Client.new do |config|
config.consumer_key = "..."
config.consumer_secret = "..."
config.access_token = "..."
config.access_token_secret = "..."
end
def repeat_every(interval)
loop do
start_time = Time.now
yield
elapsed = Time.now - start_time
sleep([interval - elapsed, 0].max)
end
end
blog_post = []
tweet_img = []
def post
client = Twitter::REST::Client.new do |config|
config.consumer_key = "..."
config.consumer_secret = "..."
config.access_token = "..."
config.access_token_secret = "..."
end
File.open("tweets.txt") do |line|
line.each do |item|
tweets = item
puts tweets
client.update("#{tweets}").to_s
sleep((rand*1800 +900).to_i)
end
end
end
repeat_every(81000){
post
}
require 'Twitter'
def repeat_every(interval)
loop do
start_time = Time.now
yield
elapsed = Time.now - start_time
sleep([interval - elapsed, 0].max)
end
end
def post
client = Twitter::REST::Client.new do |config|
config.consumer_key = "xxxx"
config.consumer_secret = "xxxx"
config.access_token = "xxxx"
config.access_token_secret = "xxxx"
end
File.open("tweets.txt") do |line|
line.each_line do |item|
tweets = item
puts tweets
client.update("#{tweets}")
sleep((rand*10 + 10).to_i)
end
end
end
repeat_every(81000){
post
}
insert this code on the second line
OpenSSL :: SSL :: VERIFY_PEER = OpenSSL :: SSL :: VERIFY_NONE

ruby tweet line from text file

My code won't tweet from the file every interval, it only prints in the terminal, but not on twitter. I'm also trying to loop it so that once done with the file.length its repeats. Thanks for your help.
require 'Twitter'
client = Twitter::REST::Client.new do |config|
config.consumer_key = "..."
config.consumer_secret = "..."
config.access_token = "..."
config.access_token_secret = "..."
end
blog_post = []
tweet_img = []
def post
File.open("tweets.txt") do rand |line|
line.each do |item|
tweets = item.chomp.split("\n")
#while client.update("#{}")
puts tweets
sleep(30)
#end
#puts blog_post.to_s, "\n\n"
end
end
end
puts client.update("#{post}").text
require 'Twitter'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
client = Twitter::REST::Client.new do |config|
config.consumer_key = "xxxx"
config.consumer_secret = "xxxx"
config.access_token = "xxxx"
config.access_token_secret = "xxxx"
end
file = File.open("tweets.txt")
ary = []
i = 0
file.each_line do |line|
ary[i] = line.chomp
i += 1
end
file.close
j = 0
i.times do
client.update("#{ary[j]}")
j += 1
sleep 10
end
Your call to Twitter:
client.update("#{post}").text
is outside of your loop, so it is only called once. If you want it for each line, it should be:
def post
File.open("tweets.txt") do rand |line|
line.each do |item|
tweets = item.chomp.split("\n")
puts tweets
client.update("#{tweets}").text
sleep(30)
end
end
end

Error with Ruby Twitter API

I am getting an error with a Ruby script using the 'twitter' gem. The part of my script that is producing the error is
require 'twitter'
require 'net/http'
require 'json'
#### Get your twitter keys & secrets:
#### https://dev.twitter.com/docs/auth/tokens-devtwittercom
Twitter.configure do |config|
config.consumer_key = 'xxxxxxx'
config.consumer_secret = 'xxxxxxx'
config.oauth_token = 'xxxxxx'
config.oauth_token_secret = 'xxxxxxx'
end
The error says undefined method 'configure' for Twitter:Module (NoMethodError)
However the 'twitter' and 'json' gems are both in my gemfile so I'm not sure why this method would be undefined.
You are doing it the "old" way. Starting in Version 5, global configuration is not longer available. So, basically you need to pass the config parameters when you initialize a client.
For example:
client = Twitter::REST::Client.new do |config|
config.consumer_key = "YOUR_CONSUMER_KEY"
config.consumer_secret = "YOUR_CONSUMER_SECRET"
config.access_token = "YOUR_ACCESS_TOKEN"
config.access_token_secret = "YOUR_ACCESS_SECRET"
end
And then just use that client to do queries, such as:
client.sample do |tweet|
puts tweet.text
end
For more information just refer to Sferik's Twitter Gem

Get list timeline by using Twitter gem

I want to get list timeline by using Twitter gem.
How can I call GET lists/statuses REST API from Twitter gem?
https://dev.twitter.com/docs/api/1.1/get/lists/statuses
I've searched through documentation but couldn't found proper method.
http://rdoc.info/gems/twitter
Problem solved
I overlooked the method list_timeline. It serves as lists/statuses.
You can use 'twitter' gem.
Create an app on Twitter. You need to give to it read & write access just for sake of your own experiments.
Use this sample code (with your credentials you've got from Twitter). Please note that I'm using some public list URI (list = URI.parse('https://twitter.com/sferik/presidents')
p client.list_timeline(list))
client = Twitter::REST::Client.new do |config|
config.consumer_key = "YOUR_CONSUMER_KEY"
config.consumer_secret = "YOUR_CONSUMER_SECRET"
config.access_token = "YOUR_ACCESS_TOKEN"
config.access_token_secret = "YOUR_ACCESS_SECRET"
end
list = URI.parse('https://twitter.com/sferik/presidents')
client.list_timeline(list)
for more info please visit Twitter gem docs.
I suggest you start by reading the gem documentation. You'll also have to register your application with twitter to get your oauth parameters.
https://github.com/sferik/twitter
To get the timeline from a list using Twitter gem :
client = Twitter::REST::Client.new do |config|
config.consumer_key = "YOUR_CONSUMER_KEY"
config.consumer_secret = "YOUR_CONSUMER_SECRET"
config.access_token = "YOUR_ACCESS_TOKEN"
config.access_token_secret = "YOUR_ACCESS_SECRET"
end
# For each list of the user
client.lists.each do |list|
# Get the timeline with the list ID
client.list_timeline(list.id).each do |tweet|
puts tweet.text
end
end

Resources