[ JDA ] 환경 설정

jwkwon0817·2023년 9월 2일
0

Bot

목록 보기
2/6
post-thumbnail
post-custom-banner

IntelliJ에서 다음과 같이 새 프로젝트를 만들어 줍니다.

설정

항목
Name원하는 이름
Location원하는 위치
GroupId원하는 Group ID
LanguageJava
JDK17 이상
Build systemGradle

그 후에 src/main/java에 Group ID로 설정해주었던 값으로 패키지를 만들어줍니다.

예를 들어 com.example로 만들었으면 com/example 패키지를 만들어줍니다.


그리고 해당 패키지 안에 Main.java 클래스를 만들어줍니다.


build.gradle

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 파일 우측 상단에 뜨는 코끼리 모양의 버튼을 설치하면 라이브러리가 정상적으로 설치됩니다.


Main 클래스 코드 템플릿

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를 실행해 보시면 봇이 정상적으로 켜지는 것을 볼 수 있습니다.

profile
SRIHS 119th SW
post-custom-banner

0개의 댓글