ifndef DifferentJDA lib 1400215 // discord without opus/JNA //static LS _stickyLibs_discordBot = ll(#1400215); // can cause loader constraint violations endifndef import net.dv8tion.jda.core.*; import net.dv8tion.jda.core.entities.*; import net.dv8tion.jda.core.entities.Member; import net.dv8tion.jda.core.hooks.*; import net.dv8tion.jda.core.events.*; import net.dv8tion.jda.core.events.message.*; import net.dv8tion.jda.core.events.message.react.*; static JDA discordBot(final VF1 onMessage) { ret discordBot(new ListenerAdapter { @Override public void onMessageReceived(MessageReceivedEvent e) { if (e.getAuthor().isBot()) ret with print(" Msg from bot, skipping"); pcallF(onMessage, e); } }); } static JDA discordBot(ListenerAdapter listener, O... _) ctex { print("Making JDABuilder"); JDABuilder builder = new(AccountType.BOT); print("Have JDABuilder"); S token = stringPar token(_); if (empty(token)) { File tokenFile = javaxSecretDir("discord-bot-token"); token = assertNempty("Need: " + tokenFile, trim(loadTextFile(tokenFile))); } builder.setToken(token); builder.addEventListener(listener); print("Building JDA with token " + shorten(10, token)); JDA jda = builder.build(); print("Got JDA: " + jda); jda.addEventListener(new ListenerAdapter { public void onStatusChange(StatusChangeEvent event) { print("JDA status: " + event.getNewStatus()); } }); //jda.awaitSatus(JDA.Status.CONNECTED); jda.awaitReady(); print("Started Discord bot (token: " + shorten(token, 7) + ")"); ret jda; }