Essentials/EssentialsDiscord/src/main/java/net/essentialsx/discord/util/DiscordMessageRecipient.java

76 lines
1.9 KiB
Java

package net.essentialsx.discord.util;
import com.earth2me.essentials.messaging.IMessageRecipient;
import com.earth2me.essentials.utils.FormatUtil;
import net.essentialsx.api.v2.services.discord.InteractionMember;
import org.bukkit.entity.Player;
import java.util.concurrent.atomic.AtomicBoolean;
import static com.earth2me.essentials.I18n.tl;
public class DiscordMessageRecipient implements IMessageRecipient {
private final InteractionMember member;
private final AtomicBoolean died = new AtomicBoolean(false);
public DiscordMessageRecipient(InteractionMember member) {
this.member = member;
}
@Override
public void sendMessage(String message) {
}
@Override
public MessageResponse sendMessage(IMessageRecipient recipient, String message) {
return MessageResponse.UNREACHABLE;
}
@Override
public MessageResponse onReceiveMessage(IMessageRecipient sender, String message) {
if (died.get()) {
sender.setReplyRecipient(null);
return MessageResponse.UNREACHABLE;
}
final String cleanMessage = MessageUtil.sanitizeDiscordMarkdown(FormatUtil.stripFormat(message));
member.sendPrivateMessage(tl("replyFromDiscord", sender.getName(), cleanMessage)).thenAccept(success -> {
if (!success) {
died.set(true);
}
});
return MessageResponse.SUCCESS;
}
@Override
public String getName() {
return member.getTag();
}
@Override
public String getDisplayName() {
return member.getTag();
}
@Override
public boolean isReachable() {
return !died.get();
}
@Override
public IMessageRecipient getReplyRecipient() {
return null;
}
@Override
public void setReplyRecipient(IMessageRecipient recipient) {
}
@Override
public boolean isHiddenFrom(Player player) {
return died.get();
}
}