1. 사전 설정
bot 파일 아래에 response 파일을 추가로 생성했다.
그 안에 ChattingReaction.class를 생성해주었다.
이후 DiscordBot.class로 돌아간다. 방금 생성한 ChattingReaction 클래스를 이벤트 리스너에 등록해야한다.
addEventListeners(new ChattingReaction())
또한 메시지를 입력하기 위해 권한도 부여해야하는데 자주 쓰는 권한을 모아서 생성해보았다.
enableIntents(Intent)
public class DiscordBot {
public static void main(String[] args) {
BotTokenManager tokenManager = new BotTokenManager();
String token = tokenManager.getDiscordBotToken();
EnumSet<GatewayIntent> intents = EnumSet.of(
GatewayIntent.GUILD_MESSAGES,
GatewayIntent.DIRECT_MESSAGES,
GatewayIntent.MESSAGE_CONTENT,
GatewayIntent.GUILD_PRESENCES,
GatewayIntent.GUILD_MEMBERS,
GatewayIntent.GUILD_VOICE_STATES);
JDABuilder.createDefault(token)
.enableIntents(intents)
.setActivity(Activity.customStatus("명령어 기다리는 중..."))
.addEventListeners(new ChattingReaction())
.build();
}
}
2. 채팅 감지 코드 작성
이제 채팅을 감지하는 코드를 작성해보았다.
package org.github.constmine.bot.response;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
public class ChattingReaction extends ListenerAdapter {
@Override
public void onMessageReceived(MessageReceivedEvent event) {
String str = event.getMessage().getContentDisplay();
switch(str) {
case "ping" :
case "핑" :
event.getChannel().sendMessage("Pong!").queue();
break;
case "대답" :
case "reply" :
event.getMessage().reply("Reply!").queue();
break;
}
}
}
onMessageReceived는 말 그대로 메시지를 수신받았을 때 호출되는 함수이다.
event.getMessage().getContentDisplay()를 통해서 수신 받은 메시지의 내용을 받아올 수 있다.
이후 switch문으로 수신 받은 메시지의 내용이 case의 경우와 같은지 비교한다.
일반적으로 메시지를 보내는 경우에는 Channel을 가져온 후에 sendMessage()함수를 통해서 메시지를 보낼 수 있다.
근데 항상 메시지를 보내기 위해서는 queue()를 마지막에 호출해야지 메시지가 보내진다.
답변하는 형식으로 메시지를 보내는 경우에 답변할 Message를 가져온 후에. reply() 함수를 통해서 메시지에대한 답장을 할 수 있다.
"ping"과 "핑"에 일반적인 메시지를 보내는 것을 확인해보았다.
"대답"과 "reply"에는 해당 메시지에 대한 반응을 한다.
'java > DiscordBot' 카테고리의 다른 글
[DiscordBot] Java로 디스코드봇 만들기 7. 노래 재생 (2) | 2025.01.16 |
---|---|
[DiscordBot] Java로 디스코드봇 만들기 6. 슬래쉬 명령어 제작 (0) | 2025.01.13 |
[DiscordBot] Java로 디스코드봇 만들기 4. 상태 메시지 설정 (0) | 2024.02.02 |
[DiscordBot] Java로 디스코드봇 만들기 3. Github와 연동 (0) | 2024.02.02 |
[DiscordBot] Java로 디스코드봇 만들기 2. 토큰 관리 (0) | 2024.02.01 |