@@ -29,6 +29,16 @@ class PersonalBestCommand extends minecraftCommand {
2929 username = this . getArgs ( message ) [ 0 ] || username ;
3030 const floor = ( this . getArgs ( message ) [ 1 ] ?? "M7" ) . toLowerCase ( ) ;
3131 const rank = ( this . getArgs ( message ) [ 2 ] ?? "S+" ) . toLowerCase ( ) ;
32+ const floors = [ "e" , "f1" , "f2" , "f3" , "f4" , "f5" , "f6" , "f7" , "m1" , "m2" , "m3" , "m4" , "m5" , "m6" , "m7" ] ;
33+ const ranks = [ "" , "s" , "s+" ] ;
34+ if ( floors . includes ( floor ) === false ) {
35+ // eslint-disable-next-line no-throw-literal
36+ throw "Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ;
37+ }
38+ if ( ranks . includes ( rank ) === false ) {
39+ // eslint-disable-next-line no-throw-literal
40+ throw "Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ;
41+ }
3242
3343 const data = await getLatestProfile ( username ) ;
3444
@@ -41,41 +51,42 @@ class PersonalBestCommand extends minecraftCommand {
4151 throw `${ username } has never played dungeons on ${ data . profileData . cute_name } .` ;
4252 }
4353
44- let requested_floor = dungeons . catacombs ;
54+ let requested_floor = null ;
4555 let time = 0 ;
4656 const floor_type = floor . charAt ( floor . length - 2 ) ;
4757 const floor_number = floor . charAt ( floor . length - 1 ) ;
4858 switch ( floor_type ) {
4959 case "m" :
50- requested_floor = dungeons . catacombs ?. MASTER_MODE_FLOORS ?. [ `floor_${ floor_number } ` ] ?? null ;
60+ requested_floor = dungeons . catacombs ?. MASTER_MODE_FLOORS ?. [ `floor_${ floor_number } ` ] || null ;
5161 break ;
5262 case "f" :
53- requested_floor = dungeons . catacombs ?. floors ?. [ `floor_${ floor_number } ` ] ?? null ;
63+ requested_floor = dungeons . catacombs ?. floors ?. [ `floor_${ floor_number } ` ] || null ;
5464 break ;
5565 case "e" :
56- requested_floor = dungeons . catacombs ?. floors ?. entrance ?? null ;
66+ requested_floor = dungeons . catacombs ?. floors ?. entrance || null ;
5767 break ;
5868 default :
59- this . send ( "/gc Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ) ;
60- break ;
69+ // eslint-disable-next-line no-throw-literal
70+ throw "Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ;
6171 }
6272 // eslint-disable-next-line no-throw-literal
6373 if ( requested_floor === null ) throw `${ username } has never gotten a ${ rank } on ${ floor } before.` ;
6474
6575 switch ( rank ) {
6676 case "s+" :
67- time = requested_floor . fastest_s_plus ;
77+ time = requested_floor ? .fastest_s_plus || 0 ;
6878 break ;
6979 case "s" :
70- time = requested_floor . fastest_s ;
80+ time = requested_floor ? .fastest_s || 0 ;
7181 break ;
7282 default :
73- this . send ( "/gc Invalid Usage: !pb [user] [floor (m7/f4/etc)] [rank (S+, S, any)]" ) ;
83+ time = requested_floor ?. fastest || 0 ;
7484 break ;
7585 }
7686
7787 if ( time === 0 ) {
78- this . send ( `/gc ${ username } has no PB on ${ floor } ${ rank } ` ) ;
88+ // eslint-disable-next-line no-throw-literal
89+ throw `${ username } has no PB on ${ floor } ${ rank } ` ;
7990 } else {
8091 this . send ( `/gc ${ username } 's PB on ${ floor } with ${ rank } rank is ${ millisToMinutesAndSeconds ( time ) } ` ) ;
8192 }
0 commit comments