summaryrefslogtreecommitdiff
path: root/src/main/java/club/eviltransgenders/bookmark/BookmarksBot.java
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();
	}
}