Skip to content

Commit

Permalink
Add autotagging for forum channels
Browse files Browse the repository at this point in the history
  • Loading branch information
htmlcsjs committed May 3, 2024
1 parent 3f72d2a commit 606c398
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 4 deletions.
5 changes: 5 additions & 0 deletions src/main/java/xyz/htmlcsjs/coffeeFloppa/CoffeeFloppa.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import discord4j.core.event.domain.interaction.ChatInputInteractionEvent;
import discord4j.core.event.domain.lifecycle.ReadyEvent;
import discord4j.core.event.domain.message.*;
import discord4j.core.event.domain.thread.ThreadChannelCreateEvent;
import discord4j.core.object.entity.User;
import discord4j.core.spec.EmbedCreateSpec;
import discord4j.discordjson.json.ApplicationCommandRequest;
Expand Down Expand Up @@ -81,6 +82,9 @@ public void run() throws IOException {
Mono<Void> handleReactionAddition = gateway.on(ReactionAddEvent.class, ReactionHandler::addition).then();
Mono<Void> handleReactionDeletion = gateway.on(ReactionRemoveEvent.class, ReactionHandler::deletion).then();

// thread handling
Mono<Void> handleThreadCreation = gateway.on(ThreadChannelCreateEvent.class, MessageHandler::threadCreate).then();

// fuck slash commands
Long appid = client.getApplicationId().block();
if (appid != null) {
Expand Down Expand Up @@ -108,6 +112,7 @@ public void run() throws IOException {
.and(handleReactionDeletion)
.and(handleCommandEditing)
.and(handleCommandDeletion)
.and(handleThreadCreation)
.and(handleShittyCommands)
.doOnError(CoffeeFloppa::handleException);
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
package xyz.htmlcsjs.coffeeFloppa.handlers;

import com.fasterxml.jackson.annotation.JsonProperty;
import discord4j.common.util.Snowflake;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.event.domain.message.MessageDeleteEvent;
import discord4j.core.event.domain.message.MessageUpdateEvent;
import discord4j.core.event.domain.thread.ThreadChannelCreateEvent;
import discord4j.core.object.entity.Message;
import discord4j.core.object.entity.User;
import discord4j.core.object.entity.channel.Channel;
import discord4j.core.object.entity.channel.GuildChannel;
import discord4j.core.object.entity.channel.MessageChannel;
import discord4j.core.object.entity.channel.PrivateChannel;
import discord4j.core.object.entity.channel.*;
import discord4j.core.object.reaction.ReactionEmoji;
import discord4j.core.spec.MessageCreateFields;
import discord4j.core.spec.MessageCreateMono;
import discord4j.discordjson.json.EmojiData;
import discord4j.rest.route.Routes;
import discord4j.rest.util.AllowedMentions;
import org.jetbrains.annotations.NotNull;
import reactor.core.publisher.Mono;
Expand Down Expand Up @@ -141,6 +141,21 @@ private static Mono<Object> executeMessage(Message message, String msgContent) {
return amongVal;
}

public static Mono<Object> threadCreate(ThreadChannelCreateEvent event) {
ThreadChannel thread = event.getChannel();
Snowflake parentId = thread.getParentId().orElse(null);
if (parentId != null && parentId.equals(Snowflake.of(FloppaTomlConfig.autoTagChannel))) {
// i love APIs
CoffeeFloppa.client.getChannelService();
return Routes.CHANNEL_MODIFY_PARTIAL.newRequest(thread.getId().asLong())
.body(new AddTagEditRequest(FloppaTomlConfig.autoTagId))
.optionalHeader("X-Audit-Log-Reason", "Floppa Automated")
.exchange(CoffeeFloppa.client.getRestResources().getRouter())
.bodyToMono(Object.class);
}
return Mono.empty();
}

public static boolean sendMessage(Message ref, final String msg, boolean withReference) {
try {
Mono<Message> messageMono = Mono.empty();
Expand Down Expand Up @@ -257,4 +272,13 @@ public static void clearSearchCommands() {
public static String getCurrentMessageURL() {
return currentMessageURL;
}

private static class AddTagEditRequest {
@JsonProperty("applied_tags")
private final List<Long> appliedTags;

protected AddTagEditRequest(Long... tags) {
this.appliedTags = List.of(tags);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ public class FloppaTomlConfig {

@TomlConfig.ConfigElement(location = "repo_aliases")
public static String repoAliases = "";

@TomlConfig.ConfigElement(location = "channel_aliases")
public static String channelAliases = "";

@TomlConfig.ConfigElement(location = "auto_tag_id")
public static long autoTagId = 0;

@TomlConfig.ConfigElement(location = "auto_tag_channel")
public static long autoTagChannel = 0;
}

0 comments on commit 606c398

Please sign in to comment.