Initial Discordbot Integration (#37)

This commit is contained in:
Josh Shippam
2019-10-08 19:19:34 +01:00
committed by Daniel Ginovker
parent 42f545e0bc
commit 7b9e2f7163
13 changed files with 102 additions and 0 deletions
+7
View File
@@ -8,6 +8,7 @@ import org.apache.mina.common.IoAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;
import redone.discord.JavaCord;
import redone.event.CycleEventHandler;
import redone.event.TaskScheduler;
import redone.game.content.minigames.FightCaves;
@@ -111,6 +112,12 @@ public class Server {
*/
System.out.println("Launching " + Constants.SERVER_NAME + "...");
/**
* Start Discord Bot
*/
JavaCord.init();
/**
* Accepting Connections
*/
@@ -0,0 +1,95 @@
package redone.discord;
import org.javacord.api.DiscordApi;
import org.javacord.api.DiscordApiBuilder;
import org.javacord.api.entity.channel.TextChannel;
import org.javacord.api.entity.message.MessageBuilder;
import org.javacord.api.util.logging.ExceptionLogger;
import redone.game.players.PlayerHandler;
import java.io.*;
import java.util.stream.Collectors;
import org.json.JSONObject;
/**
* @author Patrity || https://www.rune-server.ee/members/patrity/
*/
public class JavaCord {
private static String serverName = "2006-ReBotted";
private static String token;
private static DiscordApi api = null;
public static void init() throws IOException {
loadSettings();
if (!token.equals("")) {
new DiscordApiBuilder().setToken(token).login().thenAccept(api -> {
JavaCord.api = api;
//System.out.println("You can invite the bot by using the following url: " + api.createBotInvite());
api.addMessageCreateListener(event -> {
if (event.getMessageContent().equalsIgnoreCase("::players")) {
if (PlayerHandler.getPlayerCount() > 1) {
event.getChannel().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online.");
} else {
event.getChannel().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online.");
}
}
if (event.getMessageContent().equalsIgnoreCase("::online")) {
event.getChannel().sendMessage(":tada: " + serverName + " is Online! :tada:");
}
if (event.getMessageContent().startsWith("::movehome")) {
if (event.getMessageAuthor().isServerAdmin()) {
System.out.println("perms");
} else {
event.getChannel().sendMessage("You do not have permission to preform this command");
}
}
});
})
// Log any exceptions that happened
.exceptionally(ExceptionLogger.get());
} else {
System.out.println("Discord Token Not Set So Bot Not Loaded");
}
}
public static void sendMessage(String channel, String msg) {
try {
new MessageBuilder()
.append(msg)
.send((TextChannel) api.getTextChannelsByNameIgnoreCase(channel).toArray()[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void initialize() {
JSONObject main = new JSONObject();
main.put("token", "");
try {
BufferedWriter br = new BufferedWriter(new FileWriter("data/discord.json"));
br.write(main.toString());
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void loadSettings() throws IOException {
if (!new File("data/discord.json").exists()) {
initialize();
System.out.println("Please open \"data/discord.json\" file and enter your discord token bot there!");
} else {
BufferedReader br = new BufferedReader(new FileReader("data/discord.json"));
String out = br.lines().collect(Collectors.joining("\n"));
JSONObject obj = new JSONObject(out);
token = obj.getString("token");
}
}
}