【问题标题】:How to use botkit to send a message at a certain time?如何使用botkit在某个时间发送消息?
【发布时间】:2016-09-25 02:59:06
【问题描述】:

查看 Botkit 的文档后,我没有看到机器人在特定时间自行向频道发送消息的方法。我尝试做的是为 .startRTM 函数提供一个回调函数,该函数在某些时候执行我希望它执行的操作,但是调用是异步的,以从另一个 API 检索信息。有没有比把所有东西都放在while(1) {} 调用中更好的方法来解决这个问题?如果没有,我怎样才能让 r.getHot 回调成功,因为 JS 在主线程上运行,所以它会跳过回调函数。变量 r 来自 snoowrap 库。

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"
                        });
                    });
                }
            }
        }
    }
});

【问题讨论】:

    标签: javascript node.js slack-api botkit


    【解决方案1】:

    啊,我一开始看错了你的问题

    我建议调查node-schedule。请注意,如果您在一个让他们的进程休眠的主机上,我认为这不会起作用。否则,这是比您的 while 循环更好的方法。

    将以下内容留给发现此内容的其他人


    使用 Botkit 在没有用户输入的情况下发起消息:

    生成一个 bot,var bot = controller.spawn(opts),然后在 bot 范围内的任何地方调用 bot.say()。

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

    欲了解更多信息,请查看the docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-21
      • 2023-03-06
      • 2018-06-25
      • 2021-08-23
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多