본문 바로가기

개발/discord BOT

[디스코드 봇 개발] - #2 봇 초대, 온라인, JDA

목차

     


    봇 초대하기

     

    Discord Developer Portal — API Docs for Bots and Developers

    Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.

    discord.com

    Discord Developer Portal - OAuth2에서 SCOPES을 bot에 체크하면

    BOT PERMISSIONS칸이 뜨는데 원하는 권한을 체크해주면

    맨 아래에 URL이 생성됩니다.

     

    생성된 URL을 통해 서버에 봇을 초대합니다.

     

     

     

    서버에 초대 완료하였습니다.

     

    이제 오프라인 되어 있는 봇을 온라인으로 돌려보겠습니다.

     

     

    봇 온라인

    프로젝트 생성

    IDE는 인텔리제이를 사용하였습니다.

    프로젝트를 생성해줍니다.

     

    의존성 추가

    repositories {
        mavenCentral()
        maven { url "https://jitpack.io" }
    }
    
    dependencies {
        implementation 'net.dv8tion:JDA:5.0.0-beta.18'
        implementation 'dev.arbjerg:lavaplayer:2.0.4'
    }

     

     

     

    의존성 추가 해줍니다.

    Discord용 오디오 플레이어 라이브러리도 추가해주었습니다.

     

    각 문서 링크는 아래에 있습니다.

     

    JDA 다운로드 문서

     

    GitHub - discord-jda/JDA: Java wrapper for the popular chat & VOIP service: Discord https://discord.com

    Java wrapper for the popular chat & VOIP service: Discord https://discord.com - GitHub - discord-jda/JDA: Java wrapper for the popular chat & VOIP service: Discord https://discord.com

    github.com

    LavaPlayer 문서

     

    GitHub - lavalink-devs/lavaplayer: Lavaplayer fork maintained by Lavalink

    Lavaplayer fork maintained by Lavalink. Contribute to lavalink-devs/lavaplayer development by creating an account on GitHub.

    github.com

     

    JDA 객체 생성

    JDA jda = JDABuilder.createDefault("token").build();

    메인 메서드에서 JDA 객체를 생성합니다.

     

    토큰은 Bot - Build-A-Bot에서 가져올 수 있습니다.

     

    프로젝트를 실행하면

    온라인이 되었습니다.

    객체 생성 문서

     

    GitHub - discord-jda/JDA: Java wrapper for the popular chat & VOIP service: Discord https://discord.com

    Java wrapper for the popular chat & VOIP service: Discord https://discord.com - GitHub - discord-jda/JDA: Java wrapper for the popular chat & VOIP service: Discord https://discord.com

    github.com

     

     

    SLF4J

    로깅 프레임워크

     

    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

    JDA는 SLF4J를 사용하여 메시지를 기록하기 때문에 빌드 경로에 추가해야 합니다.

    추가하지 않으면 위와 같은 메시지가 콘솔에 출력됩니다.

    JDA는 현재 SLF4J 구현이 없는 경우 대체 로거를 제공합니다.

    하지만 속도를 향상시키고 로거를 사용자 정의하고 파일에 기록할 수 있으므로 하나를 사용하는 것이 좋습니다.

     

    implementation 'org.slf4j:slf4j-api:2.0.9'
    implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.4.11'

    의존성 추가해줍니다.

     

    SLF4J는 인터페이스만 존재하고 구현체는 존재하지 않습니다.

    그래서 프로젝트를 직접 실행하는 경우 해당 라이브러리가 포함되지 않아 로그가 나타나지 않습니다.

     

    프로젝트를 직접 실행하는 경우 로그를 찍고 싶다면 testImplementation을 implementation으로 수정하면 됩니다. (logback)

     

     

    그리고 logback 구성은 resource 디렉터리에 있어야 합니다.

    src/main/resources/logback.xml를 추가합니다.

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %boldCyan(%-34.-34thread) %red(%10.10X{jda.shard}) %boldGreen(%-15.-15logger{0}) %highlight(%-6level) %msg%n</pattern>
            </encoder>
        </appender>
    
        <root level="info">
            <appender-ref ref="STDOUT" />
        </root>
    </configuration>

     

    SLF4J 문서

     

    GitHub - discord-jda/JDA: Java wrapper for the popular chat & VOIP service: Discord https://discord.com

    Java wrapper for the popular chat & VOIP service: Discord https://discord.com - GitHub - discord-jda/JDA: Java wrapper for the popular chat & VOIP service: Discord https://discord.com

    github.com

     

    Logging (SLF4J) - JDA Wiki

    Logging (SLF4J) When you setup a JDA project you should also setup a logging implementation for SLF4J. This is only necessary if you get a warning like this on startup: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to n

    jda.wiki

    의존성 추가

    SLF4J
    https://mvnrepository.com/artifact/org.slf4j/slf4j-api

    Logback
    https://mvnrepository.com/artifact/ch.qos.logback/logback-classic/1.4.11

    SLF4J 관련 참고 포스팅
    https://choiyb2.tistory.com/147