1919import org .comroid .api .attr .IntegerAttribute ;
2020import org .comroid .api .data .RegExpUtil ;
2121import org .comroid .api .data .seri .type .ValueType ;
22+ import org .comroid .api .func .exc .ThrowingFunction ;
2223import org .comroid .api .tree .Initializable ;
2324import org .comroid .interaction .InteractionCore ;
2425import org .comroid .interaction .component .NameCapitalizer ;
3334import java .util .Collection ;
3435import java .util .Optional ;
3536import java .util .concurrent .atomic .AtomicLong ;
37+ import java .util .logging .Level ;
3638import java .util .stream .Stream ;
3739
3840import static org .comroid .interaction .adapter .jda .JdaAdapter .*;
@@ -85,7 +87,6 @@ public void initialize() {
8587 }
8688
8789 var jda = adp .getJda ();
88- log .info ("Upserting %d interactions to discord bot %s" .formatted (all .size (), jda .getSelfUser ()));
8990
9091 RestAction <?> action = PURGE_COMMANDS .consume () ? jda .retrieveCommands ().flatMap (cmds -> {
9192 log .fine ("Purging %d previously defined commands" .formatted (cmds .size ()));
@@ -99,7 +100,10 @@ public void initialize() {
99100
100101 for (var data : all ) action = action .flatMap ($ -> jda .upsertCommand (data ));
101102
102- action .queue ();
103+ action .submit ().thenAccept ($ -> log .info ("Upserted %d interactions to discord bot %s" .formatted (all .size (), jda .getSelfUser ()))).exceptionally (t -> {
104+ log .log (Level .SEVERE , "Failed to upsert interactions" , t );
105+ return null ;
106+ });
103107 }
104108
105109 static void initCommandData (InteractionNode node , CommandData data ) {
@@ -108,7 +112,10 @@ static void initCommandData(InteractionNode node, CommandData data) {
108112 }
109113
110114 static void initDefaultPermission (Stream <String > permissions , CommandData data ) {
111- var permissionMask = permissions .flatMap (perm -> Optional .ofNullable (Permission .valueOf (perm .toUpperCase ()))
115+ var permissionMask = permissions .flatMap (perm -> Optional .of (perm )
116+ .filter (str -> str .matches ("\\ D+" ))
117+ .map (String ::toUpperCase )
118+ .map (ThrowingFunction .fallback (Permission ::valueOf ))
112119 .map (Stream ::of )
113120 .orElseGet (() -> Stream .of (perm )
114121 .filter (it -> it .matches ("\\ d+" ))
0 commit comments