Итак, я пытаюсь сделать команду, которая, когда сказано, снабжена упоминанием и названием Voice Channel, перемещает участника, которого вы упомянули в этом голосовом канале. Я немного поработал над этим, но все равно не могу заставить его работать.
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);
}
}
Прямо сейчас, когда я пытаюсь выполнить команду, используя, скажем так, Voice Channel "Music" (так, "d! Move [упоминание] Music"), он возвращает "Перемещено [член] в null" на консоль и конечно, не перемещает участника. Кажется, я нашел члена, которого я упомянул, просто отлично, но не могу найти Voice Channel. Любая помощь будет оценена по достоинству. Благодарю.
У меня может быть ответ, поэтому вы используете d!move [mention] Music
для перемещения пользователя. После этого вы разделитесь на разные аргументы, чтобы справиться с этим лучше, на что-то вроде этого: ["move", "<@someID>", "Music"]
. Затем вы удаляете первый, который имеет его команду с помощью среза, и вы получаете ["<@someID>", "Music"]
.
Затем, когда вы хотите найти имя канала, вы присоединяетесь к массиву с пробелами, чтобы получить имя канала. Проблема в том, что вы все еще имеете упоминание. Таким образом, он останется <@someID> Music
, и он пытается найти канал с этим именем.
Вероятно, вам нужно удалить первый аргумент массива так же, как и с командой, а затем присоединиться к нему или создать новый массив только с именем канала.