[ JDA ] 특정 유저가 멘션됐는지 확인하는 방법

jwkwon0817·2023년 9월 2일
0

Bot

목록 보기
4/6
post-thumbnail

JDA에서는 메시지에서 특정 유저가 멘션됐는지 판단하는 기능을 이미 제공하고 있습니다.

일단은 메시지 객체를 e.getMessage()로 받아오고 message 변수에 저장하겠습니다.

그 후에 message.getMentions()로 멘션 된 유저들 목록을 가져오고 isMentioned()로 boolean 값을 받아올 수 있습니다.

예시로 특정 메시지에서 봇이 멘션되면 해당 메시지에 반응을 추가하는 코드를 작성해 보겠습니다.

Java Version

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();
        }
    }
}

Kotlin Version

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();
        }
    }
}
profile
SRIHS 119th SW

0개의 댓글