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

如何修复Discord机器人中的DeprecationWarning: Collection#filterArray警告?

解决Discord机器人的Collection#filterArray弃用警告

这个警告是因为你使用的discord.js或discord.js-commando版本里,Collection#filterArray方法已经被官方弃用,官方推荐改用Collection#filter。虽然你的代码里没直接调用这个方法,但discord.js-commando的旧版本内部可能在使用它,所以终端会弹出警告。下面是具体的解决步骤:

1. 更新依赖库到兼容版本

旧版本的discord.js-commando和discord.js存在API兼容问题,更新到匹配的稳定版本就能消除这个警告:

  • 先卸载现有依赖:
    npm uninstall discord.js discord.js-commando
    
  • 安装经过验证的兼容版本(这个组合能避免大部分弃用警告):
    npm install discord.js@12.5.3 discord.js-commando@0.12.0
    

2. 修正代码中的过时API

你当前的代码里还在用Discord.js v11的旧API,这些API在新版本里也已经被移除或重命名,不仅可能导致警告,还可能让命令无法正常工作。修改后的代码如下:

const commando = require('discord.js-commando');

class JoinChannelCommand extends commando.Command {
  constructor(client) {
    super(client, {
      name: 'join',
      group: 'music',
      memberName: 'join',
      description: 'Joins the voice channel of the commander'
    });
  }

  async run(message, args) {
    // 获取用户所在的语音频道(新版API)
    const userVoiceChannel = message.member.voice.channel;
    if (userVoiceChannel) {
      // 获取机器人当前在服务器的语音连接(新版API)
      const botVoiceConnection = message.guild.me.voice.connection;
      if (!botVoiceConnection) {
        userVoiceChannel.join()
          .then(connection => {
            message.reply("Successfully Joined!");
          })
          .catch(err => {
            console.error("加入频道出错:", err);
            message.reply("抱歉,我没办法加入你的语音频道😥");
          });
      } else {
        message.reply("我已经在一个语音频道里啦!");
      }
    } else {
      message.reply("你得先加入一个语音频道才能召唤我哦!");
    }
  }
}

module.exports = JoinChannelCommand;

额外说明

  • 如果你想使用更高版本的Discord.js(比如v13+),注意discord.js-commando的维护状态,目前官方的discord.js-commando已经停止更新,可能需要改用其他框架(比如discord.js的原生命令系统),不过上面的版本组合对于基础的语音机器人需求来说足够稳定。
  • 加入错误处理能帮你快速定位机器人无法加入频道的原因(比如权限不足)。

内容的提问来源于stack exchange,提问作者Nacho Villafane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:06:37