@@ -19,42 +19,53 @@ module.exports = class extends Command {
1919 throw message . language . get ( 'COMMAND_CONF_NOKEY' ) ;
2020 } )
2121 . createCustomResolver ( 'value' , ( arg , possible , message , [ action ] ) => {
22- if ( ! [ 'set' , 'remove' ] . includes ( action ) || arg ) return arg ;
22+ if ( ! [ 'set' , 'remove' ] . includes ( action ) ) return null ;
23+ if ( arg ) return this . client . arguments . get ( '...string' ) . run ( arg , possible , message ) ;
2324 throw message . language . get ( 'COMMAND_CONF_NOVALUE' ) ;
2425 } ) ;
2526 }
2627
2728 show ( message , [ key ] ) {
28- const path = this . client . gateways . guilds . getPath ( key , { avoidUnconfigurable : true , errors : false , piece : null } ) ;
29- if ( ! path ) return message . sendLocale ( 'COMMAND_CONF_GET_NOEXT' , [ key ] ) ;
30- if ( path . piece . type === 'Folder' ) {
29+ const entry = this . getPath ( key ) ;
30+ if ( ! entry || ( entry . type === 'Folder' ? ! entry . configurableKeys . length : ! entry . configurable ) ) return message . sendLocale ( 'COMMAND_CONF_GET_NOEXT' , [ key ] ) ;
31+ if ( entry . type === 'Folder' ) {
3132 return message . sendLocale ( 'COMMAND_CONF_SERVER' , [
3233 key ? `: ${ key . split ( '.' ) . map ( toTitleCase ) . join ( '/' ) } ` : '' ,
33- codeBlock ( 'asciidoc' , message . guild . settings . list ( message , path . piece ) )
34+ codeBlock ( 'asciidoc' , message . guild . settings . display ( message , entry ) )
3435 ] ) ;
3536 }
36- return message . sendLocale ( 'COMMAND_CONF_GET' , [ path . piece . path , message . guild . settings . resolveString ( message , path . piece ) ] ) ;
37+ return message . sendLocale ( 'COMMAND_CONF_GET' , [ entry . path , message . guild . settings . display ( message , entry ) ] ) ;
3738 }
3839
39- async set ( message , [ key , ... valueToSet ] ) {
40- const status = await message . guild . settings . update ( key , valueToSet . join ( ' ' ) , message . guild , { avoidUnconfigurable : true , action : 'add' } ) ;
41- return this . check ( message , key , status ) || message . sendLocale ( 'COMMAND_CONF_UPDATED' , [ key , message . guild . settings . resolveString ( message , status . updated [ 0 ] . piece ) ] ) ;
40+ async set ( message , [ key , valueToSet ] ) {
41+ const entry = this . check ( message , key , await message . guild . settings . update ( key , valueToSet , { onlyConfigurable : true , arrayAction : 'add' } ) ) ;
42+ return message . sendLocale ( 'COMMAND_CONF_UPDATED' , [ key , message . guild . settings . display ( message , entry ) ] ) ;
4243 }
4344
44- async remove ( message , [ key , ... valueToRemove ] ) {
45- const status = await message . guild . settings . update ( key , valueToRemove . join ( ' ' ) , message . guild , { avoidUnconfigurable : true , action : 'remove' } ) ;
46- return this . check ( message , key , status ) || message . sendLocale ( 'COMMAND_CONF_UPDATED' , [ key , message . guild . settings . resolveString ( message , status . updated [ 0 ] . piece ) ] ) ;
45+ async remove ( message , [ key , valueToRemove ] ) {
46+ const entry = this . check ( message , key , await message . guild . settings . update ( key , valueToRemove , { onlyConfigurable : true , arrayAction : 'remove' } ) ) ;
47+ return message . sendLocale ( 'COMMAND_CONF_UPDATED' , [ key , message . guild . settings . display ( message , entry ) ] ) ;
4748 }
4849
4950 async reset ( message , [ key ] ) {
50- const status = await message . guild . settings . reset ( key , message . guild , true ) ;
51- return this . check ( message , key , status ) || message . sendLocale ( 'COMMAND_CONF_RESET' , [ key , message . guild . settings . resolveString ( message , status . updated [ 0 ] . piece ) ] ) ;
51+ const entry = this . check ( message , key , await message . guild . settings . reset ( key ) ) ;
52+ return message . sendLocale ( 'COMMAND_CONF_RESET' , [ key , message . guild . settings . display ( message , entry ) ] ) ;
5253 }
5354
5455 check ( message , key , { errors, updated } ) {
55- if ( errors . length ) return message . sendMessage ( String ( errors [ 0 ] ) ) ;
56- if ( ! updated . length ) return message . sendLocale ( 'COMMAND_CONF_NOCHANGE' , [ key ] ) ;
57- return null ;
56+ if ( errors . length ) throw String ( errors [ 0 ] ) ;
57+ if ( ! updated . length ) throw message . language . get ( 'COMMAND_CONF_NOCHANGE' , key ) ;
58+ return updated [ 0 ] . entry ;
59+ }
60+
61+ getPath ( key ) {
62+ const { schema } = this . client . gateways . get ( 'guilds' ) ;
63+ if ( ! key ) return schema ;
64+ try {
65+ return schema . get ( key ) ;
66+ } catch ( __ ) {
67+ return undefined ;
68+ }
5869 }
5970
6071} ;
0 commit comments