From 7c00dba8733d538102210e31ddf9bb17ffbe7965 Mon Sep 17 00:00:00 2001 From: Gnarwhal Date: Thu, 13 Feb 2020 01:49:27 -0500 Subject: [PATCH] Complete bot question mark? --- .gitignore | 10 + build.gradle | 18 + icon.png | Bin 0 -> 76703 bytes settings.gradle | 2 + .../com/gnarly/ld/LDTimerEventListener.java | 322 ++++++++++++++++++ src/main/java/com/gnarly/ld/Main.java | 16 + src/main/java/com/gnarly/ld/ServerInfo.java | 21 ++ 7 files changed, 389 insertions(+) create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 icon.png create mode 100644 settings.gradle create mode 100644 src/main/java/com/gnarly/ld/LDTimerEventListener.java create mode 100644 src/main/java/com/gnarly/ld/Main.java create mode 100644 src/main/java/com/gnarly/ld/ServerInfo.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..37636d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.gradle/ +.idea/ +build/ +gradle/ +gradlew +gradlew.bat +icon.ai +ServerData.bin +TimeData.txt + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..ea8b14d --- /dev/null +++ b/build.gradle @@ -0,0 +1,18 @@ +plugins { + id 'java' + id 'application' +} + +group = 'com.gnarly' +version = '1.0.0' +mainClassName = 'com.gnarly.ld.Main' + +sourceCompatibility = 1.12 + +repositories { + jcenter() +} + +dependencies { + compile group: 'net.dv8tion', name: 'JDA', version: '3.8.3_464' +} diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5715ee1622377b2aab8fa74432d019d47eec9f15 GIT binary patch literal 76703 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

;D_ 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 Dx{^y$ literal 0 HcmV?d00001 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..ce14a6d --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'Ludum Dare Timer' + diff --git a/src/main/java/com/gnarly/ld/LDTimerEventListener.java b/src/main/java/com/gnarly/ld/LDTimerEventListener.java new file mode 100644 index 0000000..3f6505d --- /dev/null +++ b/src/main/java/com/gnarly/ld/LDTimerEventListener.java @@ -0,0 +1,322 @@ +package com.gnarly.ld; + +import net.dv8tion.jda.core.Permission; +import net.dv8tion.jda.core.entities.Guild; +import net.dv8tion.jda.core.entities.Message; +import net.dv8tion.jda.core.events.message.MessageReceivedEvent; +import net.dv8tion.jda.core.events.message.MessageUpdateEvent; +import net.dv8tion.jda.core.hooks.ListenerAdapter; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; +import java.util.regex.Pattern; + +public class LDTimerEventListener extends ListenerAdapter { + + private static final long SECOND = 1000; + private static final long MINUTE = 60 * SECOND; + private static final long HOUR = 60 * MINUTE; + private static final long DAY = 24 * HOUR; + + private static final long REFRESH_INTERVAL = 1 * DAY + 0 * HOUR + 0 * MINUTE + 0 * SECOND; + + private Map servers; + + private long nextRefresh; + + private long start; + private long compoEnd; + private long compoSubmissionHour; + private long jamEnd; + private long jamSubmissionHour; + private long rate; + private long results; + + public LDTimerEventListener() { + servers = new HashMap<>(); + loadServerInfo(); + + var file = (FileInputStream) null; + try { + file = new FileInputStream("TimeData.txt"); + } catch (IOException e) {} + + if (file != null) { + var scanner = new Scanner(file); + try { + nextRefresh = scanner.nextLong(); scanner.nextLine(); + start = scanner.nextLong(); scanner.nextLine(); + compoEnd = scanner.nextLong(); scanner.nextLine(); + compoSubmissionHour = scanner.nextLong(); scanner.nextLine(); + jamEnd = scanner.nextLong(); scanner.nextLine(); + jamSubmissionHour = scanner.nextLong(); scanner.nextLine(); + rate = scanner.nextLong(); scanner.nextLine(); + results = scanner.nextLong(); scanner.nextLine(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + scanner.close(); + } + } else { + nextRefresh = 0; + start = 0; + compoEnd = 0; + compoSubmissionHour = 0; + jamEnd = 0; + jamSubmissionHour = 0; + rate = 0; + results = 0; + } + refresh(); + } + + @Override + public void onMessageReceived(MessageReceivedEvent event) { + handleMessage(event.getGuild().getId(), event.getMessage()); + } + + @Override + public void onMessageUpdate(MessageUpdateEvent event) { + handleMessage(event.getGuild().getId(), event.getMessage()); + } + + private void handleMessage(String id, Message message) { + if (message.getAuthor().getId().equals("677349303672373271")) { + return; + } + + if (!servers.containsKey(id)) { + servers.put(id, new ServerInfo()); + } + var info = servers.get(id); + + var server = message.getGuild(); + var channel = message.getChannel(); + + var admin = false; + var roles = message.getAuthor().getJDA().getRoles(); + for (var i = 0; i < roles.size() && !admin; ++i) { + if (roles.get(i).hasPermission(Permission.ADMINISTRATOR)) { + admin = true; + } + } + if (admin) { + if (message.getContentDisplay().equals(info.prefix + "blacklist")) { + info.blacklist.add(channel.getId()); + channel.sendMessage("Channel has been blacklisted").queue(); + } else if (message.getContentDisplay().equals(info.prefix + "whitelist")) { + info.blacklist.remove(channel.getId()); + channel.sendMessage("Channel has been whitelisted").queue(); + } else if (message.getContentDisplay().equals(info.prefix + "blacklist all")) { + var channels = server.getChannels(); + for (var c : channels) { + info.blacklist.add(c.getId()); + } + channel.sendMessage("Blacklisted all channels").queue(); + } else if (message.getContentDisplay().equals(info.prefix + "whitelist all")) { + info.blacklist.clear(); + channel.sendMessage("Whitelisted all channels").queue(); + } + saveServerInfo(); + + if (info.blacklist.contains(channel.getId())) { + return; + } + + if (message.getContentDisplay().startsWith(info.prefix + "prefix ")) { + info.prefix = message.getContentDisplay().substring((info.prefix + "prefix ").length()); + channel.sendMessage("Updated prefix to: " + info.prefix).queue(); + } + } + + if (info.blacklist.contains(channel.getId())) { + return; + } + + if (message.getContentDisplay().startsWith(info.prefix + "timeleft")) { + refresh(); + var timeleftMessage = new StringBuilder("**Time Left**\n"); + var current = System.currentTimeMillis(); + if (current < start) { + timeleftMessage.append("Ludum Dare starts in ").append(toDurationString(start - current)); + } else if (current < jamSubmissionHour) { + if (current < compoEnd) { + timeleftMessage.append("Compo ends in ").append(toDurationString(compoEnd - current)).append('\n'); + } else if (current < compoSubmissionHour) { + timeleftMessage.append("Compo submission hour ends in ").append(toDurationString(compoSubmissionHour - current)).append('\n'); + } else { + timeleftMessage.append("Compo rating ends in ").append(toDurationString(rate - current)).append('\n'); + } + if (current < jamEnd) { + timeleftMessage.append("Jam ends in ").append(toDurationString(jamEnd - current)); + } else { + timeleftMessage.append("Jam submission hour ends in ").append(toDurationString(jamSubmissionHour - current)); + } + } else if (current < rate) { + timeleftMessage.append("Rating ends in ").append(toDurationString(rate - current)); + } else if (current < results) { + timeleftMessage.append("Results are available in ").append(toDurationString(results - current)); + } else { + timeleftMessage = new StringBuilder("Sorry I don't have any time data at the moment :("); + } + channel.sendMessage(timeleftMessage).queue(); + } + } + + private void saveServerInfo() { + try { + ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("ServerData.bin")); + output.writeInt(servers.size()); + for (Map.Entry entry : servers.entrySet()) { + output.writeObject(entry.getKey()); + output.writeObject(entry.getValue()); + } + output.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void loadServerInfo() { + try { + if (new File("ServerData.bin").exists()) { + ObjectInputStream input = new ObjectInputStream(new FileInputStream("ServerData.bin")); + int numObjects = input.readInt(); + servers.clear(); + for (int i = 0; i < numObjects; ++i) { + servers.put((String) input.readObject(), (ServerInfo) input.readObject()); + } + input.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + private String toDurationString(long millis) { + var days = (millis ) / DAY; + var hours = (millis % DAY ) / HOUR; + var minutes = (millis % HOUR ) / MINUTE; + var seconds = (millis % MINUTE) / SECOND; + return new StringBuilder() + .append(days ).append(" day" ).append(days == 1 ? ", " : "s, ") + .append(hours ).append(" hour" ).append(hours == 1 ? ", " : "s, ") + .append(minutes).append(" minute").append(minutes == 1 ? ", " : "s, ") + .append(seconds).append(" second").append(seconds == 1 ? "" : "s" ) + .toString(); + } + + private void refresh() { + if (nextRefresh - System.currentTimeMillis() <= 0) { + nextRefresh = System.currentTimeMillis() + REFRESH_INTERVAL; + String[] dates = getDates(); + if (dates != null) { + start = getSinceEpoch(dates[0]); + compoEnd = getSinceEpoch(dates[1]); + compoSubmissionHour = getSinceEpoch(dates[2]); + jamEnd = getSinceEpoch(dates[3]); + jamSubmissionHour = getSinceEpoch(dates[4]); + rate = getSinceEpoch(dates[5]); + results = getSinceEpoch(dates[6]); + saveTimes(); + } + } + } + + private void saveTimes() { + try { + PrintWriter writer = new PrintWriter(new FileOutputStream("TimeData.txt")); + writer.println(nextRefresh ); + writer.println(start ); + writer.println(compoEnd ); + writer.println(compoSubmissionHour); + writer.println(jamEnd ); + writer.println(jamSubmissionHour ); + writer.println(rate ); + writer.println(results ); + writer.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + + private static long getSinceEpoch(String date) { + var timeStrings = date.split(","); + var times = new int[6]; + for (var i = 0; i < times.length; ++i) { + times[i] = Integer.parseInt(timeStrings[i]); + } + return LocalDateTime.of(times[0], times[1] + 1, times[2] + times[3] / 24, times[3] % 24, times[4], times[5]).toEpochSecond(ZoneOffset.UTC) * 1000L; + } + + private static String[] getDates() { + final var JAVASCRIPT_URL_REGEX = Pattern.compile("<(/-/all\\.min\\.js\\?v=[a-zA-Z0-9\\-]+)>"); + final var DATE_UTC_REGEX = Pattern.compile("new Date\\(Date\\.UTC\\((\\d+,\\d+,\\d+,\\d+,\\d+,\\d+)\\)\\)"); + + try { + final var url = new URL("https://ldjam.com"); + var connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); + connection.setConnectTimeout(5000); + connection.setReadTimeout(5000); + connection.setInstanceFollowRedirects(true); + connection.connect(); + + var jsUrl = (URL) null; + for (var valueLists : connection.getHeaderFields().values()) { + for (var value : valueLists) { + var matcher = JAVASCRIPT_URL_REGEX.matcher(value); + if (matcher.find()) { + var group = matcher.group(1); + jsUrl = new URL("https://ldjam.com" + group); + } + } + } + connection.disconnect(); + + if (jsUrl != null) { + connection = (HttpURLConnection) jsUrl.openConnection(); + connection.setRequestMethod("GET"); + connection.setRequestProperty("Accept", "*/*"); + connection.setConnectTimeout(5000); + connection.setReadTimeout(5000); + connection.setInstanceFollowRedirects(true); + connection.connect(); + + var in = connection.getInputStream(); + var reader = new BufferedReader(new InputStreamReader(in)); + var builder = new StringBuilder(); + var line = (String) null; + while ((line = reader.readLine()) != null) { + builder.append(line).append('\n'); + } + reader.close(); + in.close(); + + var matcher = DATE_UTC_REGEX.matcher(builder); + var dates = new String[7]; + for (var i = 0; i < dates.length; ++i) { + if (matcher.find()) { + dates[i] = matcher.group(1); + } else { + return null; + } + } + return dates; + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/com/gnarly/ld/Main.java b/src/main/java/com/gnarly/ld/Main.java new file mode 100644 index 0000000..dc93e5e --- /dev/null +++ b/src/main/java/com/gnarly/ld/Main.java @@ -0,0 +1,16 @@ +package com.gnarly.ld; + +import net.dv8tion.jda.core.AccountType; +import net.dv8tion.jda.core.JDA; +import net.dv8tion.jda.core.JDABuilder; + +import javax.security.auth.login.LoginException; + +public class Main { + + public static void main(String[] args) throws LoginException { + LDTimerEventListener events = new LDTimerEventListener(); + JDA jda = new JDABuilder(AccountType.BOT).setToken(args[0]).build(); + jda.addEventListener(events); + } +} diff --git a/src/main/java/com/gnarly/ld/ServerInfo.java b/src/main/java/com/gnarly/ld/ServerInfo.java new file mode 100644 index 0000000..91fc81e --- /dev/null +++ b/src/main/java/com/gnarly/ld/ServerInfo.java @@ -0,0 +1,21 @@ +package com.gnarly.ld; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +public class ServerInfo implements Serializable { + + private static final long serialVersionUID = 1098398424L; + + private static final String DEFAULT_PREFIX = "!"; + + public String prefix; + public Set blacklist; + + public ServerInfo() { + prefix = DEFAULT_PREFIX; + blacklist = new HashSet<>(); + } +}