IntelliJ에서 다음과 같이 새 프로젝트를 만들어 줍니다.
항목 | 값 |
---|---|
Name | 원하는 이름 |
Location | 원하는 위치 |
GroupId | 원하는 Group ID |
Language | Java |
JDK | 17 이상 |
Build system | Gradle |
그 후에 src/main/java
에 Group ID로 설정해주었던 값으로 패키지를 만들어줍니다.
예를 들어 com.example
로 만들었으면 com/example
패키지를 만들어줍니다.
그리고 해당 패키지 안에 Main.java
클래스를 만들어줍니다.
plugins {
id 'application'
id 'com.github.johnrengelman.shadow' version '8.1.1'
id 'java'
}
mainClassName = '그룹ID.Main'
version '1.0'
def String jdaVersion = '5.0.0-beta.12'
sourceCompatibility = targetCompatibility = 1.8
repositories {
mavenCentral()
google()
maven {
url "https://m2.dv8tion.net/releases"
}
maven {
url 'https://jitpack.io'
}
}
shadowJar {
destinationDirectory.set(file("$rootDir/jars"))
}
jar {
manifest {
attributes 'Main-Class': '그룹ID.Main'
}
finalizedBy shadowJar
}
dependencies {
implementation("net.dv8tion:JDA:$jdaVersion")
implementation('ch.qos.logback:logback-classic:1.4.11')
}
compileJava.options.encoding = 'UTF-8'
test {
useJUnitPlatform()
}
sourceCompatibility = JavaVersion.VERSION_16
targetCompatibility = JavaVersion.VERSION_16
그리고 mainClassName
의 그룹ID
부분과 jar > manifest > attributes
의 그룹ID
부분을 본인이 설정한 Group ID로 바꿔주면 됩니다.
그리고 gradle 파일 우측 상단에 뜨는 코끼리 모양의 버튼을 설치하면 라이브러리가 정상적으로 설치됩니다.
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
import net.dv8tion.jda.api.requests.GatewayIntent;
import net.dv8tion.jda.api.utils.ChunkingFilter;
import net.dv8tion.jda.api.utils.MemberCachePolicy;
import net.dv8tion.jda.api.utils.cache.CacheFlag;
public class Main extends ListenerAdapter {
public static void main(String[] args) throws Exception {
final String TOKEN = "YOUR_TOKEN_HERE";
JDA jda = JDABuilder.createDefault(TOKEN)
.disableCache(CacheFlag.MEMBER_OVERRIDES, CacheFlag.VOICE_STATE)
.setBulkDeleteSplittingEnabled(false)
.setMemberCachePolicy(MemberCachePolicy.VOICE.or(MemberCachePolicy.OWNER))
.setChunkingFilter(ChunkingFilter.NONE)
.disableIntents(GatewayIntent.GUILD_PRESENCES, GatewayIntent.GUILD_MESSAGE_TYPING)
.setLargeThreshold(50)
.setAutoReconnect(true)
// Your Event Listeners
.addEventListeners(
)
// Status
.setStatus(OnlineStatus.ONLINE)
.enableIntents(GatewayIntent.MESSAGE_CONTENT, GatewayIntent.GUILD_MESSAGES, GatewayIntent.GUILD_BANS, GatewayIntent.GUILD_MEMBERS, GatewayIntent.GUILD_VOICE_STATES, GatewayIntent.GUILD_EMOJIS_AND_STICKERS, GatewayIntent.GUILD_MESSAGE_REACTIONS, GatewayIntent.GUILD_MESSAGE_TYPING)
.build();
jda.awaitReady();
jda.updateCommands().addCommands(
new CommandData[]{
}).queue();
}
}
YOUR_TOKEN_HERE
부분에 자신의 봇 토큰을 집어넣은 후에 Main.java를 실행해 보시면 봇이 정상적으로 켜지는 것을 볼 수 있습니다.