使用Discord.js每1分钟发送一次随机消息

时间:2020-02-23 11:21:14

标签: javascript node.js discord discord.js

我正在尝试使用setInterval()每分钟发送随机消息,但是它不起作用。这是我的代码:

var facts = ["1", "2", "3", "4", "5", "6"];
var fact = Math.floor(Math.random() * facts.length);
client.on("ready", () => {
    let channel = client.channels.get("id");
    setInterval(function() {
        channel.send(facts[fact])
    }, 60000)
})

1 个答案:

答案 0 :(得分:1)

不确定不协调的部分-我将假定该部分工作正常。

通过生成setInterval函数的随机事实外部,您将始终获得相同的随机事实。这应该可以解决该问题:

var facts = ['1', '2', '3', '4', '5', '6']
client.on('ready', () => {
  let channel = client.channels.get('id')
  setInterval(function() {
    var fact = Math.floor(Math.random() * facts.length)
    channel.send(facts[fact])
  }, 60000)
})

一些解释:

在此示例中,您将看到每秒产生一个随机事实。除了在setInterval函数之外声明随机生成器之外,您还将看到相同的事实。

var facts = ['1', '2', '3', '4', '5', '6']
var fact = Math.floor(Math.random() * facts.length)
setInterval(function() {
  console.log(facts[fact]) // Every second, this will return _the same_ fact.
}, 1000) // Changed to 1s for testing

但是,如果将var fact声明移到setInterval函数中,则会每秒生成一个随机事实:

var facts = ['1', '2', '3', '4', '5', '6']
setInterval(function() {
  var fact = Math.floor(Math.random() * facts.length)
  console.log(facts[fact]) // Every second, this will return a _new random_ fact
}, 1000) // Changed to 1s for testing