TotalFreedomMod/discord/src/main/java/me/totalfreedom/discord/listener/PrivateMessageListener.java

57 lines
2.3 KiB
Java

package me.totalfreedom.discord.listener;
import discord4j.core.event.domain.message.MessageCreateEvent;
import me.totalfreedom.discord.TFD4J;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.admin.Admin;
import me.totalfreedom.totalfreedommod.player.PlayerData;
public class PrivateMessageListener
{
private final TFD4J tfd4j;
public PrivateMessageListener(TFD4J tfd4j)
{
this.tfd4j = tfd4j;
}
public void privateMessageReceived()
{
tfd4j.getBot()
.getClient()
.getEventDispatcher()
.on(MessageCreateEvent.class)
.filter(event -> event.getMessage().getAuthor().orElse(null) != null)
.filter(event -> !event.getMessage().getAuthor().orElseThrow().getId().equals(tfd4j.getBot().getClient().getSelfId()))
.filter(event -> event.getMessage().getContent().strip().matches("\\d{5}"))
.subscribe(event ->
{
String code = event.getMessage().getContent().strip();
String name;
if (tfd4j.getBot().getLinkCodes().get(code) != null)
{
PlayerData player = tfd4j.getBot().getLinkCodes().get(code);
name = player.getName();
player.setDiscordID(event.getMessage().getAuthor().orElseThrow().getId().asString());
Admin admin = TotalFreedomMod.getPlugin().al.getEntryByUuid(player.getUuid());
if (admin != null)
{
tfd4j.getImpl().syncRoles(admin, player.getDiscordID());
}
TotalFreedomMod.getPlugin().pl.save(player);
tfd4j.getBot().getLinkCodes().remove(code);
} else
{
return;
}
event.getMessage()
.getChannel()
.blockOptional()
.orElseThrow(UnsupportedOperationException::new)
.createMessage("Link successful. Now this Discord account is linked with your Minecraft account **" + name + "**.").block();
});
}
}