From 9c20fa998ee24a4ca4dd22208dfeffdef352be96 Mon Sep 17 00:00:00 2001 From: Greg TK <33130539+GregTCLTK@users.noreply.github.com> Date: Tue, 10 Jul 2018 20:24:37 +0200 Subject: [PATCH] d --- .gitignore | 26 ++++ Diagramm.jpg | Bin 0 -> 2275 bytes README.md | 3 +- src/META-INF/MANIFEST.MF | 3 + .../data/mining/Listener/eventListener.java | 33 ++++ .../data/mining/Listener/managerListener.java | 32 ++++ .../discord/data/mining/Listener/onready.java | 44 ++++++ src/main/java/discord/data/mining/Logger.java | 21 +++ src/main/java/discord/data/mining/Main.java | 50 ++++++ .../discord/data/mining/onlinethread.java | 20 +++ .../java/discord/data/mining/sendMessage.java | 87 +++++++++++ src/main/java/discord/data/mining/test.java | 95 ++++++++++++ src/main/java/discord/data/mining/test2.java | 143 ++++++++++++++++++ stats.txt | 1 + 14 files changed, 557 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 Diagramm.jpg create mode 100644 src/META-INF/MANIFEST.MF create mode 100644 src/main/java/discord/data/mining/Listener/eventListener.java create mode 100644 src/main/java/discord/data/mining/Listener/managerListener.java create mode 100644 src/main/java/discord/data/mining/Listener/onready.java create mode 100644 src/main/java/discord/data/mining/Logger.java create mode 100644 src/main/java/discord/data/mining/Main.java create mode 100644 src/main/java/discord/data/mining/onlinethread.java create mode 100644 src/main/java/discord/data/mining/sendMessage.java create mode 100644 src/main/java/discord/data/mining/test.java create mode 100644 src/main/java/discord/data/mining/test2.java create mode 100644 stats.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7c87a17 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +*.xml + +SECRETS.java diff --git a/Diagramm.jpg b/Diagramm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a19aa70176e0faab9ab0be039d52a224310e2d2c GIT binary patch literal 2275 zcmeH{&q@O^5XNVcO`C4A+ew?$9xM1BD-^0L2)=?~L9bHqQt%yo3{O6T_z?cN_$0Rt44yY(yX$+0X4Sfi~_V>mkKOXqtn?q1?Po{cG^?YFp z|Lcg4;506ADbay&C>_Qp2z-B756xx&tqSoKtV9qb2>|a8*PGHVDUcNSLj`Ud7t&X6 zKClZldlQwQenYsQ35i(YRzj?ZjZ->RJ7pt*)jm&Ye+H2Je!8m clients = new ArrayList<>(); + public static ArrayList bots = new ArrayList<>(); + public static ArrayList manager = new ArrayList<>(); + public static int currentBot =0; + public static ArrayList onlineclients = new ArrayList<>(); + public static long Messageperh = 0; + public static ArrayList guilds = new ArrayList<>(); + + public static void main(String[] args) { + try { + for (String Token : managerTokens) { + manager.add(new JDABuilder(AccountType.BOT).setAutoReconnect(true).setToken(Token).addEventListener(new managerListener()).buildAsync()); + } + + Thread.sleep(1500); + + onlinethread.main(); + for (String Token : clienttokens) { + clients.add(new JDABuilder(AccountType.CLIENT).setToken(Token).addEventListener(new onready()).setAutoReconnect(true).buildAsync()); + } + for (String Token : botTokens) { + bots.add(new JDABuilder(AccountType.BOT).setAutoReconnect(true).setToken(Token).buildAsync()); + } + test2.main(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/discord/data/mining/onlinethread.java b/src/main/java/discord/data/mining/onlinethread.java new file mode 100644 index 0000000..01de321 --- /dev/null +++ b/src/main/java/discord/data/mining/onlinethread.java @@ -0,0 +1,20 @@ +package discord.data.mining; + +/** + * @author Hax + * @time 12:01 30.06.2018 + * @project Discord-Data-Mining + * @package discord.data.mining + * @class onlinethread + **/ + +public class onlinethread { + public static void main() { + new Thread(() -> { + while (true) { + + } + }); + } + +} diff --git a/src/main/java/discord/data/mining/sendMessage.java b/src/main/java/discord/data/mining/sendMessage.java new file mode 100644 index 0000000..af43e08 --- /dev/null +++ b/src/main/java/discord/data/mining/sendMessage.java @@ -0,0 +1,87 @@ +package discord.data.mining; + +/** + * @author Skidder + * @time 09:11 30.06.2018 + * @project Discord-Data-Mining + * @package discord.data.mining + * @class sendMessage + **/ + +import net.dv8tion.jda.core.EmbedBuilder; +import net.dv8tion.jda.core.JDA; +import net.dv8tion.jda.core.events.Event; +import net.dv8tion.jda.core.events.message.MessageReceivedEvent; +import net.dv8tion.jda.core.events.message.react.MessageReactionAddEvent; +import net.dv8tion.jda.core.events.message.react.MessageReactionRemoveEvent; + +import java.time.Instant; + +public class sendMessage { + public static void sendMessage(Event inputevent) { + try { + JDA BOT = Main.bots.get(Main.currentBot); + Main.currentBot++; + if (Main.currentBot == Main.bots.size()) Main.currentBot = 0; + if (inputevent instanceof MessageReceivedEvent) { + MessageReceivedEvent event = (MessageReceivedEvent) inputevent; + if (!event.getGuild().getId().equals("448554629282922527")) { + BOT.getTextChannelById(Main.MessageLog) + .sendMessage( + new EmbedBuilder() + .setAuthor(event.getAuthor().getName(), "https://discordapp.com/channels/@me/" + event.getAuthor().getId() + "/", event.getAuthor().getAvatarUrl()).setColor(65280) + .setTitle("New Message", "https://canary.discordapp.com/channels/" + event.getGuild().getId() + "/") + .setDescription("**Message Content:**\n" + event.getMessage().getContentRaw()) + .setThumbnail(event.getGuild().getIconUrl()) + .addField("Guild Name", event.getGuild().getName(), true) + .addField("Guild ID", event.getGuild().getId(), true) + .addField("Guild Owner", event.getGuild().getOwner().getUser().getName() + "#" + event.getGuild().getOwner().getUser().getDiscriminator(), true) + .addField("Channel Name", "#" + event.getChannel().getName(), true) + .setFooter(event.getJDA().getSelfUser().getName(), event.getJDA().getSelfUser().getAvatarUrl()) + .setTimestamp(Instant.now()) + .build() + ).queue(); + } + } else if (inputevent instanceof MessageReactionAddEvent) { + MessageReactionAddEvent event = (MessageReactionAddEvent) inputevent; + if (!event.getGuild().getId().equals("448554629282922527")) { + BOT.getTextChannelById(Main.ReactionLog) + .sendMessage( + new EmbedBuilder() + .setAuthor(event.getMember().getUser().getName(), "https://discordapp.com/channels/@me/" + event.getMember().getUser().getId() + "/", event.getMember().getUser().getAvatarUrl()).setColor(65280) + .setTitle("Reaction Add", "https://canary.discordapp.com/channels/" + event.getGuild().getId() + "/") + .setThumbnail(event.getGuild().getIconUrl()) + .setDescription("**Emoji:**\n" + event.getReactionEmote().getEmote().getAsMention()) + .addField("Guild Name", event.getGuild().getName(), true) + .addField("Guild ID", event.getGuild().getId(), true) + .addField("Guild Owner", event.getGuild().getOwner().getUser().getName() + "#" + event.getGuild().getOwner().getUser().getDiscriminator(), true) + .addField("Channel Name", "#" + event.getChannel().getName(), true) + .setFooter(event.getJDA().getSelfUser().getName(), event.getJDA().getSelfUser().getAvatarUrl()) + .setTimestamp(Instant.now()) + .build() + ).queue(); + } + } else if (inputevent instanceof MessageReactionRemoveEvent) { + MessageReactionRemoveEvent event = (MessageReactionRemoveEvent) inputevent; + if (!event.getGuild().getId().equals("448554629282922527")) { + BOT.getTextChannelById(Main.ReactionLog) + .sendMessage( + new EmbedBuilder() + .setAuthor(event.getMember().getUser().getName(), "https://discordapp.com/channels/@me/" + event.getMember().getUser().getId() + "/", event.getMember().getUser().getAvatarUrl()).setColor(16711680) + .setTitle("Reaction Remove", "https://canary.discordapp.com/channels/" + event.getGuild().getId() + "/") + .setThumbnail(event.getGuild().getIconUrl()) + .setDescription("**Emoji:**\n" + event.getReactionEmote().getEmote().getAsMention()) + .addField("Guild Name", event.getGuild().getName(), true) + .addField("Guild ID", event.getGuild().getId(), true) + .addField("Guild Owner", event.getGuild().getOwner().getUser().getName() + "#" + event.getGuild().getOwner().getUser().getDiscriminator(), true) + .addField("Channel Name", "#" + event.getChannel().getName(), true) + .setFooter(event.getJDA().getSelfUser().getName(), event.getJDA().getSelfUser().getAvatarUrl()) + .setTimestamp(Instant.now()) + .build() + ).queue(); + } + } + } catch (Exception ignore) { + } + } +} \ No newline at end of file diff --git a/src/main/java/discord/data/mining/test.java b/src/main/java/discord/data/mining/test.java new file mode 100644 index 0000000..e24afdb --- /dev/null +++ b/src/main/java/discord/data/mining/test.java @@ -0,0 +1,95 @@ +package discord.data.mining; + +import javax.swing.*; +import java.awt.*; +import java.awt.font.FontRenderContext; +import java.awt.font.LineMetrics; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Line2D; + +/** + * @author Hax + * @time 12:46 30.06.2018 + * @project Discord-Data-Mining + * @package discord.data.mining + * @class test + **/ + +public class test extends JPanel { + + int[] data = { + 21, 14, 18, 03, 86, 88, 74, 87, 54, 77, + 61, 55, 48, 60, 49, 36, 38, 27, 20, 18 + }; + final int PAD = 20; + + protected void paintComponent(Graphics g) { + super.paintComponent(g); + Graphics2D g2 = (Graphics2D)g; + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + int w = getWidth(); + int h = getHeight(); + // Draw ordinate. + g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD)); + // Draw abcissa. + g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD)); + // Draw labels. + Font font = g2.getFont(); + FontRenderContext frc = g2.getFontRenderContext(); + LineMetrics lm = font.getLineMetrics("0", frc); + float sh = lm.getAscent() + lm.getDescent(); + // Ordinate label. + String s = "data"; + float sy = PAD + ((h - 2*PAD) - s.length()*sh)/2 + lm.getAscent(); + for(int i = 0; i < s.length(); i++) { + String letter = String.valueOf(s.charAt(i)); + float sw = (float)font.getStringBounds(letter, frc).getWidth(); + float sx = (PAD - sw)/2; + g2.drawString(letter, sx, sy); + sy += sh; + } + // Abcissa label. + s = "x axis"; + sy = h - PAD + (PAD - sh)/2 + lm.getAscent(); + float sw = (float)font.getStringBounds(s, frc).getWidth(); + float sx = (w - sw)/2; + g2.drawString(s, sx, sy); + // Draw lines. + double xInc = (double)(w - 2*PAD)/(data.length-1); + double scale = (double)(h - 2*PAD)/getMax(); + g2.setPaint(Color.green.darker()); + for(int i = 0; i < data.length-1; i++) { + double x1 = PAD + i*xInc; + double y1 = h - PAD - scale*data[i]; + double x2 = PAD + (i+1)*xInc; + double y2 = h - PAD - scale*data[i+1]; + g2.draw(new Line2D.Double(x1, y1, x2, y2)); + } + // Mark data points. + g2.setPaint(Color.red); + for(int i = 0; i < data.length; i++) { + double x = PAD + i*xInc; + double y = h - PAD - scale*data[i]; + g2.fill(new Ellipse2D.Double(x-2, y-2, 4, 4)); + } + } + + private int getMax() { + int max = -Integer.MAX_VALUE; + for(int i = 0; i < data.length; i++) { + if(data[i] > max) + max = data[i]; + } + return max; + } + + public static void main(String[] args) { + JFrame f = new JFrame(); + f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + f.add(new test()); + f.setSize(400,400); + f.setLocation(200,200); + f.setVisible(true); + } +} diff --git a/src/main/java/discord/data/mining/test2.java b/src/main/java/discord/data/mining/test2.java new file mode 100644 index 0000000..b35456f --- /dev/null +++ b/src/main/java/discord/data/mining/test2.java @@ -0,0 +1,143 @@ +package discord.data.mining; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.font.FontRenderContext; +import java.awt.font.LineMetrics; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Line2D; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.*; + +/** + * @author Hax + * @time 12:52 30.06.2018 + * @project Discord-Data-Mining + * @package discord.data.mining + * @class test2 + **/ + +public class test2 { + + public static void main() { + + Thread diagramm = new Thread(() -> { + TimerTask timerTask = new TimerTask() { + @Override + public void run() { + Date date = new Date(); + Calendar calendar = GregorianCalendar.getInstance(); + calendar.setTime(date); + if (calendar.get(Calendar.MINUTE)==0) { + try { + FileReader fr = new FileReader("stats.txt"); + BufferedReader br = new BufferedReader(fr); + + String zeile = ""; + StringBuilder stringBuilder = new StringBuilder(); + while ((zeile = br.readLine()) != null) { + stringBuilder.append(zeile); + } + br.close(); + + String[] stats = stringBuilder.toString().split(" "); + String statsstring = stringBuilder.toString(); + statsstring = statsstring.replaceFirst(stats[0]+" ", ""); + statsstring = statsstring+" "+Main.Messageperh; + FileWriter fw = new FileWriter("stats.txt"); + BufferedWriter bw = new BufferedWriter(fw); + bw.write(statsstring); + bw.close(); + Main.Messageperh =0; + + } catch (Exception e) { + e.printStackTrace(); + } + } + if (calendar.get(Calendar.HOUR_OF_DAY)==0&&calendar.get(Calendar.MINUTE)==0) { + try { + FileReader fr = new FileReader("stats.txt"); + BufferedReader br = new BufferedReader(fr); + + String zeile = ""; + StringBuilder stringBuilder = new StringBuilder(); + while ((zeile = br.readLine()) != null) { + stringBuilder.append(zeile); + } + br.close(); + String[] datas = stringBuilder.toString().split(" "); + ArrayList data = new ArrayList<>(); + for (String dataa:datas) { + data.add(Integer.parseInt(dataa)); + } + int max = -Integer.MAX_VALUE; + for(int i = 0; i < data.size(); i++) { + if(data.get(i) > max) + max = data.get(i); + } + BufferedImage bufferedImage = ImageIO.read(new File("Diagramm.jpg")); + Graphics2D g2 = bufferedImage.createGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + int w = bufferedImage.getWidth(); + int h = bufferedImage.getHeight(); + // Draw ordinate. + g2.draw(new Line2D.Double(24, 24, 24, h - 24)); + // Draw abcissa. + g2.draw(new Line2D.Double(24, h - 24, w - 24, h - 24)); + // Draw labels. + Font font = g2.getFont(); + FontRenderContext frc = g2.getFontRenderContext(); + LineMetrics lm = font.getLineMetrics("0", frc); + float sh = lm.getAscent() + lm.getDescent(); + // Ordinate label. + String s = "data"; + float sy = 24 + ((h - 2 * 24) - s.length() * sh) / 2 + lm.getAscent(); + for (int i = 0; i < s.length(); i++) { + String letter = String.valueOf(s.charAt(i)); + float sw = (float) font.getStringBounds(letter, frc).getWidth(); + float sx = (24 - sw) / 2; + g2.drawString(letter, sx, sy); + sy += sh; + } + // Abcissa label. + s = "x axis"; + sy = h - 24 + (24 - sh) / 2 + lm.getAscent(); + float sw = (float) font.getStringBounds(s, frc).getWidth(); + float sx = (w - sw) / 2; + g2.drawString(s, sx, sy); + // Draw lines. + double xInc = (double) (w - 2 * 24) / (data.size() - 1); + double scale = (double) (h - 2 * 24) / max; + g2.setPaint(Color.green.darker()); + for (int i = 0; i < data.size() - 1; i++) { + double x1 = 24 + i * xInc; + double y1 = h - 24 - scale * data.get(i); + double x2 = 24 + (i + 1) * xInc; + double y2 = h - 24 - scale * data.get(i + 1); + g2.draw(new Line2D.Double(x1, y1, x2, y2)); + } + // Mark data points. + g2.setPaint(Color.red); + for (int i = 0; i < data.size(); i++) { + double x = 24 + i * xInc; + double y = h - 24 - scale * data.get(i); + g2.fill(new Ellipse2D.Double(x - 2, y - 2, 4, 4)); + } + ByteArrayOutputStream os = new ByteArrayOutputStream(); + ImageIO.write(bufferedImage, "jpg", os); + Main.manager.get(0).getTextChannelById("462534066869370882").sendFile(new ByteArrayInputStream(os.toByteArray()), "test.jpg").queue(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }; + new Timer().schedule(timerTask, 30000, 60000); + }); + diagramm.start(); + + } + +} diff --git a/stats.txt b/stats.txt new file mode 100644 index 0000000..cddc193 --- /dev/null +++ b/stats.txt @@ -0,0 +1 @@ +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 50 50 50 50 112175 \ No newline at end of file