我正在尝试使用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)
})
答案 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