使用 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 Bot Node.js 和 Twit 包

使用 Twitter API 发送直接消息不起作用

通过Twit w / Node.js发布Twitter线程

如何通过 Twitter API https://api.twitter.com/1.1/direct_messages/events/new.json 发送新的直接消息?