javascript - 如何使用命令中参数的长度来创建命令?

标签 javascript eval

这听起来可能很奇怪,但我不知道还能如何描述它。我正在尝试使用一个命令创建一个不和谐的机器人,某些人可以在其中编写 javascript 代码来动态地使用该机器人执行操作,但我不知道如何使其在多个空间中工作。我希望它能处理尽可能多的空格或尽可能少的空格,但这仅适用于恰好有 10 个空格的空格。

if(command === '!cmd') {
    if(message.author.id != ownerid) {
        bot.guilds.get(guildid).channeks.get(generalchan.sned("YOU ARE NOT ALLOWED TO USE THIS COMMAND\nTHIS IS YOUR ONLY WARNING"))
        } else if(message.author.id === ownerid) {
            eval(messageArray[1] + " " + messageArray[2] + " " + messageArray[3] + " " + messageArray[4] + " " + messageArray[5] + " " + messageArray[6] + " " + messageArray[7] + " " + messageArray[8] + " " + messageArray[9]);
            message.delete();
        }
}

最佳答案

Let evalStr = ""
For(let element of messageArray){
evalStr += element + " "
}
eval(evalStr)

您需要切掉尾随空格字符。

但是您正在获取 message.content 然后将每个单词拆分为一个数组。然后尝试将数组重新融合在一起,添加空格。您应该删除消息的前 x 个字符。内容,其中 x 是 prefix.length + 命令并评估结果。

Eval 命令非常危险。在实现这些之前,请确保您知道自己在做什么。

编辑:本指南值得一看并添加书签。

https://anidiotsguide.gitbooks.io/discord-js-bot-guide/examples/command-with-arguments.html

关于javascript - 如何使用命令中参数的长度来创建命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46822381/

相关文章:

javascript - 在函数中使用 eval 来替换图层名称上的前缀?

javascript - 如何计算字符串中出现的字符串?

javascript - 带有要按 Id 滚动到的子元素的水平 DIV

javascript - 如何使用 jQuery 创建时区?

javascript - 如何在JavaScript中比较像 "x != a OR b"?

javascript - 执行变量

javascript - 在 chalk.js 中的 forEach() 中获取随机颜色

.net - ASP .NET - Eval() 背后发生了什么?

java - 如何评估具有指数的字符串

javascript - 不使用 eval 创建未知大小的对象