Saving it to CSV just like that

This commit is contained in:
Norbi Peti 2018-06-04 21:20:40 +02:00
parent 716ce0d186
commit 16508000a7
No known key found for this signature in database
GPG key ID: DBA4C4549A927E56

View file

@ -3,52 +3,60 @@ import sx.blah.discord.api.IDiscordClient;
import sx.blah.discord.api.events.IListener; import sx.blah.discord.api.events.IListener;
import sx.blah.discord.handle.impl.events.ReadyEvent; import sx.blah.discord.handle.impl.events.ReadyEvent;
import sx.blah.discord.handle.obj.IChannel; import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IMessage;
import sx.blah.discord.util.MessageHistory; import sx.blah.discord.util.MessageHistory;
import sx.blah.discord.util.RequestBuffer;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.StandardOpenOption;
import java.time.Instant; import java.time.Instant;
import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainHeh { public class MainHeh {
public static void main(String... args) throws IOException { public static void main(String... args) throws IOException {
IDiscordClient idc = new ClientBuilder().withToken(Files.readAllLines(new File("Token.txt").toPath()).get(0)) IDiscordClient idc = new ClientBuilder().withToken(Files.readAllLines(new File("Token.txt").toPath()).get(0))
.registerListener((IListener<ReadyEvent>) event -> { .registerListener((IListener<ReadyEvent>) event -> {
IChannel chan = event.getClient().getChannelByID(249663564057411596L); IChannel chan = event.getClient().getChannelByID(249663564057411596L);
final AtomicInteger x = new AtomicInteger(); Pattern patplayer = Pattern.compile("(\\S+).*");
/*while(true) { File f = new File("data.csv");
chan.getMessageHistory(100).stream() f.delete();
.filter(msg -> msg.getContent().matches( long mc = 0;
"(\\S+( \\(formerly.+\\))* joined the game)" + BiConsumer<MessageHistory, Boolean> cmh = (mh, skip) -> {
"|(\\S+ left the game)") RequestBuffer.request(() -> { //? eh
|| (msg.getEmbeds().size()>0&&msg.getEmbeds().get(0).getTitle()!=null try {
&&msg.getEmbeds().get(0).getTitle().matches( Files.write(f.toPath(),
"(Server recovered from a crash - chat connected\\.)" (Iterable<String>) mh.stream().skip(skip ? 1 : 0) //Skip 'from' message to avoid double processing
))) .filter(msg -> msg.getContent().matches(
.map(IMessage::getContent).forEach(System.out::println); "(\\S+( \\(formerly.+\\))* joined the game)" +
//break; "|(\\S+ left the game)")
chan.getMessageHistoryFrom() || (msg.getEmbeds().size() > 0 && msg.getEmbeds().get(0).getTitle() != null
}*/ && msg.getEmbeds().get(0).getTitle().matches(
Consumer<MessageHistory> cmh = mh -> { "(Server recovered from a crash - chat connected\\.)"
mh.stream() )))
.filter(msg -> msg.getContent().matches( .map(msg -> {
"(\\S+( \\(formerly.+\\))* joined the game)" + Matcher m = patplayer.matcher(msg.getContent());
"|(\\S+ left the game)") return (m.matches()
|| (msg.getEmbeds().size() > 0 && msg.getEmbeds().get(0).getTitle() != null ? m.group(1) + (msg.getContent().contains("joined") ? "\tjoin" : "\tleave")
&& msg.getEmbeds().get(0).getTitle().matches( : "EVERYBODY\tLEFT")
"(Server recovered from a crash - chat connected\\.)" + "\t" + msg.getTimestamp().toString();
))) })::iterator, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
.map(IMessage::getContent).forEach(System.out::println); } catch (IOException e) {
e.printStackTrace();
}
}).get(); //Wait for completion
}; };
MessageHistory mh = chan.getMessageHistoryFrom(Instant.now(), 100); MessageHistory mh = chan.getMessageHistoryFrom(Instant.now(), 100);
cmh.accept(mh); cmh.accept(mh, false);
System.out.println("Processed " + (mc += mh.size()) + " messages.");
while (mh.size() > 0) { while (mh.size() > 0) {
cmh.accept(mh, true);
mh = chan.getMessageHistoryFrom(mh.get(mh.size() - 1).getLongID(), 100); mh = chan.getMessageHistoryFrom(mh.get(mh.size() - 1).getLongID(), 100);
cmh.accept(mh); System.out.println("Processed " + (mc += mh.size()) + " messages.");
} }
System.out.println("DONE!");
}).login(); }).login();
} }
} }