能否通过discord.js中用户的输入来定义变量名?

问题描述 投票:-1回答:1

所以我有一个命令,该命令根据用户输入的内容显示变量。例如,如果用户想(在我的代码中)了解“主持人”的计划,则该用户将编写!plan主持人,并且通过执行以下操作来打印主持人的计划:message.channel.send(${plan_}${args[2]}) (标记是从代码中获取的)但是我还想要一个创建如下命令的命令:!plan create Administrator(plan)所以要做的是制作一个名为plan_Administrator的变量,并将该变量分配给plan的值

但是如何?

plan_(args[3]) ???

javascript variables discord.js
1个回答
0
投票

您想做的事被称为使用动态变量名:为此,您将需要使用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
© www.soinside.com 2019 - 2024. All rights reserved.