디스 코드 JDA - diseu kodeu JDA

자바진영의 새로운 DIscordAPI Client, Cacophony 를 소개드립니다!!

TL;DR

  • 기존 Client 의 불편함을 해결한 간단하고 편리한 Discord API Client 입니다
  • 체계적인 구조와 디테일보단 유연함과 단순함을 중점에 둔 라이브러리입니다
  • 디테일한 기능은 직접 JDA 를 통해 구현하실 수 있습니다
  • 자세한 내용은 깃허브 를 참고해주세요

Cacophony란?

Jda 가 불편하신 분들을 위해 만들어진 라이브러리

Cacophony 는 기존 JVM진영의 Major Discord API 클라이언트인 JDA 를 기반으로 개발된 Discord API Client Library 입니다.

기존 JDA 및 여타 Java DiscordAPI Client 들의 문제점을 해결함과 동시에 패셔너블하고 편리한 디스코드 API 클라이언트 개발 을 목표로 개발하였습니다.

어떤 불편함이 있었나요?

  • 간단한 기능, 복잡한 코드
    간단한 기능을 구현하려 해도 EventListenerClass 부터 비즈니스로직Class 까지 구현해야하는 불편함
  • 그래서 길드가 뭔가요?
    비표준 용어 사용으로 인한 Client 사용의 어려움
  • 이벤트, 다만 100보다 많은
    과할정도로 많은 이벤트 종류와 이벤트에 대한 부실한 설명으로 인한 각 이벤트에대한 해석의 어려움
    실제로 non deprecated 이벤트만 100개가 넘습니다.

그래서 Cacophony는

  • 간단한 기능, 더욱 간단한 코드
    when - do 블럭으로 이루어진 Flow System 을 구축하여 간단하게 봇을 개발할 수 있도록 하였습니다!
  • 길드에서 서버로
    기존 JDA 에서 사용하던 Guild 라는 단어를 Discord 공식 용어인 Server 로 변경하였습니다. 그리고 개인 메세지를 뜻하는 PrivateMessage 를 우리에게 조금 더 친숙한 용어인 DM(DirectMessage) 로 변경하는 등,
    더이상 네이밍으로 헷갈릴 일이 없도록 하였습니다.
  • 이벤트는 필요한것만
    봇 개발에 잘 사용하지 않는 이벤트들은 과감히 제거하고, 주로 사용되는 이벤트들만으로 클라이언트를 구성하였습니다
    만약 디테일한 이벤트가 필요할경우, 직접 JDA Event Listener 를 구현하실 수 있습니다!
  • 하지만 완벽하진 않기에
    버리고 단순화한것들이 많은 만큼, 디테일을 원하는 개발자분들에겐 Cacophony 가 또다른 불편으로 다가올 수 있기에, 직접 JDA 를 통해 여러 detail 을 추가하실 수 있도록 하였습니다!

어떻게 사용할 수 있나요?

코드 단 한줄만으로도 Cacophony 를 시작하실 수 있습니다!

Cacophony 는 Maven Central 에 등록되어있습니다. 따라서 Gradle, Maven 등의 의존성 관리도구를 통해 시작하실 수 있습니다!

또한, Spring의 편리함을 알고있기에, SprinBoot 에서 동작할 수 있는 cacophony-spring-boot-starter 모듈 또한 지원하고있습니다!

Java(Vanilla)에서 설치하기!

With Gradle

repositories { mavenCentral() } dependencies { //gradle 버전이 낮은경우, 'implementation' 을 'compile' 로 바꾸어주세요! implementation 'io.github.key-del-jeeinho:cacophony-lib:VERSION' }

With Maven

<dependencies> <dependency> <groupId>io.github.key-del-jeeinho</groupId> <artifactId>cacophony-lib</artifactId> <version>VERSION</version> </dependency> </dependencies>

다른 의존성 관리도구에서의 사용법은 다음문서 를 참고해주세요!

SpringBoot에서 설치하기!

With Gradle

repositories { mavenCentral() } dependencies { //gradle 버전이 낮은경우, 'implementation' 을 'compile' 로 바꾸어주세요! implementation 'io.github.key-del-jeeinho:cacophony-spring-boot-starter:VERSION' }

With Maven

<dependencies> <dependency> <groupId>io.github.key-del-jeeinho</groupId> <artifactId>cacophony-spring-boot-starter</artifactId> <version>VERSION</version> </dependency> </dependencies>

다른 의존성 관리도구에서의 사용법은 다음문서 를 참고해주세요!

🔔 많은 사용 부탁드립니다!!!
자세한 내용은 깃허브 를 참고해주세요

먼저 디스코드 사이트에 회원가입 후 로그인합니다.

우리가 이제부터 만들 로봇이 활동할 서버를 만들어야 합니다. 디스코드 메뉴의 좌측에 있는 + 버튼을 눌러서 서버를 추가하는 메뉴로 들어갑니다.

서버만들기를 클릭합니다.(인터페이스는 디스코드 버전에 따라 달라질 수 있습니다. )

그리고 서버 이름과 아이콘, 서버위치를 선택하고 만들기를 클릭합니다.

성공적으로 서버를 만들었다면 봇을 만들어봅시다. 개발자 메뉴로 들어갑니다.

//discordapp.com/developers/applications/ 그리고 우측 상단에 New Application을 눌러줍니다.

그리고 어플리케이션의 이름을 선택하고 create 버튼을 눌러서 만들어줍니다.

(여기서 봇을 만드는 것이 아니라 어플리케이션을 개발하는 겁니다.)

어플리케이션중 Bot을 추가하기 위해 좌측 메뉴에서 Bot을 선택하고 Add Bot 버튼을 클릭합니다.

만들 Bot은 오로지 텍스트를 전송하는 역할로만 사용할 것이기 때문에 Text Permissions에 Send messages를 체크해줍니다.

봇을 만드는 것은 이게 다입니다. 이제 oAuth2를 클릭하여 이 봇을 배치하도록 하겠습니다.

아래쪽의 bot을 선택하면 url주소와 이 봇이 가져갈 권한을 셋팅하는 창이 나옵니다. 다음과 같이 send messages 만 체크해줍니다.

  

체크가 끝났다면 나타난 url을 복사하여 웹브라우저에 붙여넣고 접속합니다.

그럼 그림과 같이 봇을 접속할 서버를 선택하라고 합니다. 이전에 만들었던 서버를 선택하고 봇을 추가합니다.

우리가 만든 서버로 가보면 yybot이 등장해 있을 것입니다. bot을 만들 준비는 이제 끝났습니다. eclipse를 키고 gradle project를 만들겠습니다. (우리가 사용할 Java Discord Api – JDA 가 mave에는 제대로 업데이트가 안되고 있어서 gradle로 사용하였습니다. )

new -> other -> gradle project를 만들고 이름을 discordbot이라고 짓습니다.

그리고 Finish 버튼을 눌러서 프로젝트를 생성합니다. Gradle 빌드도구가 프로젝트를 생성하기 시작합니다.

생성된 프로젝트를 보면 build.gradle이라는 파일이 있습니다. 해당 파일을 더블클릭하여 열어주고 다음과 같이 dependency를 기록합니다.

<build.gradle>

/* * This file was generated by the Gradle 'init' task. * * This generated file contains a sample Java Library project to get you started. * For more details take a look at the Java Libraries chapter in the Gradle * user guide available at //docs.gradle.org/5.0/userguide/java_library_plugin.html */ plugins { // Apply the java-library plugin to add support for Java Library id 'java-library' } repositories { // Use jcenter for resolving your dependencies. // You can declare any Maven/Ivy/file repository here. jcenter() } dependencies { // This dependency is exported to consumers, that is to say found on their compile classpath. api 'org.apache.commons:commons-math3:3.6.1' // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'com.google.guava:guava:26.0-jre' // Use JUnit test framework testImplementation 'junit:junit:4.12' // //mvnrepository.com/artifact/net.dv8tion/JDA compile group: 'net.dv8tion', name: 'JDA', version: '4.0.0_45' }

gradle은 maven과는 달리 값을 넣자마자 빌드되지는 않습니다. 수동으로 빌드를 해주어야 빌드가 진행됩니다. 프로젝트에 우클릭후 나오는 메뉴에서

Gradle -> refresh project를 클릭합니다. 성공적으로 빌드가 이루어지면 그림과 같이 새로운 패키지들이 들어올 것입니다.

이제 프로젝트에서 JDA를 사용할 수 있습니다. 이것으로 개발 준비는 끝입니다.

관련 게시물

Toplist

최신 우편물

태그