私は別の方法にいくつかのロジックを移動していDRYの目的のために:
def fav_tweet(tweet)
puts tweet.text
rClient.fav tweet
end
1つのオプションは、別のスレッドを作成し、そこに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を参照してください。しかし、これはあなたのコードをこのようにリファクタリングする必要があります。
素晴らしい!これは超便利です! **ありがとう!** – mcarvajal