Skip to content

Commit 606c398

Browse files
committed
Add autotagging for forum channels
1 parent 3f72d2a commit 606c398

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

src/main/java/xyz/htmlcsjs/coffeeFloppa/CoffeeFloppa.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import discord4j.core.event.domain.interaction.ChatInputInteractionEvent;
77
import discord4j.core.event.domain.lifecycle.ReadyEvent;
88
import discord4j.core.event.domain.message.*;
9+
import discord4j.core.event.domain.thread.ThreadChannelCreateEvent;
910
import discord4j.core.object.entity.User;
1011
import discord4j.core.spec.EmbedCreateSpec;
1112
import discord4j.discordjson.json.ApplicationCommandRequest;
@@ -81,6 +82,9 @@ public void run() throws IOException {
8182
Mono<Void> handleReactionAddition = gateway.on(ReactionAddEvent.class, ReactionHandler::addition).then();
8283
Mono<Void> handleReactionDeletion = gateway.on(ReactionRemoveEvent.class, ReactionHandler::deletion).then();
8384

85+
// thread handling
86+
Mono<Void> handleThreadCreation = gateway.on(ThreadChannelCreateEvent.class, MessageHandler::threadCreate).then();
87+
8488
// fuck slash commands
8589
Long appid = client.getApplicationId().block();
8690
if (appid != null) {
@@ -108,6 +112,7 @@ public void run() throws IOException {
108112
.and(handleReactionDeletion)
109113
.and(handleCommandEditing)
110114
.and(handleCommandDeletion)
115+
.and(handleThreadCreation)
111116
.and(handleShittyCommands)
112117
.doOnError(CoffeeFloppa::handleException);
113118
});

src/main/java/xyz/htmlcsjs/coffeeFloppa/handlers/MessageHandler.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
package xyz.htmlcsjs.coffeeFloppa.handlers;
22

3+
import com.fasterxml.jackson.annotation.JsonProperty;
34
import discord4j.common.util.Snowflake;
45
import discord4j.core.event.domain.message.MessageCreateEvent;
56
import discord4j.core.event.domain.message.MessageDeleteEvent;
67
import discord4j.core.event.domain.message.MessageUpdateEvent;
8+
import discord4j.core.event.domain.thread.ThreadChannelCreateEvent;
79
import discord4j.core.object.entity.Message;
810
import discord4j.core.object.entity.User;
9-
import discord4j.core.object.entity.channel.Channel;
10-
import discord4j.core.object.entity.channel.GuildChannel;
11-
import discord4j.core.object.entity.channel.MessageChannel;
12-
import discord4j.core.object.entity.channel.PrivateChannel;
11+
import discord4j.core.object.entity.channel.*;
1312
import discord4j.core.object.reaction.ReactionEmoji;
1413
import discord4j.core.spec.MessageCreateFields;
1514
import discord4j.core.spec.MessageCreateMono;
1615
import discord4j.discordjson.json.EmojiData;
16+
import discord4j.rest.route.Routes;
1717
import discord4j.rest.util.AllowedMentions;
1818
import org.jetbrains.annotations.NotNull;
1919
import reactor.core.publisher.Mono;
@@ -141,6 +141,21 @@ private static Mono<Object> executeMessage(Message message, String msgContent) {
141141
return amongVal;
142142
}
143143

144+
public static Mono<Object> threadCreate(ThreadChannelCreateEvent event) {
145+
ThreadChannel thread = event.getChannel();
146+
Snowflake parentId = thread.getParentId().orElse(null);
147+
if (parentId != null && parentId.equals(Snowflake.of(FloppaTomlConfig.autoTagChannel))) {
148+
// i love APIs
149+
CoffeeFloppa.client.getChannelService();
150+
return Routes.CHANNEL_MODIFY_PARTIAL.newRequest(thread.getId().asLong())
151+
.body(new AddTagEditRequest(FloppaTomlConfig.autoTagId))
152+
.optionalHeader("X-Audit-Log-Reason", "Floppa Automated")
153+
.exchange(CoffeeFloppa.client.getRestResources().getRouter())
154+
.bodyToMono(Object.class);
155+
}
156+
return Mono.empty();
157+
}
158+
144159
public static boolean sendMessage(Message ref, final String msg, boolean withReference) {
145160
try {
146161
Mono<Message> messageMono = Mono.empty();
@@ -257,4 +272,13 @@ public static void clearSearchCommands() {
257272
public static String getCurrentMessageURL() {
258273
return currentMessageURL;
259274
}
275+
276+
private static class AddTagEditRequest {
277+
@JsonProperty("applied_tags")
278+
private final List<Long> appliedTags;
279+
280+
protected AddTagEditRequest(Long... tags) {
281+
this.appliedTags = List.of(tags);
282+
}
283+
}
260284
}

src/main/java/xyz/htmlcsjs/coffeeFloppa/toml/FloppaTomlConfig.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ public class FloppaTomlConfig {
4242

4343
@TomlConfig.ConfigElement(location = "repo_aliases")
4444
public static String repoAliases = "";
45+
4546
@TomlConfig.ConfigElement(location = "channel_aliases")
4647
public static String channelAliases = "";
48+
49+
@TomlConfig.ConfigElement(location = "auto_tag_id")
50+
public static long autoTagId = 0;
51+
52+
@TomlConfig.ConfigElement(location = "auto_tag_channel")
53+
public static long autoTagChannel = 0;
4754
}

0 commit comments

Comments
 (0)