You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js开发unban命令出现'return' outside of function错误如何解决

错误原因
  • return 语句仅允许在函数内部使用,你当前写的unban命令处理代码直接放在了全局作用域,没有包裹在Discord消息事件的回调函数中,才会触发这个语法错误。
  • 额外注意:你代码里用到的msg、command、args三个变量,也需要在消息事件回调里定义生成,否则运行时还会报变量未定义的错误。
解决方法

把你写的这段unban命令逻辑,完整放到消息事件的回调函数内部即可,参考完整示例(适配你当前用的Discord.js v12版本语法):

// 引入Discord.js、初始化客户端逻辑省略
const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = ":";

client.on("message", (msg) => {
  // 忽略机器人自身发送的消息
  if (msg.author.bot) return;
  // 非指定前缀开头的消息直接跳过
  if (!msg.content.startsWith(prefix)) return;

  // 拆分生成command和args变量
  const args = msg.content.slice(prefix.length).trim().split(/ +/);
  const command = args.shift().toLowerCase();

  // 你的unban命令逻辑放在此处即可解决报错
  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]
    if (!userID) {
        return msg.channel.send(`**${msg.author.username}**, 请输入要解封的用户ID`);
    }
    msg.guild.fetchBans().then(bans=> {
        if (bans.size == 0) return msg.channel.send("当前服务器没有被封禁的用户");
        let bUser = bans.find(b => b.user.id == userID);
        if (!bUser) return msg.channel.send("该用户未被封禁");
        msg.guild.members.unban(bUser.user).then(() => {
            msg.channel.send(`已成功解封用户 ${bUser.user.tag}`);
        }).catch(err => {
            msg.channel.send("解封失败,请检查权限是否正常、用户ID是否正确");
        });
    });
  }
});

client.login("你的机器人Token");
额外优化说明

示例中补充了用户ID为空、无封禁用户、目标用户未被封禁的提示,同时给解封操作添加了错误捕获逻辑,避免异常情况导致机器人无响应或崩溃。

内容的提问来源于stack exchange,提问作者isteqsnip gaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:57:01