blob: 63ff6ca764fb7159706d4612f04cf13d08efae9b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
package club.eviltransgenders.bookmark;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.events.session.ReadyEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.interactions.commands.build.Commands;
import net.dv8tion.jda.api.interactions.commands.Command;
import net.dv8tion.jda.api.interactions.commands.Command.Type;
import net.dv8tion.jda.api.interactions.IntegrationType;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.components.actionrow.ActionRow;
import net.dv8tion.jda.api.components.buttons.Button;
import net.dv8tion.jda.api.requests.GatewayIntent;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class BookmarksBot extends ListenerAdapter {
private static final Logger LOGGER = LoggerFactory.getLogger(BookmarksBot.class);
private final boolean shouldReuploadCommand;
private BookmarksBot(boolean shouldReuploadCommand) {
this.shouldReuploadCommand = shouldReuploadCommand;
}
@Override
public void onReady(ReadyEvent event) {
// Register commands
event.getJDA().retrieveCommands().queue(list -> {
for (Command cmd : list) {
if (cmd.getName().equals("Bookmark Message")) {
LOGGER.info("bookmark message already registered");
return;
}
}
event.getJDA()
.updateCommands()
.addCommands(Commands.context(Type.MESSAGE, "Bookmark Message")
.setIntegrationTypes(IntegrationType.USER_INSTALL))
.queue(blah -> LOGGER.info("Registered context menu command!"));
});
}
@Override
public void onMessageContextInteraction(MessageContextInteractionEvent event) {
if (event.getName().equals("Bookmark Message")) {
event.getUser().openPrivateChannel().queue(channel -> {
Message target = event.getTarget();
channel.sendMessage(new MessageCreateBuilder().setContent(target.getJumpUrl())
.setEmbeds(new EmbedBuilder()
.setAuthor(target.getAuthor().getName(), null, target.getAuthor().getAvatarUrl())
.setDescription(target.getContentRaw())
.build()
)
.setComponents(ActionRow.of(Button.danger("remove", "Remove")))
.build()).queue();
});
event.reply("Message bookmarked!").setEphemeral(true).queue();
}
}
@Override
public void onButtonInteraction(ButtonInteractionEvent event) {
if (event.getComponentId().equals("remove")) {
event.getMessage().delete().queue();
event.reply("Bookmark deleted.").setEphemeral(true).queue();
}
}
public static void main(String[] args) throws InterruptedException {
LOGGER.info("Starting bookmarks bot...");
String token = System.getenv("DISCORD_TOKEN");
if (token == null) {
LOGGER.error("Token not provided in environment (set DISCORD_TOKEN)");
return;
}
JDABuilder.createLight(token, GatewayIntent.MESSAGE_CONTENT)
.addEventListeners(new BookmarksBot(args.length != 0 ? args[0].equals("update") : false))
.build()
.awaitShutdown();
}
}
|