【发布时间】:2020-02-03 22:15:16
【问题描述】:
所以我在创建我的机器人时遇到了一些问题。我想要做的只是跟踪一个玩家列表,这些玩家键入命令“+me”加入“等待列表”,“-me”以便从列表中删除,以及“?列表" 以显示列表。我计划稍后添加其他命令。
我遇到的问题是,该命令可以很好地将某人添加到列表中,但是在第一个命令之后,机器人停止响应命令。这使我能够将自己添加到队列中,但随后无法离开,其他人无法加入,无法列出,等等。 此外,如果您能提到一种将我用来显示列表的 for 循环移动到单独的函数中的方法,我会非常感激它。我是 Javascript 新手,我的尝试由于某种原因导致它崩溃。
const Discord = require('discord.js');
const {prefix, token} = require('./config.json');
const client = new Discord.Client();
var rankedList = []; // Initialise an empty array
client.login(token);
client.once('ready', () =>{
console.log('Ready!');
})
client.once('message', message =>{
// Add to queue
if(message.content.startsWith(`${prefix}me`)){
console.log(message.author + "added to queue.");
message.channel.send(message.author + " added to queue.");
var temp = message.author;
rankedList.push(temp); // the array will dynamically grow
// Show queue after adding
//for (var i = 0; i < rankedList.length; i++) {
// message.channel.send(i+1 + "- " + rankedList[i]);
//}
message.channel.send(`${rankedList.map((player,index) => `${index+1} - ${player}`).join('n')}`);
}
// Remove from queue
if(message.content.startsWith(`-me`)){
console.log(message.author + "removed from queue.");
message.channel.send(message.author + " removed from queue.");
for( var i = 0; i < rankedList.length; i++){
if ( rankedList[i] === message.author) {
rankedList.splice(i, 1);
i--;
}
}
// Show queue after removing
for (var i = 0; i < rankedList.length; i++) {
message.channel.send(i+1 + "- " + rankedList[i]);
}
}
if(message.content.startsWith(`?list`)){
console.log(message.author + "displayed the queue.");
// Show list
for (var i = 0; i < rankedList.length; i++) {
message.channel.send(i+1 + "- " + rankedList[i]);
}
}
})
【问题讨论】:
-
您的控制台是否返回任何错误?无论如何,真的不建议一个甚至有这么多的事件函数。将您的所有
client.once(‘message, (m)=>{}’)移至一个功能下。不建议在for(let i = ...)中编辑i变量。在使用大型不和谐机器人之前,请先使用 JavaScript。真的希望在这里进行代码清理。 -
我已将函数移到一个消息块中!它也没有返回错误
标签: javascript arrays bots discord discord.js