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.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.interactions.InteractionContextType; import net.dv8tion.jda.api.JDABuilder; 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); 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()) .build() .awaitShutdown(); } @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() ).build()).queue(); }); event.reply("Message bookmarked!").setEphemeral(true).queue(); } } }