From ace40840c3a349e0cfaa63cd5ece529f2209281c Mon Sep 17 00:00:00 2001 From: Manuel Plonski Date: Tue, 16 Jun 2020 15:14:04 +0200 Subject: [PATCH] adding discord framework --- .../java/fun/manuel/filter/CarrierFilter.java | 7 ++-- .../fun/manuel/service/CarrierService.java | 1 + .../fun/manuel/service/DiscordBotService.java | 40 ++++++++++++++++++- src/main/java/org/eddn/EddnPump.java | 27 +++++++++---- src/main/resources/application.properties | 2 +- 5 files changed, 64 insertions(+), 13 deletions(-) diff --git a/src/main/java/fun/manuel/filter/CarrierFilter.java b/src/main/java/fun/manuel/filter/CarrierFilter.java index 1c35fcb..0a7d9f5 100644 --- a/src/main/java/fun/manuel/filter/CarrierFilter.java +++ b/src/main/java/fun/manuel/filter/CarrierFilter.java @@ -44,12 +44,12 @@ public class CarrierFilter { //return Uni.createFrom().nothing(); } - + @Broadcast @Outgoing("eddn-carrier") - public CompletionStage brodcastCarrierOnlyEvents() { + public Uni brodcastCarrierOnlyEvents() { - return CompletableFuture.supplyAsync(new Supplier() { + CompletionStage stage= CompletableFuture.supplyAsync(new Supplier() { @Override public EddnJournal get() { @@ -63,6 +63,7 @@ public class CarrierFilter { return null; } }); + return Uni.createFrom().completionStage(stage); } diff --git a/src/main/java/fun/manuel/service/CarrierService.java b/src/main/java/fun/manuel/service/CarrierService.java index a45e344..76799ad 100644 --- a/src/main/java/fun/manuel/service/CarrierService.java +++ b/src/main/java/fun/manuel/service/CarrierService.java @@ -59,6 +59,7 @@ public class CarrierService { @Transactional public void save(Carrier car) { org.hibernate.Session session=em.unwrap(org.hibernate.Session.class); + //session.merge(car); session.saveOrUpdate(car); em.flush(); } diff --git a/src/main/java/fun/manuel/service/DiscordBotService.java b/src/main/java/fun/manuel/service/DiscordBotService.java index 198b1e0..f6db8a4 100644 --- a/src/main/java/fun/manuel/service/DiscordBotService.java +++ b/src/main/java/fun/manuel/service/DiscordBotService.java @@ -5,12 +5,17 @@ import javax.enterprise.context.ApplicationScoped; import javax.security.auth.login.LoginException; import org.eclipse.microprofile.config.inject.ConfigProperty; +import org.eclipse.microprofile.reactive.messaging.Incoming; +import fun.manuel.data.CarrierAnalysesContext; +import fun.manuel.data.Message.Event; import io.quarkus.runtime.Startup; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.entities.Invite.Channel; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.events.GenericEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.EventListener; @@ -21,9 +26,14 @@ public class DiscordBotService { @ConfigProperty(name = "bot.token") private String bottoken; private JDA jda; + private User manuel; + private MessageChannel channel; @PostConstruct - private void startup() throws LoginException { - this.jda=JDABuilder.createDefault(bottoken).build(); + private void startup() throws LoginException, InterruptedException { + this.jda=JDABuilder.createDefault(bottoken).addEventListeners(pingpong).build(); + jda.awaitReady(); + + } EventListener pingpong=new EventListener() { @@ -33,6 +43,7 @@ public class DiscordBotService { if(eventg instanceof MessageReceivedEvent) { MessageReceivedEvent event=(MessageReceivedEvent) eventg; if (event.getAuthor().isBot()) return; + // We don't want to respond to other bot accounts, including ourself Message message = event.getMessage(); String content = message.getContentRaw(); @@ -41,9 +52,34 @@ public class DiscordBotService { if (content.equals("!ping")) { MessageChannel channel = event.getChannel(); + channel.sendMessage("Pong!").queue(); // Important to call .queue() on the RestAction returned by sendMessage(...) } + if (content.equals("!setlog")){ + MessageChannel cha = event.getChannel(); + cha.sendMessage("Set channel!").queue(); // Important to call .queue() on the RestAction returned by sendMessage(...) + channel=cha; + } } } }; + + @Incoming("carrier-update") + public void sendcarrierLog(CarrierAnalysesContext context) { + if(channel!=null) { + StringBuilder stringBuilder=new StringBuilder(); + stringBuilder.append("Carrier Event: " + context.getFreshCarrier().getId() + " | " + context.getEntry().getMessage().getEvent().toString()); + + if(context.getStoredCarrier()!=null) { + if (context.getEntry().getMessage().getEvent() == Event.CARRIER_JUMP) { + stringBuilder.append("\t" + context.getStoredCarrier().getSystem() + " -> " + context.getFreshCarrier().getSystem()); + }else { + stringBuilder.append("\tUpdated: " + context.getFreshCarrier().toString()); + } + }else { + stringBuilder.append("\tRegisterd: " + context.getFreshCarrier().toString()); + } + channel.sendMessage(stringBuilder.toString()).queue(); + } + } } diff --git a/src/main/java/org/eddn/EddnPump.java b/src/main/java/org/eddn/EddnPump.java index e551967..bac6387 100644 --- a/src/main/java/org/eddn/EddnPump.java +++ b/src/main/java/org/eddn/EddnPump.java @@ -41,10 +41,13 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.BlockingQueue; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; +import java.util.function.Supplier; import java.util.zip.DataFormatException; import java.util.zip.Inflater; @@ -76,13 +79,23 @@ public class EddnPump { @Outgoing("eddn-full") public Uni publishJournal() { - try { - return Uni.createFrom().item(journalqueue.take()); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return null; + + CompletionStage stage= CompletableFuture.supplyAsync(new Supplier() { + + @Override + public EddnJournal get() { + // TODO Auto-generated method stub + try { + return journalqueue.take(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + }); + return Uni.createFrom().completionStage(stage); + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b693c0b..7694f5d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,4 +3,4 @@ quarkus.datasource.db-kind=h2 quarkus.datasource.jdbc.url=jdbc:h2:~\\default quarkus.hibernate-orm.database.generation=none -bot.token=NzIyNDEyODk5Nzc5NDc3NTk0.Xuivdw.hiqHtxIG6jLXukYDJvhNYxW95P4 \ No newline at end of file +bot.token=NzIyNDEyODk5Nzc5NDc3NTk0.XujBYA.VB47K8Vi7SNGjccizMFZef6wHjM \ No newline at end of file