module.exports = {
name: 'search',
aliases: ['search'],
description: 'Search and select videos to play.',
run: async (client, message, args) => {
if (!args.length)
return message.reply(`Usage: ${message.client.prefix}${module.exports.name} <Video Name>`).catch(console.error);
if (message.channel.activeCollector)
return message.reply("A message collector is already active in this channel.");
if (!message.member.voice.channel)
return message.reply("You need to join a voice channel first!").catch(console.error);
const search = args.join(" ");
let resultsEmbed = new MessageEmbed()
.setTitle(`**Reply with the song number you want to play**`)
.setDescription(`Results for: ${search}`)
.setColor(COLORS.DARK_RED);
try {
const results = await youtube.searchVideos(search, 20);
results.map((video, index) => resultsEmbed.addField(video.shortURL, `${index + 1}. ${video.title}`));
var resultsMessage = await message.channel.send(resultsEmbed);
function filter(msg) {
const pattern = /(^[1-9][0-9]{0,1}$)/g;
return pattern.test(msg.content) && parseInt(msg.content.match(pattern)[0]) <= 20;
}
message.channel.activeCollector = true;
const response = await message.channel.awaitMessages(filter, {
max: 1,
time: 30000,
errors: ["time"]
});
const choice = resultsEmbed.fields[parseInt(response.first()) - 1].name;
message.channel.activeCollector = false;
message.client.commands.get("play").execute(message, [choice]);
resultsMessage.delete().catch(console.error);
} catch (error) {
console.error(error);
message.channel.activeCollector = false;
}
}
};
我的代码有问题,当我运行代码时,它会向我嵌入歌曲列表,但是当我选择歌曲时,出现错误TypeError:message.client.commands.get(...)。execute第49行的函数不是函数吗?
您是要获得机器人客户端,而不是发送邮件的客户端吗?
尝试改变
message.client.commands.get("play").execute(message, [choice]);
// to
client.commands.get("play").execute(message, [choice]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句