所以我有一个命令,该命令根据用户输入的内容显示变量。例如,如果用户想(在我的代码中)了解“主持人”的计划,则该用户将编写!plan主持人,并且通过执行以下操作来打印主持人的计划:message.channel.send(${plan_}${args[2]}
) (标记是从代码中获取的)但是我还想要一个创建如下命令的命令:!plan create Administrator(plan)所以要做的是制作一个名为plan_Administrator的变量,并将该变量分配给plan的值
但是如何?
plan_(args[3])
???
您想做的事被称为使用动态变量名:为此,您将需要使用eval
语句,强烈建议您使用此语句,因为它将代码暴露给注入攻击。无论如何,我都会向您展示如何做到这一点,但是请注意,将属性保存在对象中会更安全。
要使用动态名称创建变量,您需要使您的代码对如下语句进行评估:var (varName) = (value)
。它看起来像这样:
// name and value should be your arguments from the command
eval('var ' + name + ' = ' + value)
// Be aware that the only way to access the variable is by using the global scope:
let myValue = global[variableName]
使用字典的更安全的方法:
// Somewhere in your code so that is accessible by commands
let userVariables = {}
// When you want to access a variable
let myValue = userVariables[varName]
// When you want to set a variable
userVariables[varName] = yourValue