1. Class 생성
이전 일지에서 만들었던 response 파일아래에 SlashCommandReaction.class 를 생성한다.
이후 DiscordBot.class 로 돌아간뒤 위 클래스를 이벤트 리스너에 등록하면 된다.
다만 일지5 에서 등록하였으므로 그 뒤로 추가해주면 된다.
JDABuilder.createDefault(token)
.enableIntents(intents)
.setActivity(Activity.customStatus("명령어 기다리는 중..."))
.addEventListeners(
new ChattingReaction(),
new SlashCommandReaction())
.build();
위와같이 addEventListeners() 함수 안에 추가해주면 된다.
2. 슬래쉬 명령어 반응 코드 제작
우선 ListenerAdapter를 상속받고 onSlashCommandInteraction()과 onGuildReady()함수를 오버라이딩해주면 된다.
public class SlashCommandReaction extends ListenerAdapter {
@Override
public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
}
@Override
public void onGuildReady(GuildReadyEvent event) {
}
}
onSlashCommandInteraction() 함수에서는 이전 채팅 반응했던것과 비슷하게 코드를 구현해준다
@Override
public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
switch(event.getName()) {
case "ping":
event.reply("**Pong!**").queue();
break;
case "reply":
event.reply("**Reply!**").queue();
break;
}
}
event.reply()를 이용해 명령어에 대한 대답을 해줄 수 있다.
[ reply()함수 안에 **내용** 은 볼드체 처리이다. ]
다만 해당 함수만으로는 슬래쉬가 작동하지 않는다. 따라서 onGuildReady에서 슬래쉬 명령어를 등록해주어야한다.
@Override
public void onGuildReady(GuildReadyEvent event) {
List<CommandData> commandDatas = new ArrayList<>();
commandDatas.add(
Commands.slash("ping", "Pong을 해줍니다.")
);
commandDatas.add(
Commands.slash("reply", "Reply를 해줍니다.")
);
event.getGuild().updateCommands().addCommands(commandDatas).queue();
}
해당 코드와 같이 작성해주고 봇을 실행시켜준다.
채팅창에 /만 입력해도 가이드라인을 제공해주는 것을 볼 수 있다.
이후 /ping이나 /reply를 입력해본다.
/ping을 채팅창에 쓰기만 해도 해당 명령어에대한 가이드라인을 디스코드에서 제공해주는 모습을 볼 수 있다.
잘 작동하는 것 같다
'java > DiscordBot' 카테고리의 다른 글
[DiscordBot] Java로 디스코드봇 만들기 7. 노래 재생 (2) | 2025.01.16 |
---|---|
[DiscordBot] Java로 디스코드봇 만들기 5. 채팅에 반응하기 (0) | 2024.02.03 |
[DiscordBot] Java로 디스코드봇 만들기 4. 상태 메시지 설정 (0) | 2024.02.02 |
[DiscordBot] Java로 디스코드봇 만들기 3. Github와 연동 (0) | 2024.02.02 |
[DiscordBot] Java로 디스코드봇 만들기 2. 토큰 관리 (0) | 2024.02.01 |