javascript - 使用 Discord.js 每 1 分钟发送一次随机消息
问题描述
我正在尝试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)
})
解决方案
不确定不和谐部分 - 我将假设该部分工作正常。
通过在 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
推荐阅读
- javascript - JavaScript DOM - 在创建该元素后访问使用 document.createElement 创建的变量?
- javascript - 将数组呈现为 HTML 的最有效方法
- java - 使用 AES/CBC/PKCS7 时 Cipher.doFinal 修剪数据大小
- dynamic - 相同的输入不同的测试用例不同的答案
- android - Android:当我保存在存储中时,imgView.getDrawingCache() 会裁剪位图
- python - 使用 (?=$) 前瞻匹配所需的结果
- javascript - promise.all 与 forEach
- javascript - 即使我的数据源 _sort 变量确实发生了变化,Mat-sort 也不起作用
- html - 风格与展望
- java - 大型 Java 应用程序中的 Eclipse 远程调试 .jar 文件