我想使用Twitter gem延迟机器人的最喜欢的推文动作:
if tweet.is_a?(Twitter::Tweet)
puts tweet.text
rClient.fav tweet
end
这可能是一个非常简单的黑客攻击。
谢谢!
答案 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,但这可能会涉及对您的代码进行一些重构,以便能够以这种方式调用。