|
23 | 23 | */
|
24 | 24 | public final class SuggestionsUpDownVoter extends MessageReceiverAdapter {
|
25 | 25 | private static final Logger logger = LoggerFactory.getLogger(SuggestionsUpDownVoter.class);
|
26 |
| - private static final int TITLE_MAX_LENGTH = 60; |
27 | 26 | private static final Emoji FALLBACK_UP_VOTE = Emoji.fromUnicode("👍");
|
28 | 27 | private static final Emoji FALLBACK_DOWN_VOTE = Emoji.fromUnicode("👎");
|
| 28 | + private static final int THREAD_TITLE_MAX_LENGTH = 60; |
29 | 29 |
|
30 | 30 | private final SuggestionsConfig config;
|
31 | 31 |
|
@@ -55,19 +55,33 @@ public void onMessageReceived(MessageReceivedEvent event) {
|
55 | 55 | }
|
56 | 56 |
|
57 | 57 | private static void createThread(Message message) {
|
58 |
| - String title = message.getContentRaw(); |
| 58 | + String threadTitle = generateThreadTitle(message); |
| 59 | + message.createThreadChannel(threadTitle).queue(); |
| 60 | + } |
59 | 61 |
|
60 |
| - if (title.length() >= TITLE_MAX_LENGTH) { |
61 |
| - int lastWordEnd = title.lastIndexOf(' ', TITLE_MAX_LENGTH); |
| 62 | + /** |
| 63 | + * Generates a title for the given message. The maximum length of the title is |
| 64 | + * {@value #THREAD_TITLE_MAX_LENGTH}. |
| 65 | + * |
| 66 | + * @param message The message for which to generate the title. |
| 67 | + * @return The generated and truncated thread title. |
| 68 | + */ |
| 69 | + private static String generateThreadTitle(Message message) { |
| 70 | + String primaryTitle = message.getContentStripped(); |
| 71 | + String fallbackTitle = message.getAuthor().getEffectiveName() + "'s suggestion"; |
| 72 | + String title = primaryTitle.isEmpty() ? fallbackTitle : primaryTitle; |
62 | 73 |
|
63 |
| - if (lastWordEnd == -1) { |
64 |
| - lastWordEnd = TITLE_MAX_LENGTH; |
65 |
| - } |
| 74 | + if (title.length() <= THREAD_TITLE_MAX_LENGTH) { |
| 75 | + return title; |
| 76 | + } |
| 77 | + |
| 78 | + int lastWordEnd = title.lastIndexOf(' ', THREAD_TITLE_MAX_LENGTH); |
66 | 79 |
|
67 |
| - title = title.substring(0, lastWordEnd); |
| 80 | + if (lastWordEnd == -1) { |
| 81 | + return title.substring(0, THREAD_TITLE_MAX_LENGTH); |
68 | 82 | }
|
69 | 83 |
|
70 |
| - message.createThreadChannel(title).queue(); |
| 84 | + return title.substring(0, lastWordEnd); |
71 | 85 | }
|
72 | 86 |
|
73 | 87 | private static void reactWith(String emojiName, Emoji fallbackEmoji, Guild guild,
|
|
0 commit comments