yk
This commit is contained in:
GregTCLTK 2019-11-03 18:20:14 +01:00
parent 8fa1a5997d
commit 544e34b415
No known key found for this signature in database
GPG key ID: 6C090B9A5D4B3734
11 changed files with 42 additions and 483 deletions

View file

@ -6,7 +6,7 @@
<groupId>Discord-Data-Mining</groupId> <groupId>Discord-Data-Mining</groupId>
<artifactId>Discord-Data-Mining</artifactId> <artifactId>Discord-Data-Mining</artifactId>
<version>1.0-SNAPSHOT</version> <version>2.0</version>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>

View file

@ -0,0 +1,41 @@
package discord.data.mining;
import net.dv8tion.jda.api.AccountType;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Guild;
import java.util.ArrayList;
import static discord.data.mining.SECRETS.*;
public class DataMining {
public String MessageLog = "462507170383134720";
public String ReactionLog = "462524422713245696";
public String ConsoleLog = "462556910206320640";
public static ArrayList<JDA> clients = new ArrayList<>();
public static ArrayList<JDA> bots = new ArrayList<>();
public static ArrayList<JDA> manager = new ArrayList<>();
public static void main(String[] args) {
try {
for (String Token : managerTokens) {
manager.add(new JDABuilder(AccountType.BOT).setAutoReconnect(true).setToken(Token).build());
}
Thread.sleep(1500);
for (String Token : clienttokens) {
clients.add(new JDABuilder(AccountType.CLIENT).setToken(Token).setAutoReconnect(true).build());
}
for (String Token : botTokens) {
bots.add(new JDABuilder(AccountType.BOT).setAutoReconnect(true).setToken(Token).build());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

View file

@ -1,31 +0,0 @@
package discord.data.mining;
import com.rethinkdb.net.Connection;
import static com.rethinkdb.RethinkDB.r;
/**
* @author Hax
* @github github.com/Schlauer-Hax
* @time 19:40 07.08.2018
* @project Discord-Data-Mining
* @package discord.data.mining
* @class Database
**/
public class Database {
static Connection conn;
public static void connect() {
conn = r.connection()
.hostname("localhost")
.db("DM")
.port(28015)
.connect();
}
public static Connection getConn() {
return conn;
}
}

View file

@ -1,22 +0,0 @@
package discord.data.mining.Listener;
import discord.data.mining.Main;
import discord.data.mining.sendMessage;
import net.dv8tion.jda.api.events.Event;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
/**
* @author GregTCLTK
* @time 21:22 29.06.2018
* @project Discord-Data-Mining
* @package discord.data.mining.Listener
* @class onReactionAdd
**/
public class GenericEventListener extends ListenerAdapter {
public void onGenericEvent(Event event) {
Main.Actionperh++;
sendMessage.sendMessage(event);
}
}

View file

@ -1,34 +0,0 @@
package discord.data.mining.Listener;
import discord.data.mining.Main;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
/**
* @author GregTCLTK
* @time 09:42 01.07.2018
* @project Discord-Data-Mining
* @package discord.data.mining.Listener
* @class MessageReceivedListener
**/
public class MessageReceivedListener extends ListenerAdapter {
@Override
public void onMessageReceived(MessageReceivedEvent event) {
if (event.getAuthor().getId().contains("401817301919465482") || event.getAuthor().getId().contains("261083609148948488")) {
if (event.getMessage().getContentRaw().equals("dm!shutdown") || (event.getMessage().getContentRaw().equals("dm!stop"))) {
for (JDA Bots : Main.bots) {
Bots.shutdown();
}
for (JDA Clients : Main.clients) {
Clients.shutdown();
}
} else if (event.getMessage().getContentRaw().equals("dm!start")) {
}
}
}
}

View file

@ -1,42 +0,0 @@
package discord.data.mining.Listener;
import discord.data.mining.Logger;
import discord.data.mining.Main;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.events.ReadyEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
/**
* @author Hax
* @time 12:04 30.06.2018
* @project Discord-Data-Mining
* @package discord.data.mining.Listener
* @class ReadyListener
**/
public class ReadyListener extends ListenerAdapter {
@Override
public void onReady(ReadyEvent event) {
Logger.info("Client " + event.getJDA().getSelfUser().getName() + "#" +event.getJDA().getSelfUser().getDiscriminator() + "\nGuilds: " + event.getJDA().getGuilds().size() + "\nUser: " + event.getJDA().getUsers().size());
Main.onlineclients.add(event.getJDA().getSelfUser().getName());
Logger.info("Arraylist size " + Main.onlineclients.size() + " " + Main.clients.size());
for (Guild guild : event.getJDA().getGuilds()) {
if (!Main.guilds.contains(guild)) {
Main.guilds.add(guild);
} else {
if (!guild.getId().contains("448554629282922527")) {
Logger.info("Leave" + guild.getName());
guild.leave().queue();
}
}
}
if (Main.onlineclients.size() == Main.clients.size()) {
Logger.info("All clients loaded");
for (JDA jda : Main.clients) {
jda.addEventListener(new GenericEventListener());
}
}
}
}

View file

@ -1,25 +0,0 @@
package discord.data.mining;
import net.dv8tion.jda.api.EmbedBuilder;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.Calendar;
/**
* @author GregTCLTK
* @time 21:26 30.06.2018
* @project Discord-Data-Mining
* @package discord.data.mining
* @class Logger
**/
public class Logger {
public static void info(String info) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String time = sdf.format(cal.getTime());
Main.manager.get(0).getTextChannelById(Main.ConsoleLog).sendMessage(new EmbedBuilder().setColor(65280).setTimestamp(Instant.now()).setDescription(info).build()).queue();
System.out.println("[" + time + "] " + info);
}
}

View file

@ -1,50 +0,0 @@
package discord.data.mining;
import discord.data.mining.Listener.MessageReceivedListener;
import discord.data.mining.Listener.ReadyListener;
import net.dv8tion.jda.api.AccountType;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Guild;
import java.util.*;
import static discord.data.mining.SECRETS.botTokens;
import static discord.data.mining.SECRETS.clienttokens;
import static discord.data.mining.SECRETS.managerTokens;
public class Main {
public static long MessageLog = 462507170383134720L;
public static long ReactionLog = 462524422713245696L;
public static long ConsoleLog = 462556910206320640L;
public static ArrayList<JDA> clients = new ArrayList<>();
public static ArrayList<JDA> bots = new ArrayList<>();
public static ArrayList<JDA> manager = new ArrayList<>();
public static int currentBot =0;
public static ArrayList<String> onlineclients = new ArrayList<>();
public static long Actionperh = 0;
public static ArrayList<Guild> guilds = new ArrayList<>();
public static void main(String[] args) {
try {
Database.connect();
for (String Token : managerTokens) {
manager.add(new JDABuilder(AccountType.BOT).setAutoReconnect(true).setToken(Token).addEventListeners(new MessageReceivedListener()).build());
}
Thread.sleep(1500);
onlinethread.main();
for (String Token : clienttokens) {
clients.add(new JDABuilder(AccountType.CLIENT).setToken(Token).addEventListeners(new ReadyListener()).setAutoReconnect(true).build());
}
for (String Token : botTokens) {
bots.add(new JDABuilder(AccountType.BOT).setAutoReconnect(true).setToken(Token).build());
}
Stats.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View file

@ -1,138 +0,0 @@
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 Stats
**/
public class Stats {
public static void start() {
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.Actionperh;
FileWriter fw = new FileWriter("stats.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write(statsstring);
bw.close();
Main.Actionperh =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<Integer> data = new ArrayList<>();
for (String dataa:datas) {
data.add(Integer.parseInt(dataa));
}
int max = -Integer.MAX_VALUE;
for (Integer aData : data) {
if (aData > max)
max = aData;
}
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();
g2.draw(new Line2D.Double(24, 24, 24, h - 24));
g2.draw(new Line2D.Double(24, h - 24, w - 24, h - 24));
Font font = g2.getFont();
FontRenderContext frc = g2.getFontRenderContext();
LineMetrics lm = font.getLineMetrics("0", frc);
float sh = lm.getAscent() + lm.getDescent();
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;
}
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();
}
}

View file

@ -1,20 +0,0 @@
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) {
}
});
}
}

View file

@ -1,120 +0,0 @@
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.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.events.Event;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.Calendar;
import static com.rethinkdb.RethinkDB.r;
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")) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String time = sdf.format(cal.getTime());
r.table("messages").insert(
r.hashMap("MessageID", event.getMessage().getIdLong())
.with("AuthorID", event.getAuthor().getIdLong())
.with("GuildID", event.getGuild().getIdLong())
.with("Content", event.getMessage().getContentRaw())
.with("Time", time)
).run(Database.getConn());
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")) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String time = sdf.format(cal.getTime());
event.getTextChannel().getMessageById(event.getMessageId()).queue(
msg -> {
StringBuilder reactions = new StringBuilder();
msg.getReactions().forEach(messageReaction -> reactions.append(messageReaction.getReactionEmote().getName()+" ("+messageReaction.getCount()+")"));
r.table("reactionadd").insert(
r.hashMap("MessageID", msg.getIdLong())
.with("AuthorID", msg.getIdLong())
.with("GuildID", event.getGuild().getIdLong())
.with("Content", msg.getContentRaw())
.with("Time", time)
.with("NewReaction", event.getReaction().getReactionEmote().getName())
.with("Reactions", reactions.toString())
).run(Database.getConn());
}
);
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) {
}
}
}