· 5 years ago · Sep 08, 2020, 04:32 PM
1onst Discord = require("discord.js");
2const { prefix, token, YOUTUBE_API } = require("./config.json");
3const ytdl = require("ytdl-core");
4const { MessageEmbed } = require("discord.js")
5const search = require('youtube-search');
6const opts = {
7 maxResults: 25,
8 key: YOUTUBE_API,
9 type: 'video'
10};
11
12const client = new Discord.Client();
13
14const queue = new Map();
15
16... other code stuff ...
17
18client.on('message', async message => {
19 if(message.author.bot) return;
20
21 if(message.content.toLowerCase() === '!search') {
22 let embed = new Discord.MessageEmbed()
23 .setColor("#73ffdc")
24 .setDescription("Please enter a search query. Remember to narrow down your search.")
25 .setTitle("YouTube Search API");
26 let embedMsg = await message.channel.send(embed);
27 let filter = m => m.author.id === message.author.id;
28 let query = await message.channel.awaitMessages(filter, { max: 1 });
29 let results = await search(query.first().content, opts).catch(err => console.log(err));
30 if(results) {
31 let youtubeResults = results.results;
32 let i =0;
33 let titles = youtubeResults.map(result => {
34 i++;
35 return i + ") " + result.title;
36 });
37 console.log(titles);
38 message.channel.send({
39 embed: {
40 title: 'Select which song you want by typing the number',
41 description: titles.join("\n")
42 }
43 }).catch(err => console.log(err));
44
45 filter = m => (m.author.id === message.author.id) && m.content >= 1 && m.content <= youtubeResults.length;
46 let collected = await message.channel.awaitMessages(filter, { max: 1 });
47 let selected = youtubeResults[collected.first().content - 1];
48
49 embed = new Discord.MessageEmbed()
50 .setTitle(`${selected.title}`)
51 .setURL(`${selected.link}`)
52 .setDescription(`${selected.description}`)
53 .setThumbnail(`${selected.thumbnails.default.url}`);
54
55 message.channel.send(embed);
56 }
57 }
58});
59
60client.login(token);
61
62