【问题标题】:parsing err! 'return' outside of function解析错误!在函数之外“返回”
【发布时间】:2021-10-25 07:24:06
【问题描述】:

所以,我想添加一个解禁命令。
到目前为止,这是我的代码:

if (command === ":unban") {
    if (!msg.member.hasPermission("BAN_MEMBERS")) {
        return msg.channel.send(`**${msg.author.username}**, You do not have perms to unban someone`);
    }
    
    if (!msg.guild.me.hasPermission("BAN_MEMBERS")) {
        return msg.channel.send(`**${msg.author.username}**, I do not have perms to unban someone`);
    }
    
    let userID = args[0]
    msg.guild.fetchBans().then(bans=> {
        if (bans.size == 0) return 
        let bUser = bans.find(b => b.user.id == userID);
        if (!bUser) return
        msg.guild.members.unban(bUser.user);
    });
}

当我运行它时,它给了我这个错误:

parsing error: 'return' outside of function

有人可以帮我解决这个问题,因为我对这些东西很陌生

【问题讨论】:

  • 您好!此错误也可能是由于缺少括号引起的,因此请确保您没有缺少括号
  • @abisammy 不一定,如果此代码原样,它将无法工作。正如错误中所说,您只能从实际函数返回。

标签: javascript discord.js


【解决方案1】:

你不能使用返回函数,没有任何东西可以返回。从那些 if-cases 中返回是不可能的。您可以将该代码放在一个单独的函数中并调用它,然后返回不会带来错误。使用 bool 对代码进行简单的重写应该可以解决问题:

client.on("messageCreate", message => {
  if(message.content === "!ping"){
    message.channel.send("pong")
  } else if(message.content === '!unban') {
    let permissionToKick = true;

    if(!message.member.hasPermission("BAN_MEMBERS")) {
      permissionToKick = false
      message.channel.send(`**${message.author.username}**, You do not have perms to unban someone`)
    }

    if(!message.guild.me.hasPermission("BAN_MEMBERS")) {
      permissionToKick = false
      message.channel.send(`**${message.author.username}**, I do not have perms to unban someone`)
    }

    if(permissionToKick) {
      let userID = args[0] //args[] are not defined, and this will throw an error
        message.guild.fetchBans().then(bans=> {
        if(!bans.size === 0) {
          let bUser = bans.find(b => b.user.id === userID)
          if(bUser) {
            message.guild.members.unban(bUser.user)
          }
        }
      })
    }
  }
})

PS:我看到您在代码中使用了args[],但没有定义参数。我不会为您编写所有代码,因为 Stackoverflow 不是代码编写平台。我建议你先学习 JavaScript 和 discord.js 的基础知识。

学习 JavaScript 的一个很好的来源是 W3Schools。如果您了解基础知识,我建议您阅读Discord.js 的文档或关注Discord.js guide

【讨论】:

  • 你怎么能把它应用到一个实际的命令上,比如当用户说 !unban 它解除用户的禁令时,我已经尝试了几件事,比如把代码放在这样的代码中:client.on("message ", message => { if(message.content === "!unban") message.channel.send("the code that you fix" } 我已经尝试过了,但它不起作用,因为我是如果您能告诉我如何将您刚刚修复的代码实现为实际命令,那将非常有帮助。
  • “message”事件也来自旧版本的 discord.js。我编辑了我的答案,所以它现在应该可以工作了。
  • 它仍然不起作用,它说没有定义args。有什么办法可以解决这个问题吗?
  • 正如我所说,即使在我的评论中:我知道。请学习 JS 的基础知识并阅读指南。在指南中,一切都得到了解释,比我在这里做的要好。
  • 别担心,我们都去过那里
猜你喜欢
  • 1970-01-01
  • 2017-01-04
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多