我有一条命令,它将发送的文本减去/ sendchat部分写入文本文件,当我执行/ sendchat消息时,它添加了一个额外的逗号,因此其输出为“,message”。尝试用输出触发。
我尝试用逗号对其进行另一个拆分,我尝试将逗号放在主拆分中,这样“前缀+“ sendchat”“就好像无论如何都包括带有/ sendchat的整个命令。
if (message.content.split(" ")[0] == prefix + "sendchat") {
//sendchat command
message.delete();
var commandSplit = message.content.split(" ");
var commandSplitMSG = message.content.split(prefix + "sendchat ");
var sendChatCommand = commandSplit[0];
var sendChatMsg = commandSplitMSG;
if (message.member.roles.find("id", adminRole)) {
if (sendChatMsg == undefined) {
message.reply("Please specify a command to send!");
} else {
message.reply("Sending the command: " + sendChatMsg);
fs.appendFile("sendchat.txt", sendChatMsg, err => {
if (err) throw err;
});
}
}
它应该只发送不带任何命令的命令,我需要能够将字符串作为第二个arg放入其中,因此/ sendchat“ full string”输出应为“ full string”
答案 0 :(得分:0)
看看您的代码,您似乎正在使用message.content.split(prefix + "sendchat ");
。很好,但是当您使用它时,可以直接访问它,但是.split()
返回一个array
。例如,
"!sendchat hello world".split("!" + "sendchat ")
//["", "hello world"]
看来,您似乎正在将整个数组传递到文件,并且当您执行["", "hello world"].toString()
时,将得到",hello world"
作为输出。这说明了逗号,因为在将数组附加到文件时将其传递给字符串。
如果您更改
var sendChatMsg = commandSplitMSG;
//Given the example before, ["", "hello world"]
到
var sendChatMsg = commandSplitMSG[1];
//accessing [1] gets hello world
您应该获得所需的输出。