Skip to content

Commit f59c210

Browse files
committed
Add config option for file preview channels
1 parent f2c624d commit f59c210

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

modules/file-preview/src/main/java/net/neoforged/camelot/module/filepreview/FilePreviewModule.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package net.neoforged.camelot.module.filepreview;
22

33
import net.dv8tion.jda.api.JDABuilder;
4+
import net.dv8tion.jda.api.entities.Guild;
45
import net.dv8tion.jda.api.entities.Message;
56
import net.dv8tion.jda.api.entities.emoji.Emoji;
67
import net.dv8tion.jda.api.entities.messages.MessageSnapshot;
78
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
89
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
910
import net.neoforged.camelot.ModuleProvider;
1011
import net.neoforged.camelot.ap.RegisterCamelotModule;
12+
import net.neoforged.camelot.api.config.ConfigOption;
13+
import net.neoforged.camelot.api.config.type.ChannelFilter;
14+
import net.neoforged.camelot.api.config.type.Options;
1115
import net.neoforged.camelot.config.module.FilePreview;
1216
import net.neoforged.camelot.module.api.CamelotModule;
1317
import net.neoforged.camelot.util.Emojis;
@@ -25,14 +29,32 @@
2529

2630
@RegisterCamelotModule
2731
public class FilePreviewModule extends CamelotModule.Base<FilePreview> {
28-
public FilePreviewModule(ModuleProvider.Context context) {
29-
super(context, FilePreview.class);
30-
}
31-
3232
private static final Emoji EMOJI = Emojis.MANAGER.getLazyEmoji("gist");
3333
private static final Pattern CODEBLOCK_PATTERN = Pattern.compile("`{3}(?<lang>\\w*)\\n(?<content>[\\s\\S]*?)\\n`{3}", Pattern.MULTILINE);
3434
private static final Random RANDOM = new Random();
3535

36+
private final ConfigOption<Guild, Boolean> enabled;
37+
private final ConfigOption<Guild, ChannelFilter> allowedChannels;
38+
39+
public FilePreviewModule(ModuleProvider.Context context) {
40+
super(context, FilePreview.class);
41+
42+
var registrar = context.guildConfigs().groupDisplayName("File Preview");
43+
enabled = registrar
44+
.option("enabled", Options.bool())
45+
.displayName("Enabled")
46+
.description("Whether file previews are enabled in this server.")
47+
.defaultValue(true)
48+
.register();
49+
50+
allowedChannels = registrar
51+
.option("allowed_channels", Options.channelFilter())
52+
.displayName("Allowed channels")
53+
.description("Channels in which gists may be created from attachments.")
54+
.dependsOn(enabled, true)
55+
.register();
56+
}
57+
3658
@Override
3759
public String id() {
3860
return "file-preview";
@@ -46,6 +68,8 @@ public boolean shouldLoad() {
4668
@Override
4769
public void registerListeners(JDABuilder builder) {
4870
builder.addEventListeners(Utils.listenerFor(MessageReceivedEvent.class, event -> {
71+
if (event.isFromGuild() && (!enabled.get(event.getGuild()) || !allowedChannels.get(event.getGuild()).test(event.getChannel()))) return;
72+
4973
if (messageMatches(event.getMessage())) {
5074
event.getMessage().addReaction(EMOJI).queue();
5175
}

0 commit comments

Comments
 (0)