2016-09-25 5 views
1

Botkitのドキュメントを調べた後、ボットが特定の時間にチャネルへのメッセージを単独で開始する方法はありません。私がやったことは、特定の時間に何をしたいのかを実行する.startRTM関数にコールバック関数を提供することですが、コールは別のAPIから情報を取得するために非同期です。 while(1) {}コールですべてを固執するよりも、これにアプローチする方が良いでしょうか?そうでない場合は、JSがメインスレッド上で実行されているので、コールバック関数をスキップしてr.getHotコールバックを成功させるにはどうすればいいですか。変数rはスヌーラップライブラリからのものです。特定の時間にbotkitを使用してメッセージを送信するにはどうすればよいですか?

var bot = controller.spawn({ 
     token: process.env.slacktoken, 
     incoming_webhook: { 
      url: process.env.webhookurl 
     } 
}).startRTM(function(err, bot, payload) { 
    if (!err) { 
     while(1){ 
      for (var i = 0; i < allowableTimes.length; i++) { 
       if (new Date().getTime() == allowableTimes[i].getTime()) { 
        r.getHot('aww', {limit: 1}).then(function(res){ 
         var url = res[0].url; 
         var title = res[0].title; 
         console.log(url); 
         console.log(title); 
         bot.sendWebhook({ 
          username: "bawwt", 
          icon_emoji: ":smile_cat:", 
          text: "<" + url + "|" + title + ">", 
          channel: "#random" 
         }); 
        }); 
       } 
      } 
     } 
    } 
}); 

答えて

0

ああ、私はnode-scheduleに探してお勧めする最初の

であなたの質問を読み違えます。自分のプロセスを眠っているホストにいるなら、これはうまくいくとは思わないことに注意してください。さもなければ、これはあなたのwhileループより良い方法です。どこボットである)(bot.say呼び出し次に、

スポーンボット、var bot = controller.spawn(opts)

Botkitをユーザ入力なしでメッセージを発信するために、この


を見つける他人のために以下立ち去ります範囲。

bot.say(
    { 
    text: 'my message text', 
    channel: 'C0H338YH4' // a valid slack channel, FB 
    } 
); 

詳細情報については、the docs

をチェックしてください
関連する問題