76 lines
1.9 KiB
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();
|
|
}
|
|
}
|