Skip to content

Commit e7c216a

Browse files
authored
Fixed components not working (#601)
* Bugfix In BotCommandAdapter the Interactor's name was used without prefix during ID generation, but to forward from the button (or other component) the prefix is needed.
1 parent c54df4a commit e7c216a

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

application/src/main/java/org/togetherjava/tjbot/commands/BotCommandAdapter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ protected final String generateComponentId(String... args) {
130130
*/
131131
@SuppressWarnings({"OverloadedVarargsMethod", "WeakerAccess"})
132132
protected final String generateComponentId(Lifespan lifespan, String... args) {
133-
return componentIdGenerator.generate(new ComponentId(getName(), Arrays.asList(args)),
134-
lifespan);
133+
return componentIdGenerator
134+
.generate(new ComponentId(UserInteractorPrefix.getPrefixedNameFromInstance(this),
135+
Arrays.asList(args)), lifespan);
135136
}
136137
}

application/src/main/java/org/togetherjava/tjbot/commands/system/BotCore.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,12 @@ public BotCore(JDA jda, Database database, Config config) {
104104
componentIdParser = uuid -> componentIdStore.get(UUID.fromString(uuid));
105105
Collection<UserInteractor> interactors = getInteractors();
106106

107-
interactors.forEach(slashCommand -> slashCommand
108-
.acceptComponentIdGenerator(((componentId, lifespan) -> {
109-
UUID uuid = UUID.randomUUID();
110-
componentIdStore.putOrThrow(uuid, componentId, lifespan);
111-
return uuid.toString();
112-
})));
107+
interactors.forEach(
108+
interactor -> interactor.acceptComponentIdGenerator(((componentId, lifespan) -> {
109+
UUID uuid = UUID.randomUUID();
110+
componentIdStore.putOrThrow(uuid, componentId, lifespan);
111+
return uuid.toString();
112+
})));
113113

114114
if (logger.isInfoEnabled()) {
115115
logger.info("Available user interactors: {}", interactors);

application/src/test/java/org/togetherjava/tjbot/commands/SlashCommandAdapterTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
final class SlashCommandAdapterTest {
1212
private static final String NAME = "foo";
13+
private static final String PREFIXED_NAME =
14+
UserInteractorPrefix.SLASH_COMMAND.getPrefix() + NAME;
1315
private static final String DESCRIPTION = "Foo command";
1416
private static final CommandVisibility VISIBILITY = CommandVisibility.GUILD;
1517
private static final int UNIQUE_ID_ITERATIONS = 20;
@@ -71,15 +73,15 @@ void generateComponentId() {
7173
String[] elements = {"foo", "bar", "baz"};
7274
String[] componentIdText = adapter.generateComponentId(elements).split(";");
7375
assertEquals(3, componentIdText.length);
74-
assertEquals(NAME, componentIdText[0]);
76+
assertEquals(PREFIXED_NAME, componentIdText[0]);
7577
assertEquals(Integer.toString(elements.length), componentIdText[1]);
7678
assertEquals(Lifespan.REGULAR.toString(), componentIdText[2]);
7779

7880
// Explicit lifespan
7981
for (Lifespan lifespan : Lifespan.values()) {
8082
componentIdText = adapter.generateComponentId(lifespan, elements).split(";");
8183
assertEquals(3, componentIdText.length);
82-
assertEquals(NAME, componentIdText[0]);
84+
assertEquals(PREFIXED_NAME, componentIdText[0]);
8385
assertEquals(Integer.toString(elements.length), componentIdText[1]);
8486
assertEquals(lifespan.toString(), componentIdText[2]);
8587
}

0 commit comments

Comments
 (0)