首页 > 解决方案 > Discord.js 将成员移动到不同的语音频道

问题描述

因此,我正在尝试发出一个命令,当说出时,提供提及和语音频道的名称,将您提到的成员移动到该语音频道。我已经对此进行了一些研究,但仍然无法使其发挥作用。

const Discord = require('discord.js');
const client = new Discord.Client();
const config = require('../config.json');

exports.run = function(client, message) {

const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();      

if (command === 'move') {
  const mem = message.mentions.members.first()
  const vc = args.join(" ")
  const chan = client.channels.find("name", vc)
    mem.setVoiceChannel(chan)
      .then(() => console.log(`Moved ${mem.displayName} to ${chan}`))
  .catch(console.error);
  }
}

现在,当我尝试使用语音通道“音乐”(例如“d!move [mention] Music”)命令时,它会将“Moved [member] to null”返回到控制台,并且当然,不会移动成员。好像能找到我提到的那个成员,但是找不到语音频道。任何帮助,将不胜感激。谢谢。

标签: javascriptdiscorddiscord.js

解决方案


我可能有答案,所以您正在使用d!move [mention] Music移动用户。之后,您拆分为不同的参数以更好地处理它,如下所示["move", "<@someID>", "Music"]:然后你用 slice 删除第一个命令,你得到["<@someID>", "Music"].
然后,当您想找到频道名称时,您可以使用空格加入数组以获取频道名称。问题是你仍然有提及。所以它会留下来<@someID> Music,并试图找到一个具有该名称的频道。
您可能需要像使用命令一样删除数组的第一个参数,然后加入它,或者创建一个仅包含通道名称的新数组。


推荐阅读