71 lines
2.5 KiB
Java
71 lines
2.5 KiB
Java
package me.youhavetrouble.noted;
|
|
|
|
import net.dv8tion.jda.api.JDA;
|
|
import net.dv8tion.jda.api.JDABuilder;
|
|
import net.dv8tion.jda.api.entities.Activity;
|
|
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
|
import net.dv8tion.jda.api.interactions.commands.build.Commands;
|
|
import net.dv8tion.jda.api.interactions.commands.build.OptionData;
|
|
import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction;
|
|
|
|
import java.io.*;
|
|
import java.util.Collections;
|
|
import java.util.Properties;
|
|
import java.util.concurrent.Executors;
|
|
|
|
public class Main {
|
|
|
|
private static final Properties properties = new Properties();
|
|
public static JDA jda;
|
|
|
|
public static void main(String[] args) throws InterruptedException {
|
|
loadProperties();
|
|
|
|
|
|
|
|
jda = JDABuilder.createLight(properties.getProperty("DISCORD_TOKEN"), Collections.emptyList())
|
|
.setCallbackPool(Executors.newVirtualThreadPerTaskExecutor())
|
|
.setActivity(Activity.customStatus("Notekeeping..."))
|
|
.addEventListeners(new SlashCommandListener())
|
|
.build();
|
|
|
|
jda.awaitReady();
|
|
|
|
CommandListUpdateAction commands = jda.updateCommands();
|
|
commands = commands.addCommands(
|
|
Commands.slash("note", "Get a note")
|
|
.addOptions(
|
|
new OptionData(OptionType.STRING, "note-id", "The ID of the note").setRequired(true),
|
|
new OptionData(OptionType.BOOLEAN, "ephermeal", "Whether the note should be ephermal").setRequired(false)
|
|
)
|
|
);
|
|
commands.queue();
|
|
}
|
|
|
|
private static void loadProperties() {
|
|
saveDefaultProperties();
|
|
try (InputStream inputStream = new FileInputStream("noted.properties")) {
|
|
properties.load(inputStream);
|
|
} catch (IOException e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
|
|
private static void saveDefaultProperties() {
|
|
File file = new File("noted.properties");
|
|
if (file.exists()) {
|
|
return;
|
|
}
|
|
try (InputStream resource = Main.class.getClassLoader().getResourceAsStream("noted.properites");
|
|
OutputStream outputStream = new FileOutputStream(file)) {
|
|
if (resource == null) {
|
|
System.err.println("Default noted.properties missing.");
|
|
return;
|
|
}
|
|
outputStream.write(resource.readAllBytes());
|
|
} catch (IOException e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
|
|
} |