JDA에서는 메시지에서 특정 유저가 멘션됐는지 판단하는 기능을 이미 제공하고 있습니다.
일단은 메시지 객체를 e.getMessage()로 받아오고 message 변수에 저장하겠습니다.
그 후에 message.getMentions()로 멘션 된 유저들 목록을 가져오고 isMentioned()
로 boolean 값을 받아올 수 있습니다.
예시로 특정 메시지에서 봇이 멘션되면 해당 메시지에 반응을 추가하는 코드를 작성해 보겠습니다.
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
public class Mention extends ListenerAdapter {
@Override
public void onMessageReceived(MessageReceivedEvent e) {
Message message = e.getMessage();
boolean mentioned = message.getMentions().isMentioned(e.getJDA().getSelfUser());
if (mentioned) {
message.addReaction(Emoji.fromUnicode("✅")).queue();
}
}
}
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
class Mention : ListenerAdapter() {
override fun onMessageReceived(e: MessageReceivedEvent) {
val message: Message = e.message
val mentioned: Boolean = message.mentions.isMentioned(event.jda.selfUser);
if (mentioned) {
message.addReaction(Emoji.fromUnicode("✅")).queue();
}
}
}