139 lines
4.8 KiB
Java
139 lines
4.8 KiB
Java
package me.bobert.netneutrality;
|
|
|
|
/*
|
|
* Copyright (c) anthorob
|
|
*
|
|
* https://discord.gg/qUa6zNFZsd
|
|
*/
|
|
|
|
import club.minnced.discord.jdave.interop.JDaveSessionFactory;
|
|
import io.sentry.Sentry;
|
|
import me.bobert.netneutrality.core.LogHandler;
|
|
import me.bobert.netneutrality.core.command.CommandManager;
|
|
import me.bobert.netneutrality.core.db.DatabaseMigration;
|
|
import me.bobert.netneutrality.core.db.SessionManager;
|
|
import me.bobert.netneutrality.core.tasks.TaskManager;
|
|
import me.bobert.netneutrality.core.thread.ScheduledTaskManager;
|
|
import me.bobert.netneutrality.core.thread.ThreadManager;
|
|
import me.bobert.netneutrality.hooks.EventsHandler;
|
|
import me.bobert.netneutrality.http.server.WebApi;
|
|
import me.bobert.netneutrality.music.MusicManager;
|
|
import me.bobert.netneutrality.utils.Settings;
|
|
import net.dv8tion.jda.api.JDA;
|
|
import net.dv8tion.jda.api.JDABuilder;
|
|
import net.dv8tion.jda.api.audio.AudioModuleConfig;
|
|
import net.dv8tion.jda.api.entities.Activity;
|
|
import net.dv8tion.jda.api.exceptions.InvalidTokenException;
|
|
import net.dv8tion.jda.api.requests.GatewayIntent;
|
|
import org.apache.logging.log4j.Level;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
import org.apache.logging.log4j.core.config.Configurator;
|
|
|
|
public class NetNeutrality {
|
|
private static final Logger logger = LogManager.getLogger(NetNeutrality.class);
|
|
public static final String VERSION = Settings.getVersion();
|
|
private static NetNeutrality instance;
|
|
private static JDA jda;
|
|
|
|
static void main() {
|
|
System.out.println("Starting NetNeutrality v" + VERSION);
|
|
|
|
String env = Settings.getInstance().get("NETNEUTRALITY_BOT_ENV", "dev");
|
|
String sentryDsn = Settings.getInstance().get("NETNEUTRALITY_SENTRY_DSN");
|
|
if (sentryDsn != null) {
|
|
logger.info("Found Sentry DSN in config, setting up the SDK..");
|
|
|
|
Sentry.init(options -> {
|
|
options.setDsn(sentryDsn);
|
|
options.setEnvironment(env);
|
|
options.setTracesSampleRate(1.0);
|
|
options.setDebug(false);
|
|
options.setRelease(VERSION);
|
|
});
|
|
}
|
|
|
|
if ("dev".equals(env)) {
|
|
Configurator.setLevel("net.dv8tion.jda", Level.DEBUG);
|
|
Configurator.setLevel("dev.lavalink.youtube", Level.DEBUG);
|
|
Configurator.setLevel("com.sedmelluq.discord", Level.DEBUG);
|
|
}
|
|
|
|
instance = new NetNeutrality();
|
|
}
|
|
|
|
public NetNeutrality() {
|
|
startup();
|
|
}
|
|
|
|
private void startup() {
|
|
String token = Settings.getInstance().get("NETNEUTRALITY_BOT_TOKEN");
|
|
if (token == null) {
|
|
throw new RuntimeException("No bot token provided, exiting.");
|
|
}
|
|
|
|
SessionManager.getSessionFactory();
|
|
DatabaseMigration.migrate();
|
|
CommandManager.init();
|
|
MusicManager.initPlayerManager();
|
|
TaskManager.getInstance().init();
|
|
initJDA();
|
|
CommandManager.registerSlashCommands(jda);
|
|
jda.addEventListener(new EventsHandler());
|
|
new WebApi(Integer.parseInt(Settings.getInstance().get("NETNEUTRALITY_API_PORT", "9000")));
|
|
jda.getPresence().setActivity(Activity.watching("you"));
|
|
|
|
Runtime.getRuntime().addShutdownHook(new Thread(this::shutdown));
|
|
}
|
|
|
|
public static NetNeutrality getInstance() {
|
|
return instance;
|
|
}
|
|
|
|
public void initJDA() {
|
|
String token = Settings.getInstance().get("NETNEUTRALITY_BOT_TOKEN");
|
|
if (token == null) {
|
|
SessionManager.shutdown();
|
|
throw new RuntimeException("No bot token provided, exiting.");
|
|
}
|
|
|
|
try {
|
|
jda = JDABuilder
|
|
.createDefault(token)
|
|
.enableIntents(
|
|
GatewayIntent.GUILD_MEMBERS,
|
|
GatewayIntent.GUILD_MESSAGE_REACTIONS,
|
|
GatewayIntent.GUILD_VOICE_STATES,
|
|
GatewayIntent.MESSAGE_CONTENT)
|
|
.setAudioModuleConfig(
|
|
new AudioModuleConfig().withDaveSessionFactory(new JDaveSessionFactory()))
|
|
.setActivity(Activity.watching("me load..."))
|
|
.build();
|
|
jda.awaitReady();
|
|
} catch (InvalidTokenException | IllegalArgumentException | InterruptedException e) {
|
|
LogHandler.log(e);
|
|
System.exit(1);
|
|
}
|
|
}
|
|
|
|
public void shutdown() {
|
|
System.out.println("[Net Neutrality] Shutting down...");
|
|
ScheduledTaskManager.cancelAll();
|
|
MusicManager.disconnectPlayers();
|
|
ThreadManager.shutdownExecutor();
|
|
disconnect();
|
|
SessionManager.shutdown();
|
|
System.out.println("[Net Neutrality] Shutdown complete");
|
|
}
|
|
|
|
public JDA getJDA() {
|
|
return jda;
|
|
}
|
|
|
|
private void disconnect() {
|
|
if (jda != null) {
|
|
jda.shutdown();
|
|
}
|
|
}
|
|
}
|