diff --git a/pom.xml b/pom.xml index c6c4441..a129774 100644 --- a/pom.xml +++ b/pom.xml @@ -29,9 +29,9 @@ - com.github.austinv11 + com.discord4j Discord4j - master-SNAPSHOT + 2.10.1 diff --git a/src/main/java/MainDl.java b/src/main/java/MainDl.java new file mode 100644 index 0000000..d4b25ee --- /dev/null +++ b/src/main/java/MainDl.java @@ -0,0 +1,51 @@ +import sx.blah.discord.api.ClientBuilder; +import sx.blah.discord.api.IDiscordClient; +import sx.blah.discord.api.events.IListener; +import sx.blah.discord.handle.impl.events.ReadyEvent; +import sx.blah.discord.handle.obj.IChannel; +import sx.blah.discord.util.MessageHistory; +import sx.blah.discord.util.RequestBuffer; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; +import java.time.Instant; +import java.util.function.BiConsumer; +import java.util.regex.Pattern; + +public class MainDl { + public static void main(String... args) throws IOException { + IDiscordClient idc = new ClientBuilder().withToken(Files.readAllLines(new File("Token.txt").toPath()).get(0)) + .registerListener((IListener) event -> { + IChannel chan = event.getClient().getChannelByID(209720707188260864L); + Pattern patplayer = Pattern.compile("(\\S+).*"); + File f = new File("dataDl.csv"); + f.delete(); + long mc = 0; + BiConsumer cmh = (mh, skip) -> { + RequestBuffer.request(() -> { //? eh + try { + Files.write(f.toPath(), + (Iterable) mh.stream().skip(skip ? 1 : 0) //Skip 'from' message to avoid double processing + .filter(msg -> !msg.getAuthor().isBot() || (!msg.getContent().toLowerCase().contains("music") + && !msg.getContent().toLowerCase().contains("song"))) + .map(msg -> msg.getCreationDate().toString() + "\t" + msg.getAuthor().getStringID() + "\t" + msg.getAuthor().getName() + "\t" + msg.getFormattedContent().replace("\r", "").replace("\n", "\\n").replace("\t", "\\t"))::iterator, StandardOpenOption.CREATE, StandardOpenOption.APPEND); + } catch (IOException e) { + e.printStackTrace(); + } + }).get(); //Wait for completion + }; + MessageHistory mh = chan.getMessageHistoryFrom(Instant.now(), 100); + cmh.accept(mh, false); + System.out.println("Processed " + (mc += mh.size()) + " messages."); + while (mh.size() > 1) { + cmh.accept(mh, true); + mh = chan.getMessageHistoryFrom(mh.get(mh.size() - 1).getLongID(), 100); + System.out.println("Processed " + (mc += mh.size()) + " messages."); + } + System.out.println("DONE!"); + System.exit(0); + }).login(); + } +}