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