是否有任何简单的方法来延迟喜欢的推文与#34; twitter"宝石?

时间:2016-10-23 16:32:57

标签: ruby twitter delay

我想使用Twitter gem延迟机器人的最喜欢的推文动作:

if tweet.is_a?(Twitter::Tweet)
    puts tweet.text
    rClient.fav tweet
end

这可能是一个非常简单的黑客攻击。

谢谢!

1 个答案:

答案 0 :(得分:0)

为了干燥目的,我将一些逻辑转移到一个单独的方法:

def fav_tweet(tweet)
  puts tweet.text
  rClient.fav tweet
end

一个选项是创建一个单独的线程,然后在那里调用sleep。这不会停止主线程中的执行,因此您的机器人可以继续监视输入。

所以我将定义另一种方法:

def in_delayed_thread(num_seconds)
  Thread.new { sleep num_seconds; yield }
end

然后将现有代码更改为:

TweetDelayInSeconds = 30 # seems like this could be a constant

if tweet.is_a?(Twitter::Tweet)
  in_delayed_thread(TweetDelayInSeconds) { fav_tweet(tweet) }
end

还有其他方法来安排任务。但我认为这可能是你要求的“简单黑客”最接近的。例如,您可以使用Bash计划一次性任务 - 请参阅https://askubuntu.com/questions/339298/conveniently-schedule-a-command-to-run-later,但这可能会涉及对您的代码进行一些重构,以便能够以这种方式调用。