@@ -32,6 +32,14 @@ public class ChannelConfigCommand implements SlashCommand {
32
32
public final static String REPLACE_NAME_VALUE_DELIMITER = ":" ;
33
33
public final static String REGEX_NAME_VALUE_DELIMITER = "::" ;
34
34
public final static String NAME_VALUE_DELIMITER = ";" ;
35
+ public static final String CHANNEL_OPTION_NAME = "channel" ;
36
+ public static final CommandDefinitionOption CHANNEL_COMMAND_OPTION = CommandDefinitionOption .builder ()
37
+ .name (CHANNEL_OPTION_NAME )
38
+ .nameLocales (I18n .allNoneEnglishMessagesNames ("base.option.channel.name" ))
39
+ .description (I18n .getMessage ("base.option.channel.description" , Locale .ENGLISH ))
40
+ .descriptionLocales (I18n .allNoneEnglishMessagesDescriptions ("base.option.channel.description" ))
41
+ .type (CommandDefinitionOption .Type .CHANNEL )
42
+ .build ();
35
43
static final String ALWAYS_SUM_RESULTS_OPTION_NAME = "always_sum_result" ;
36
44
private static final String SAVE_DIRECT_ROLL_CONFIG_OPTION_NAME = "save_direct_roll_config" ;
37
45
private static final String DELETE_DIRECT_ROLL_CONFIG_OPTION_NAME = "delete_direct_roll_config" ;
@@ -81,6 +89,7 @@ public class ChannelConfigCommand implements SlashCommand {
81
89
.required (true )
82
90
.build ())
83
91
.option (SCOPE_OPTION )
92
+ .option (CHANNEL_COMMAND_OPTION )
84
93
.build ();
85
94
private static final CommandDefinitionOption DELETE_ALIAS_OPTION = CommandDefinitionOption .builder ()
86
95
.type (CommandDefinitionOption .Type .SUB_COMMAND )
@@ -98,6 +107,7 @@ public class ChannelConfigCommand implements SlashCommand {
98
107
.required (true )
99
108
.autoComplete (true )
100
109
.build ())
110
+ .option (CHANNEL_COMMAND_OPTION )
101
111
.build ();
102
112
private static final CommandDefinitionOption DELETE_ALL_ALIAS_OPTION = CommandDefinitionOption .builder ()
103
113
.type (CommandDefinitionOption .Type .SUB_COMMAND )
@@ -106,6 +116,7 @@ public class ChannelConfigCommand implements SlashCommand {
106
116
.description (I18n .getMessage ("channel_config.option.delete.all.description" , Locale .ENGLISH ))
107
117
.descriptionLocales (I18n .allNoneEnglishMessagesDescriptions ("channel_config.option.delete.all.description" ))
108
118
.option (SCOPE_OPTION )
119
+ .option (CHANNEL_COMMAND_OPTION )
109
120
.build ();
110
121
private static final CommandDefinitionOption LIST_ALIAS_OPTION = CommandDefinitionOption .builder ()
111
122
.type (CommandDefinitionOption .Type .SUB_COMMAND )
@@ -114,6 +125,7 @@ public class ChannelConfigCommand implements SlashCommand {
114
125
.description (I18n .getMessage ("channel_config.option.list.description" , Locale .ENGLISH ))
115
126
.descriptionLocales (I18n .allNoneEnglishMessagesDescriptions ("channel_config.option.list.description" ))
116
127
.option (SCOPE_OPTION )
128
+ .option (CHANNEL_COMMAND_OPTION )
117
129
.build ();
118
130
private static final CommandDefinitionOption ALIAS_TYPE_OPTION = CommandDefinitionOption .builder ()
119
131
.type (CommandDefinitionOption .Type .STRING )
@@ -157,6 +169,7 @@ public class ChannelConfigCommand implements SlashCommand {
157
169
.build ())
158
170
.option (SCOPE_OPTION )
159
171
.option (ALIAS_TYPE_OPTION )
172
+ .option (CHANNEL_COMMAND_OPTION )
160
173
.build ();
161
174
private final PersistenceManager persistenceManager ;
162
175
@@ -214,13 +227,15 @@ public static List<Alias> parseStringToMultiAliasList(String aliasesString) {
214
227
.type (CommandDefinitionOption .Type .BOOLEAN )
215
228
.required (false )
216
229
.build ())
230
+ .option (CHANNEL_COMMAND_OPTION )
217
231
.build ())
218
232
.option (CommandDefinitionOption .builder ()
219
233
.name (DELETE_DIRECT_ROLL_CONFIG_OPTION_NAME )
220
234
.nameLocales (I18n .allNoneEnglishMessagesNames ("channel_config.option.delete_direct_roll_config.name" ))
221
235
.description (I18n .getMessage ("channel_config.option.delete_direct_roll_config.description" , Locale .ENGLISH ))
222
236
.descriptionLocales (I18n .allNoneEnglishMessagesDescriptions ("channel_config.option.delete_direct_roll_config.description" ))
223
237
.type (CommandDefinitionOption .Type .SUB_COMMAND_GROUP )
238
+ .option (CHANNEL_COMMAND_OPTION )
224
239
.build ())
225
240
.option (CommandDefinitionOption .builder ()
226
241
.name (ALIAS_OPTION_NAME )
@@ -269,6 +284,10 @@ private String serializeConfig(DirectRollConfig channelConfig) {
269
284
270
285
@ Override
271
286
public @ NonNull Mono <Void > handleSlashCommandEvent (@ NonNull SlashEventAdaptor event , @ NonNull Supplier <UUID > uuidSupplier , @ NonNull Locale userLocal ) {
287
+ long channelId = event .getOption (CHANNEL_OPTION_NAME )
288
+ .map (CommandInteractionOption ::getChannelIdValue )
289
+ .orElse (event .getChannelId ());
290
+
272
291
if (event .getOption (SAVE_DIRECT_ROLL_CONFIG_OPTION_NAME ).isPresent ()) {
273
292
CommandInteractionOption saveAction = event .getOption (SAVE_DIRECT_ROLL_CONFIG_OPTION_NAME ).get ();
274
293
boolean alwaysSumResults = saveAction .getBooleanSubOptionWithName (ALWAYS_SUM_RESULTS_OPTION_NAME ).orElse (true );
@@ -281,11 +300,12 @@ private String serializeConfig(DirectRollConfig channelConfig) {
281
300
final String name = BaseCommandOptions .getNameFromStartCommandOption (saveAction ).orElse (null );
282
301
DirectRollConfig config = new DirectRollConfig (null , alwaysSumResults , answerFormatType , answerInteractionType , null , new DiceStyleAndColor (diceImageStyle , defaultDiceColor ), userOrConfigLocale , name );
283
302
BotMetrics .incrementSlashStartMetricCounter (getCommandId () + "_rollConfigSave" );
303
+
284
304
return Mono .defer (() -> {
285
- persistenceManager .deleteChannelConfig (event . getChannelId () , DIRECT_ROLL_CONFIG_TYPE_ID );
305
+ persistenceManager .deleteChannelConfig (channelId , DIRECT_ROLL_CONFIG_TYPE_ID );
286
306
persistenceManager .saveChannelConfig (new ChannelConfigDTO (uuidSupplier .get (),
287
307
event .getGuildId (),
288
- event . getChannelId () ,
308
+ channelId ,
289
309
null ,
290
310
DirectRollCommand .ROLL_COMMAND_ID ,
291
311
DIRECT_ROLL_CONFIG_TYPE_ID ,
@@ -307,16 +327,16 @@ private String serializeConfig(DirectRollConfig channelConfig) {
307
327
event .getRequester ().toLogString (),
308
328
event .getCommandString ().replace ("`" , "" )
309
329
);
310
- persistenceManager .deleteChannelConfig (event . getChannelId () , DIRECT_ROLL_CONFIG_TYPE_ID );
330
+ persistenceManager .deleteChannelConfig (channelId , DIRECT_ROLL_CONFIG_TYPE_ID );
311
331
return event .reply (I18n .getMessage ("channel_config.deleted.reply" , userLocal , event .getCommandString ()), false );
312
332
});
313
333
}
314
334
if (event .getOption (ALIAS_OPTION_NAME ).isPresent ()) {
315
335
CommandInteractionOption aliasOption = event .getOption (ALIAS_OPTION_NAME ).get ();
316
336
if (SCOPE_OPTION_CHOICE_USER_CHANNEL_NAME .equals (aliasOption .getStringSubOptionWithName (SCOPE_OPTION_NAME ).orElse (null ))) {
317
- return handelChannelEvent (event , event .getUserId (), uuidSupplier , userLocal );
337
+ return handelChannelEvent (event , event .getUserId (), uuidSupplier , userLocal , channelId );
318
338
} else if (SCOPE_OPTION_CHOICE_CHANNEL_NAME .equals (aliasOption .getStringSubOptionWithName (SCOPE_OPTION_NAME ).orElse (null ))) {
319
- return handelChannelEvent (event , null , uuidSupplier , userLocal );
339
+ return handelChannelEvent (event , null , uuidSupplier , userLocal , channelId );
320
340
}
321
341
log .error ("missing scope in slash event: {}" , event .getOptions ());
322
342
}
@@ -339,7 +359,11 @@ public void saveAliasesConfig(@NonNull List<Alias> aliases, long channelId, Long
339
359
340
360
}
341
361
342
- private Mono <Void > handelChannelEvent (@ NonNull SlashEventAdaptor event , Long userId , @ NonNull Supplier <UUID > uuidSupplier , @ NonNull Locale userLocale ) {
362
+ private Mono <Void > handelChannelEvent (@ NonNull SlashEventAdaptor event ,
363
+ Long userId ,
364
+ @ NonNull Supplier <UUID > uuidSupplier ,
365
+ @ NonNull Locale userLocale ,
366
+ long channelId ) {
343
367
if (event .getOption (SAVE_ALIAS_OPTION_NAME ).isPresent ()) {
344
368
String scope = userId == null ? "channelAliasSave" : "user_channelAliasSave" ;
345
369
BotMetrics .incrementSlashStartMetricCounter (getCommandId () + "_" + scope );
@@ -351,7 +375,7 @@ private Mono<Void> handelChannelEvent(@NonNull SlashEventAdaptor event, Long use
351
375
.orElse (Alias .Type .Replace );
352
376
353
377
Alias alias = new Alias (name , value , type );
354
- saveAliasesConfig (List .of (alias ), event . getChannelId () , event .getGuildId (), userId , uuidSupplier , null );
378
+ saveAliasesConfig (List .of (alias ), channelId , event .getGuildId (), userId , uuidSupplier , null );
355
379
log .info ("{}: save {} alias: {}" ,
356
380
event .getRequester ().toLogString (),
357
381
userId == null ? "channel" : "user channel" ,
@@ -377,7 +401,7 @@ private Mono<Void> handelChannelEvent(@NonNull SlashEventAdaptor event, Long use
377
401
}
378
402
List <Alias > aliases = parseStringToMultiAliasList (aliasesString );
379
403
final String name = BaseCommandOptions .getNameFromStartCommandOption (commandInteractionOption ).orElse (null );
380
- saveAliasesConfig (aliases , event . getChannelId () , event .getGuildId (), userId , uuidSupplier , name );
404
+ saveAliasesConfig (aliases , channelId , event .getGuildId (), userId , uuidSupplier , name );
381
405
382
406
log .info ("{}: save {} aliases: {}" ,
383
407
event .getRequester ().toLogString (),
@@ -390,15 +414,15 @@ private Mono<Void> handelChannelEvent(@NonNull SlashEventAdaptor event, Long use
390
414
String name = commandInteractionOption .getStringSubOptionWithName (ALIAS_NAME_OPTION_NAME ).orElseThrow ();
391
415
392
416
BotMetrics .incrementSlashStartMetricCounter (getCommandId () + "_aliasDelete" );
393
- final List <Alias > existingAlias = loadAlias (event . getChannelId () , userId );
417
+ final List <Alias > existingAlias = loadAlias (channelId , userId );
394
418
if (existingAlias .stream ().noneMatch (alias -> alias .getName ().equals (name ))) {
395
419
return event .reply (I18n .getMessage ("channel_config.deletedAlias.notFound" , userLocale , name ), true );
396
420
}
397
421
List <Alias > newAliasList = existingAlias .stream ()
398
422
.filter (alias -> !alias .getName ().equals (name ))
399
423
.toList ();
400
- deleteAlias (event . getChannelId () , userId );
401
- saveAliasConfig (event . getChannelId () , event .getGuildId (), userId , new AliasConfig (newAliasList , null ), uuidSupplier );
424
+ deleteAlias (channelId , userId );
425
+ saveAliasConfig (channelId , event .getGuildId (), userId , new AliasConfig (newAliasList , null ), uuidSupplier );
402
426
log .info ("{}: delete {} alias: {}" ,
403
427
event .getRequester ().toLogString (),
404
428
userId == null ? "channel" : "user channel" ,
@@ -407,14 +431,14 @@ private Mono<Void> handelChannelEvent(@NonNull SlashEventAdaptor event, Long use
407
431
return event .reply (I18n .getMessage ("channel_config.deletedAlias.reply" , userLocale , event .getCommandString ()), userId != null );
408
432
} else if (event .getOption (DELETE_ALL_ALIAS_OPTION_NAME ).isPresent ()) {
409
433
BotMetrics .incrementSlashStartMetricCounter (getCommandId () + "_aliasDeleteAll" );
410
- deleteAlias (event . getChannelId () , userId );
434
+ deleteAlias (channelId , userId );
411
435
log .info ("{}: delete {} all alias" ,
412
436
event .getRequester ().toLogString (),
413
437
userId == null ? "channel" : "user channel"
414
438
);
415
439
return event .reply (I18n .getMessage ("channel_config.deletedAlias.reply" , userLocale , event .getCommandString ()), userId != null );
416
440
} else if (event .getOption (LIST_ALIAS_OPTION_NAME ).isPresent ()) {
417
- final List <Alias > existingAlias = loadAlias (event . getChannelId () , userId );
441
+ final List <Alias > existingAlias = loadAlias (channelId , userId );
418
442
419
443
BotMetrics .incrementSlashStartMetricCounter (getCommandId () + "_aliasList" );
420
444
0 commit comments