@@ -30,6 +30,16 @@ class PersonalBestCommand extends minecraftCommand {
3030 username = this . getArgs ( message ) [ 0 ] || username ;
3131 const floor = ( this . getArgs ( message ) [ 1 ] ?? "M7" ) . toLowerCase ( ) ;
3232 const rank = ( this . getArgs ( message ) [ 2 ] ?? "S+" ) . toLowerCase ( ) ;
33+ const floors = [ "e" , "f1" , "f2" , "f3" , "f4" , "f5" , "f6" , "f7" , "m1" , "m2" , "m3" , "m4" , "m5" , "m6" , "m7" ] ;
34+ const ranks = [ "" , "s" , "s+" ] ;
35+ if ( floors . includes ( floor ) === false ) {
36+ // eslint-disable-next-line no-throw-literal
37+ throw "Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ;
38+ }
39+ if ( ranks . includes ( rank ) === false ) {
40+ // eslint-disable-next-line no-throw-literal
41+ throw "Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ;
42+ }
3343
3444 const data = await getLatestProfile ( username ) ;
3545
@@ -42,41 +52,42 @@ class PersonalBestCommand extends minecraftCommand {
4252 throw `${ username } has never played dungeons on ${ data . profileData . cute_name } .` ;
4353 }
4454
45- let requested_floor = dungeons . catacombs ;
55+ let requested_floor = null ;
4656 let time = 0 ;
4757 const floor_type = floor . charAt ( floor . length - 2 ) ;
4858 const floor_number = floor . charAt ( floor . length - 1 ) ;
4959 switch ( floor_type ) {
5060 case "m" :
51- requested_floor = dungeons . catacombs ?. MASTER_MODE_FLOORS ?. [ `floor_${ floor_number } ` ] ?? null ;
61+ requested_floor = dungeons . catacombs ?. MASTER_MODE_FLOORS ?. [ `floor_${ floor_number } ` ] || null ;
5262 break ;
5363 case "f" :
54- requested_floor = dungeons . catacombs ?. floors ?. [ `floor_${ floor_number } ` ] ?? null ;
64+ requested_floor = dungeons . catacombs ?. floors ?. [ `floor_${ floor_number } ` ] || null ;
5565 break ;
5666 case "e" :
57- requested_floor = dungeons . catacombs ?. floors ?. entrance ?? null ;
67+ requested_floor = dungeons . catacombs ?. floors ?. entrance || null ;
5868 break ;
5969 default :
60- this . send ( "/gc Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ) ;
61- break ;
70+ // eslint-disable-next-line no-throw-literal
71+ throw "Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ;
6272 }
6373 // eslint-disable-next-line no-throw-literal
6474 if ( requested_floor === null ) throw `${ username } has never gotten a ${ rank } on ${ floor } before.` ;
6575
6676 switch ( rank ) {
6777 case "s+" :
68- time = requested_floor . fastest_s_plus ;
78+ time = requested_floor ? .fastest_s_plus || 0 ;
6979 break ;
7080 case "s" :
71- time = requested_floor . fastest_s ;
81+ time = requested_floor ? .fastest_s || 0 ;
7282 break ;
7383 default :
74- this . send ( "/gc Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ) ;
84+ time = requested_floor ?. fastest || 0 ;
7585 break ;
7686 }
7787
7888 if ( time === 0 ) {
79- this . send ( `/gc ${ username } has no PB on ${ floor } ${ rank } ` ) ;
89+ // eslint-disable-next-line no-throw-literal
90+ throw `${ username } has no PB on ${ floor } ${ rank } ` ;
8091 } else {
8192 this . send ( `/gc ${ username } 's PB on ${ floor } with ${ rank } rank is ${ millisToMinutesAndSeconds ( time ) } ` ) ;
8293 }
0 commit comments