所以我正在开发Discord Bot
。我试图允许机器人发送一条消息,以响应包含预定义数组中某个字符串的命令。在我的例子中,机器人从数组中随机选择一首说唱歌词并说出
问题:;随机化器";决定使用数组中哪个字符串的代码,只有在我激活bot后才会运行。这是代码:
var barnumber = Math.floor(Math.random() * dababy_bar.length);
module.exports = {
name: 'flamebar',
description: "spits out a flame bar",
execute(message, args){
message.channel.send(dababy_bar[barnumber]);
}
我已经尝试过在module.exports之后将randomizer
粘贴在代码末尾,但结果没有任何变化。然后我试着循环";随机化器";永远,但这并没有起作用,因为每当我启动机器人时,控制台都会冻结。
那么,我如何让我的机器人在每次通话中运行randomizer
呢?
如果在execute
函数中移动barnumber
的声明和赋值,则每次调用execute
:时都会设置它
module.exports = {
name: 'flamebar',
description: "spits out a flame bar",
execute(message, args){
var barnumber = Math.floor(Math.random() * dababy_bar.length);
message.channel.send(dababy_bar[barnumber]);
}
将barnumber
变量放置在module.exprts
之外将不起作用,因为只有当启动机器人程序时,才会创建该变量,并且在再次启动之前不会发生更改。
为了解决你的问题,你只需要移动声明&分配给execute
:
module.exports = {
name: 'flamebar',
description: "spits out a flame bar",
execute(message, args){
var barnumber = Math.floor(Math.random() * dababy_bar.length);
message.channel.send(dababy_bar[barnumber]);
}