1+ const Agence = require ( "../models/agence" ) ;
2+ const EmbedMessage = require ( "../util/EmbedMessage" ) ;
3+ const AgenceManager = require ( "../managers/AgenceManager" ) ;
4+
5+ module . exports = {
6+ name : "action" ,
7+ use : "**/action [arianeespace niveau 1/ blueorigin niveau 1/ spacex niveau 1 / arianeespace niveau 2/ blueorigin niveau 2/ spacex niveau 2(optionnel)]**" ,
8+ description : "Vous permet de récolter vos parts journalières ou d'acheter de nouvelles parts dans une compagnies ci-dessus." ,
9+ options : [
10+ {
11+ name : "entreprise" ,
12+ description : "Nom de l'entreprise dans laquelle vous achetez une action" ,
13+ type : 3 ,
14+ choices : [
15+ { name : "SpaceX niveau 1" , value : "spacexniv1" } ,
16+ { name : "Blue Origin niveau 1" , value : "blueoriginniv1" } ,
17+ { name : "Ariane Espace niveau 1" , value : "arianeespaceniv1" } ,
18+ { name : "SpaceX niveau 2" , value : "spacexniv2" } ,
19+ { name : "Blue Origin niveau 2" , value : "blueoriginniv2" } ,
20+ { name : "Ariane Espace niveau 2" , value : "arianeespaceniv2" } ,
21+ ] ,
22+ required : false
23+ }
24+ ] ,
25+ admin : false ,
26+ async execute ( client , message , args ) {
27+ const time = new Date ( ) . getTime ( )
28+ if ( await AgenceManager . targetExists ( message . author . id ) ) {
29+ let data = await AgenceManager . getOneByUserID ( message . author . id )
30+ if ( args . length == 0 ) {
31+ if ( data . spacexniv1 === 0 && data . spacexniv2 === 0 && data . blueoriginniv1 === 0 && data . blueoriginniv2 === 0 && data . arianeespaceniv1 === 0 && data . arianeespaceniv2 === 0 ) {
32+ return new EmbedMessage ( client , {
33+ title : "**Part:**" ,
34+ description : "tu n'a aucune part dans une entreprise." ,
35+ author : message . author . username
36+ } )
37+ } else {
38+ if ( time - data . lastpart < 28800000 ) {
39+ let reainingTime = data . lastpart - time + 28800000
40+ let hours = Math . floor ( ( reainingTime % ( 1000 * 60 * 60 * 24 ) ) / ( 1000 * 60 * 60 ) ) ;
41+ let minutes = Math . floor ( ( reainingTime % ( 1000 * 60 * 60 ) ) / ( 1000 * 60 ) ) ;
42+ let secondes = Math . floor ( ( reainingTime % ( 1000 * 60 ) ) / ( 1000 ) ) ;
43+ return new EmbedMessage ( client , {
44+ title : "**Part:**" ,
45+ description : `Il faut attendre ${ hours } heures ${ minutes } minutes ${ secondes } secondes avant de pouvoir executer la commande de nouveau` ,
46+ author : message . author . username
47+ } )
48+ } else {
49+ let argentwin = 0 ;
50+ let description = "" ;
51+ if ( data . spacexniv1 === 1 ) {
52+ argentwin = argentwin + 2000 ;
53+ description = description + "\nVous venez de recevoir vos part de SpaceX niveau 1."
54+ } ;
55+ if ( data . blueoriginniv1 === 1 ) {
56+ argentwin = argentwin + 750 ;
57+ description = description + "\nVous venez de recevoir vos part de Blue Origin niveau 1."
58+ } ;
59+ if ( data . arianeespaceniv1 === 1 ) {
60+ argentwin = argentwin + 350 ;
61+ description = description + "\nVous venez de recevoir vos part d'Ariane Espace niveau 1."
62+ } ;
63+ if ( data . spacexniv2 === 1 ) {
64+ argentwin = argentwin + 2000 ;
65+ description = description + "\nVous venez de recevoir vos part de SpaceX niveau 2."
66+ } ;
67+ if ( data . blueoriginniv2 === 1 ) {
68+ argentwin = argentwin + 750 ;
69+ description = description + "\nVous venez de recevoir vos part de Blue Origin niveau 2."
70+ } ;
71+ if ( data . arianeespaceniv2 === 1 ) {
72+ argentwin = argentwin + 350 ;
73+ description = description + "\nVous venez de recevoir vos part d'Ariane Espace niveau 2."
74+ } ;
75+ cashUpdated = data . cash + argentwin
76+ Agence . findOneAndUpdate ( { userID : message . author . id } ,
77+ { cash : cashUpdated , lastpart : time } ) . catch ( err => { console . error ( err ) } )
78+ return EmbedMessage . showSuccess (
79+ client ,
80+ "**Part:**" ,
81+ description ,
82+ message . author
83+ )
84+ }
85+ }
86+ } else {
87+ let entrepriseName = '' ;
88+ let dataToUpdate = null ;
89+ let partCost = null ;
90+ let error = false ;
91+ switch ( args [ 0 ] ) {
92+ case "arianeespaceniv1" :
93+ entrepriseName = "Ariane Espace Niveau 1"
94+ partCost = client . PRIX_INFOS . arianeespaceniveau1 ;
95+ if ( data . actiondebloque >= 1 ) {
96+ if ( data . arianeespaceniv1 == 1 ) {
97+ return this . alreadyHavePartError ( client , message , entrepriseName )
98+ } else {
99+ if ( data . cash < partCost ) {
100+ return this . notEnoughMoneyError ( client , message )
101+ } else {
102+ dataToUpdate = { cash : data . cash - partCost , arianeespace : 1 , experience : data . experience + 500 }
103+ }
104+ }
105+ } else {
106+ return this . technonotunlock ( client , message , entrepriseName )
107+ }
108+ break ;
109+ case "blueoriginniv1" :
110+ entrepriseName = "Blue Origin Niveau 1"
111+ partCost = 10000
112+ if ( data . actiondebloque >= 2 ) {
113+ if ( data . blueoriginniv1 == 1 ) {
114+ return this . alreadyHavePartError ( client , message , entrepriseName )
115+ } else {
116+ if ( data . cash < partCost ) {
117+ return this . notEnoughMoneyError ( client , message )
118+ } else {
119+ dataToUpdate = { cash : data . cash - partCost , blueorigin : 1 , experience : data . experience + 850 }
120+ }
121+ }
122+ } else {
123+ return this . technonotunlock ( client , message , entrepriseName )
124+ }
125+ break ;
126+ case "spacexniv1" :
127+ entrepriseName = "SpaceX Niveau 1"
128+ partCost = 20000
129+ if ( data . actiondebloque >= 3 ) {
130+ if ( data . spacexniv1 == 1 ) {
131+ return this . alreadyHavePartError ( client , message , entrepriseName )
132+ } else {
133+ if ( data . cash < partCost ) {
134+ return this . notEnoughMoneyError ( client , message )
135+ } else {
136+ dataToUpdate = { cash : data . cash - partCost , spacex : 1 , experience : data . experience + 1800 }
137+ }
138+ }
139+ } else {
140+ return this . technonotunlock ( client , message , entrepriseName )
141+ }
142+ break ;
143+ case "arianeespaceniv2" :
144+ entrepriseName = "Ariane Espace Niveau 2"
145+ partCost = 4500
146+ if ( data . actiondebloque >= 4 ) {
147+ if ( data . arianeespaceniv2 == 1 ) {
148+ return this . alreadyHavePartError ( client , message , entrepriseName )
149+ } else {
150+ if ( data . cash < partCost ) {
151+ return this . notEnoughMoneyError ( client , message )
152+ } else {
153+ dataToUpdate = { cash : data . cash - partCost , arianeespace : 1 , experience : data . experience + 500 }
154+ }
155+ }
156+ } else {
157+ return this . technonotunlock ( client , message , entrepriseName )
158+ }
159+ break ;
160+ case "blueoriginniv2" :
161+ entrepriseName = "Blue Origin Niveau 2"
162+ partCost = 10000
163+ if ( data . actiondebloque >= 5 ) {
164+ if ( data . blueoriginniv2 == 1 ) {
165+ return this . alreadyHavePartError ( client , message , entrepriseName )
166+ } else {
167+ if ( data . cash < partCost ) {
168+ return this . notEnoughMoneyError ( client , message )
169+ } else {
170+ dataToUpdate = { cash : data . cash - partCost , blueorigin : 1 , experience : data . experience + 850 }
171+ }
172+ }
173+ } else {
174+ return this . technonotunlock ( client , message , entrepriseName )
175+ }
176+ break ;
177+ case "spacexniv2" :
178+ entrepriseName = "SpaceX Niveau 2"
179+ partCost = 20000
180+ if ( data . actiondebloque >= 6 ) {
181+ if ( data . spacexniv2 == 1 ) {
182+ return this . alreadyHavePartError ( client , message , entrepriseName )
183+ } else {
184+ if ( data . cash < partCost ) {
185+ return this . notEnoughMoneyError ( client , message )
186+ } else {
187+ dataToUpdate = { cash : data . cash - partCost , spacex : 1 , experience : data . experience + 1800 }
188+ }
189+ }
190+ } else {
191+ return this . technonotunlock ( client , message , entrepriseName )
192+ }
193+ break ;
194+
195+ }
196+
197+ if ( ! error ) {
198+ Agence . findOneAndUpdate ( { userID : message . author . id } , dataToUpdate ) . catch ( err => { console . error ( err ) } )
199+
200+ AgenceManager . evaluateLevel ( data , client , message )
201+
202+ return EmbedMessage . showSuccess (
203+ client ,
204+ "**Part:**" ,
205+ `Bravo tu viens d'acheter des parts dans l'entreprise **${ entrepriseName } **` ,
206+ message . author
207+ )
208+ }
209+ }
210+ } else {
211+ return EmbedMessage . anyAgenceError ( client , message . author )
212+ }
213+ } ,
214+
215+ notEnoughMoneyError ( client , message ) {
216+ return new EmbedMessage ( client , {
217+ title : "**Part:**" ,
218+ description : "Tu n'as pas assez d'argent pour acheter celà !" ,
219+ author : message . author . username
220+ } )
221+ } ,
222+ alreadyHavePartError ( client , message , entrepriseName ) {
223+ return new EmbedMessage ( client , {
224+ title : "**Part:**" ,
225+ description : `Tu as déjà acheté des parts dans l'entreprise **${ entrepriseName } ** !` ,
226+ author : message . author . username
227+ } )
228+ } ,
229+ technonotunlock ( client , message , technologie ) {
230+ return new EmbedMessage ( client , {
231+ title : "**Part:**" ,
232+ description : `Tu n'a pas débloqué la technologie nécessaire : **${ technologie } **` ,
233+ author : message . author . username
234+ } )
235+ }
236+ }
0 commit comments