57 lines
2.3 KiB
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();
|
|
});
|
|
}
|
|
}
|