1+ module . exports = ( WDR , Message ) => {
2+
3+ Message . author . user_guilds = [ ] ;
4+
5+ WDR . Discords . forEach ( async ( Server , index ) => {
6+ let guild = WDR . Bot . guilds . cache . get ( Server . id ) ;
7+ if ( ! guild ) {
8+ WDR . Console . error ( WDR , "[handlers/commands.js] Guild ID `" + Server . id + "` found in the database that does not match any guilds in the config." ) ;
9+ } else {
10+ let member = WDR . Bot . guilds . cache . get ( Server . id ) . members . cache . get ( Message . author . id ) ;
11+ if ( member && member . roles . cache . has ( Server . donor_role ) ) {
12+ Message . author . user_guilds . push ( {
13+ id : guild . id ,
14+ name : Server . name
15+ } ) ;
16+ }
17+ }
18+ } ) ;
19+
20+ if ( Message . author . user_guilds . length == 1 ) {
21+ WDR . wdrDB . query (
22+ `SELECT
23+ *
24+ FROM
25+ users
26+ WHERE
27+ user_id = ${ Message . author . id }
28+ AND guild_id = ${ user_guilds [ 0 ] } ` ,
29+ async function ( error , user , fields ) {
30+ if ( ! user || ! user [ 0 ] ) {
31+ return Message . reply ( "Before you can create and modify subscriptions via DM, you must first use the subsciption channel in your scanner discord." ) ;
32+ } else {
33+ Message . author . db = user [ 0 ] ;
34+ }
35+
36+ let command = Message . content . split ( " " ) [ 0 ] . slice ( 1 ) ;
37+ switch ( command ) {
38+ case "p" :
39+ command = "pokemon" ;
40+ break ;
41+ case "r" :
42+ command = "raid" ;
43+ break ;
44+ case "q" :
45+ command = "quest" ;
46+ break ;
47+ }
48+
49+ let Cmd = require ( WDR . Dir + "/src/commands/subscription/" + command . toLowerCase ( ) + "/begin.js" )
50+ if ( Cmd ) {
51+ Cmd ( WDR , Message ) ;
52+ }
53+ }
54+ ) ;
55+ } else if ( Message . author . user_guilds . length > 1 ) {
56+
57+ let list = "" ;
58+ Message . author . user_guilds . forEach ( ( guild , i ) => {
59+ list += ( i + 1 ) + " - " + guild . name + "\n" ;
60+ } ) ;
61+ list = list . slice ( 0 , - 1 ) ;
62+
63+ let request_action = new WDR . DiscordJS . MessageEmbed ( )
64+ . setAuthor ( Message . author . username , Message . author . displayAvatarURL ( ) )
65+ . setTitle ( "Which Discord would you like to modify Subscriptions for?" )
66+ . setDescription ( list )
67+ . setFooter ( "Type the number of the discord." ) ;
68+
69+ Message . channel . send ( request_action ) . catch ( console . error ) . then ( BotMsg => {
70+
71+ const filter = CollectedMsg => CollectedMsg . author . id == Message . author . id ;
72+ const collector = Message . channel . createMessageCollector ( filter , {
73+ time : 60000
74+ } ) ;
75+
76+ collector . on ( "collect" , CollectedMsg => {
77+
78+ let num = parseInt ( CollectedMsg . content ) ;
79+
80+ switch ( true ) {
81+ case ( isNaN ( CollectedMsg . content ) ) :
82+ return CollectedMsg . reply ( "`" + CollectedMsg . content + "` is not a Number. Type the number next to the Discord name above." ) . then ( m => m . delete ( {
83+ timeout : 5000
84+ } ) ) . catch ( console . error ) ;
85+ case ( num > 0 && num <= list . length ) :
86+ return collector . stop ( ( num - 1 ) ) ;
87+ default :
88+ return CollectedMsg . reply ( "`" + CollectedMsg . content + "` is not a valid # selection. Type the number next to the Discord name above." ) . then ( m => m . delete ( {
89+ timeout : 5000
90+ } ) ) . catch ( console . error ) ;
91+ }
92+ } ) ;
93+
94+ collector . on ( "end" , ( collected , num ) => {
95+
96+ console . log ( Message . author . user_guilds ) ;
97+ console . log ( "num" , Message . author . user_guilds [ num ] )
98+
99+ BotMsg . delete ( ) ;
100+ let query = `
101+ SELECT
102+ *
103+ FROM
104+ wdr_users
105+ WHERE
106+ user_id = ${ Message . author . id }
107+ AND guild_id = ${ Message . author . user_guilds [ num ] . id } ;
108+ ` ;
109+ console . log ( query ) ;
110+ WDR . wdrDB . query (
111+ query ,
112+ async function ( error , user , fields ) {
113+ if ( error ) {
114+ WDR . Console . error ( WDR , "[src/handlers/commands.js] DM: Error Fetching User From DB" , [ query , error ] )
115+ }
116+ Message . author . db = user [ 0 ] ;
117+
118+ let command = Message . content . split ( " " ) [ 0 ] . slice ( 1 ) ;
119+ switch ( command ) {
120+ case "p" :
121+ command = "pokemon" ;
122+ break ;
123+ case "r" :
124+ command = "raid" ;
125+ break ;
126+ case "q" :
127+ command = "quest" ;
128+ break ;
129+ }
130+
131+ let Cmd = require ( WDR . Dir + "/src/commands/subscription/" + command . toLowerCase ( ) + "/begin.js" )
132+ if ( Cmd ) {
133+ Cmd ( WDR , Message ) ;
134+ }
135+ }
136+ ) ;
137+ } ) ;
138+ } ) ;
139+ } else {
140+ return Message . reply ( "I did not find any Discords in which you are a Donor. Please go to your discord's subscribe website before modifying subscriptions" ) ;
141+ }
142+ }
0 commit comments