이번 글에서는 코틀린으로 디스코드 봇을 만드는 법에 대해 글을 써볼려고 한다.
코틀린으로 디스코드봇을 만드는 강좌는 아직 인터넷에 많이 없고 디스코드 음악봇을 js로 만들어 보았는데 음질이 몇몇 유튜브 음원이 음질이 너무 안좋고 소리가 안들렸는데 노래하는 하리보라는 음악 봇이 코틀린으로 만들어졌다 해서 직접 만들어보았다.
코틀린이나 자바로 디코봇을 만들때 많이 쓰는 모듈로는 JDA와 DISCORD4J가 있는데 이 강좌에서는 JDA를 사용했다.
먼저 새 코틀린 프로젝트를 만들고 build.gradle에 JDA모듈을 추가해준다.
repositories {
mavenCentral()
mavenCentral()
maven {
name 'm2-dv8tion'
url 'https://m2.dv8tion.net/releases'
}
}
dependencies {
implementation "net.dv8tion:JDA:4.3.0_277"
implementation "org.jetbrains.kotlin:kotlin-stdlib"
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
implementation "net.dv8tion:JDA:Version"을 dependencies에 추가하면 된다.
다음으로 메인 파일에서 디스코드봇에 로그인 하는 함수를 만든다.
fun main() {
val builder = JDABuilder.createDefault(
"PASTE YOUR BOT TOKEN",
GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES, GatewayIntent.GUILD_VOICE_STATES
)
.build()
}
디스코드 봇 정책이 바뀌어서 4번째 줄에 GatewayIntent를 쓰지 않으면 메세지를 받아오거나 보이스 채널에 입장하는 등의 활동을 할 수 없다. 이는 모든 언어로 만든 봇에 다 해당되는 이야기다.
"PASTE YOUR TOKEN" 부분에 봇 토큰을 붙혀넣고 실행해보자.
위와같이 Login Successful과 Finished Loading! 이 뜬다면 정상적으로 잘 실행된 것이다.
토큰같은 경우에는 깃허브 같은데 유출되면 안되기 때문에 dotenv모듈등을 사용해서 .env파일에 따로 저장하는 것을 추천한다.
다행히도 디스코드에서는 봇 토큰이 깃허브에 유출되면 자동으로 토큰을 변경해준다.
다음 강좌: 메세지 이벤트를 이용한 자동응답봇