From 7aeff5396706ccb5378c51c032b8e72563f680fd Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sat, 31 Dec 2016 03:08:20 +0100 Subject: [PATCH] Added PR linking - in the condition --- .../listeners/AutoUpdaterListener.java | 51 ++++++++++++++++--- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java index 2c1cb77..66c23be 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java @@ -1,10 +1,16 @@ package buttondevteam.discordplugin.listeners; +import java.awt.Color; +import java.util.function.Predicate; +import java.util.function.Supplier; + import buttondevteam.discordplugin.DiscordPlugin; import buttondevteam.discordplugin.DiscordSender; import buttondevteam.lib.TBMCCoreAPI; import sx.blah.discord.api.events.IListener; import sx.blah.discord.handle.impl.events.MessageReceivedEvent; +import sx.blah.discord.handle.obj.IEmbed; +import sx.blah.discord.util.EmbedBuilder; import sx.blah.discord.util.RateLimitException; public class AutoUpdaterListener implements IListener { @@ -16,7 +22,8 @@ public class AutoUpdaterListener implements IListener { return; if (event.getMessage().getEmbedded().size() == 0) return; - final String title = event.getMessage().getEmbedded().get(0).getTitle(); + final IEmbed embed = event.getMessage().getEmbedded().get(0); + final String title = embed.getTitle(); if (!title.contains("new commit")) return; String branch = title.substring(title.indexOf(':') + 1, title.indexOf(']')); @@ -28,12 +35,40 @@ public class AutoUpdaterListener implements IListener { ? DiscordPlugin.chatchannel // : DiscordPlugin.updatechannel), branch) - && (!TBMCCoreAPI.IsTestServer() || !branch.equals("master"))) - try { - event.getMessage().addReaction(DiscordPlugin.DELIVERED_REACTION); - } catch (RateLimitException e) { // TODO: Handle - } catch (Exception e) { - TBMCCoreAPI.SendException("An error occured while reacting to plugin update!", e); - } + && ((Supplier) () -> { // Best looking code I've ever written + try { + int hi, ei, prnum; + if ((hi = embed.getDescription().indexOf('#')) > -1 + && ((ei = embed.getDescription().indexOf(' ', hi + 1)) > -1 + || (ei = embed.getDescription().indexOf(".", hi + 1)) > -1 + || (ei = embed.getDescription().length()) > -1) + && (prnum = Integer.parseInt(embed.getDescription().substring(hi + 1, ei))) > -1) + DiscordPlugin.sendMessageToChannel(DiscordPlugin.updatechannel, "", + new EmbedBuilder().withColor(Color.WHITE).withTitle("Update details") + .withUrl("https://github.com/TBMCPlugins/" + project + "/pull/" + prnum) + .build()); + else + throw new Exception("No PR found"); + } catch (Exception e) { + DiscordPlugin.sendMessageToChannel(DiscordPlugin.updatechannel, "", + new EmbedBuilder().withColor(Color.WHITE).withTitle( + "Update detauls: " + embed.getDescription() + " (" + e.getMessage() + ")") + .build()); + } + return true; + }).get() && (!TBMCCoreAPI.IsTestServer() || !branch.equals("master"))) + while (true) + try { + event.getMessage().addReaction(DiscordPlugin.DELIVERED_REACTION); + break; + } catch (RateLimitException e) { + try { + if (e.getRetryDelay() > 0) + Thread.sleep(e.getRetryDelay()); + } catch (InterruptedException ie) { + } + } catch (Exception e) { + TBMCCoreAPI.SendException("An error occured while reacting to plugin update!", e); + } } }