Add shutdown interrupt signal listener
This way, we can nicely close the API connection and perform general cleanup.
This commit is contained in:
parent
b43b882cab
commit
8b9ce25684
@ -5,8 +5,8 @@ import net.dv8tion.jda.api.JDABuilder;
|
|||||||
import net.dv8tion.jda.api.OnlineStatus;
|
import net.dv8tion.jda.api.OnlineStatus;
|
||||||
import net.dv8tion.jda.api.entities.Activity;
|
import net.dv8tion.jda.api.entities.Activity;
|
||||||
import net.dv8tion.jda.api.requests.GatewayIntent;
|
import net.dv8tion.jda.api.requests.GatewayIntent;
|
||||||
|
import sun.misc.Signal;
|
||||||
import wtf.beatrice.hidekobot.listeners.MessageListener;
|
import wtf.beatrice.hidekobot.listeners.MessageListener;
|
||||||
import wtf.beatrice.hidekobot.listeners.MessageLogger;
|
|
||||||
import wtf.beatrice.hidekobot.listeners.SlashCommandListener;
|
import wtf.beatrice.hidekobot.listeners.SlashCommandListener;
|
||||||
import wtf.beatrice.hidekobot.utils.Logger;
|
import wtf.beatrice.hidekobot.utils.Logger;
|
||||||
import wtf.beatrice.hidekobot.utils.SlashCommandsUtil;
|
import wtf.beatrice.hidekobot.utils.SlashCommandsUtil;
|
||||||
@ -15,6 +15,8 @@ import javax.security.auth.login.LoginException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class HidekoBot
|
public class HidekoBot
|
||||||
{
|
{
|
||||||
@ -70,8 +72,8 @@ public class HidekoBot
|
|||||||
jda.addEventListener(new MessageListener());
|
jda.addEventListener(new MessageListener());
|
||||||
jda.addEventListener(new SlashCommandListener());
|
jda.addEventListener(new SlashCommandListener());
|
||||||
|
|
||||||
// update slash commands
|
// update slash commands (delayed)
|
||||||
SlashCommandsUtil.updateSlashCommands(jda);
|
Executors.newSingleThreadScheduledExecutor().schedule(SlashCommandsUtil::updateSlashCommands, 5, TimeUnit.SECONDS);
|
||||||
|
|
||||||
// set the bot's status
|
// set the bot's status
|
||||||
jda.getPresence().setStatus(OnlineStatus.ONLINE);
|
jda.getPresence().setStatus(OnlineStatus.ONLINE);
|
||||||
@ -88,6 +90,9 @@ public class HidekoBot
|
|||||||
// print the bot logo.
|
// print the bot logo.
|
||||||
logger.log("\n\n" + logger.getLogo() + "\nv" + version + " - bot is ready!\n", 2);
|
logger.log("\n\n" + logger.getLogo() + "\nv" + version + " - bot is ready!\n", 2);
|
||||||
|
|
||||||
|
// register shutdown interrupt signal listener for proper shutdown.
|
||||||
|
Signal.handle(new Signal("INT"), signal -> shutdown());
|
||||||
|
|
||||||
// log the invite-link to console so noob users can just click on it.
|
// log the invite-link to console so noob users can just click on it.
|
||||||
logger.log("Bot User ID: " + botUserId, 3);
|
logger.log("Bot User ID: " + botUserId, 3);
|
||||||
logger.log("Invite Link: " + standardInviteLink, 4);
|
logger.log("Invite Link: " + standardInviteLink, 4);
|
||||||
@ -98,4 +103,11 @@ public class HidekoBot
|
|||||||
return jda;
|
return jda;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void shutdown()
|
||||||
|
{
|
||||||
|
logger.log("WARNING! Shutting down!");
|
||||||
|
jda.shutdown();
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -111,12 +111,7 @@ public class MessageListener extends ListenerAdapter
|
|||||||
|
|
||||||
channel.sendMessage("Going to sleep! Cya :sparkles:").queue();
|
channel.sendMessage("Going to sleep! Cya :sparkles:").queue();
|
||||||
|
|
||||||
Executors.newSingleThreadScheduledExecutor().schedule(() ->
|
Executors.newSingleThreadScheduledExecutor().schedule(HidekoBot::shutdown, 3, TimeUnit.SECONDS);
|
||||||
{
|
|
||||||
logger.log("WARNING! Shutting down!");
|
|
||||||
HidekoBot.getAPI().shutdown();
|
|
||||||
System.exit(0);
|
|
||||||
}, 5, TimeUnit.SECONDS);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user