使用 twitter gem 发送直接消息
Posted
技术标签:
【中文标题】使用 twitter gem 发送直接消息【英文标题】:Send direct messages with twitter gem 【发布时间】:2020-07-14 05:01:27 【问题描述】:我正在使用 twitter gem 开发一个 twitter 机器人。这个机器人喜欢并关注人们。但是现在我想用这个 gem 发送私人消息,我不能。
这是我正在测试的:
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
这是我简单的错误
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)
这个:
undefined local variable or method `tweet' for main:Object (NameError)
我希望你有解决方案!祝你有美好的一天。
【问题讨论】:
"not a valid long" 听起来该函数需要用户 ID(数字)而不是用户名(字符串)。 【参考方案1】:获取您要发送消息的 twitter 的 ID。您可以使用此link 来获取 ID。
然后就可以执行命令了:
client.create_direct_message('<replace with the twitter Id you obtained>',"hello this is a test!",options=)
您示例中的 tweet.user 意味着,有一个 tweets-table(一个模型类),并且 twitter Id 保存在 user-column 中。
【讨论】:
完美!谢谢你:)以上是关于使用 twitter gem 发送直接消息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Twit NPM 包获取 Twitter 用户名和头像
使用npm twit将图像上传到Twitter时“媒体类型无法识别”
如何通过 Twitter API https://api.twitter.com/1.1/direct_messages/events/new.json 发送新的直接消息?