【发布时间】:2020-09-18 00:51:45
【问题描述】:
我正在尝试创建一个在 youtube 上搜索视频 URL 的命令。当我自己运行该命令时,它会发送嵌入内容,告诉您缩小搜索范围。但是,当我运行命令 + 查询时,它会在控制台中记录大部分视频信息,但不会说明视频本身的 URL,也不会向服务器发送任何内容。它不记录错误,并且机器人保持在线。如何解决这个问题?
const opts = {
maxResults: 25,
key: '(youtube api key)',
type: 'video'
};
const search = require('youtube-search')
bot.on('message', async message => {
if(message.author.bot) return;
if(message.content.toLowerCase() === 'a!play') {
let embed = new Discord.MessageEmbed()
.setColor("#73ffdc")
.setDescription("Please enter a search query. Remember to narrow down your search.")
.setTitle("YouTube Search API");
let embedMsg = await message.channel.send(embed);
let filter = m => m.author.id === message.author.id;
let query = await message.channel.awaitMessages(filter, { max: 1 });
let results = await search(query.first().content, opts).catch(err => console.log(err));
if(results) {
let youtubeResults = results.results;
let i =0;
let titles = youtubeResults.map(result => {
i++;
return i + ") " + result.title;
});
console.log(titles);
message.channel.send({
embed: {
title: 'Select which song you want by typing the number',
description: titles.join("\n")
}
}).catch(err => console.log(err));
filter = m => (m.author.id === message.author.id) && m.content >= 1 && m.content <= youtubeResults.length;
let collected = await message.channel.awaitMessages(filter, { maxMatches: 1 });
let selected = youtubeResults[collected.first().content - 1];
embed = new Discord.MessageEmbed()
.setTitle(`${selected.title}`)
.setURL(`${selected.link}`)
.setDescription(`${selected.description}`)
.setThumbnail(`${selected.thumbnails.default.url}`);
message.channel.send(embed);
}
}
});
【问题讨论】:
标签: node.js npm discord.js