저번 글에 이어서 이번에는, 디스코드 봇을 직접 만드는 법에 대해 알려드리려 합니다. 혹시라도 이전 글을 안보신 분들은 여기를 먼저 읽으신 후 다시 오시길 바랍니다.
그럼, 시작해 보죠.
JAVA로 디스코드 봇 만들기
어떤 JAVA 프로젝트던, 자바의 모든 것을 이루는 '클래스'는 필요합니다. 먼저 기본 클래스(메인 클래스)를 생성합시다.
현재 우리가 해야 되는 일은 특별한 뭔가를 상속받거나 한 class를 만드는 것은 아니고, 그냥 코드가 실행되게 하기 위한 클래스를 만드는 것이기 때문에 그냥 아무것도 없는 클래스를 만들거나 main 함수가 있게 해 주는 기능이 있다면, 그걸로 만들어 주면 됩니다.
그럼, 간단한 예제와 함께 시작해볼까요?
API 사용하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import com.google.common.util.concurrent.FutureCallback; import de.btobastian.javacord.DiscordAPI; import de.btobastian.javacord.Javacord; import de.btobastian.javacord.entities.message.Message; import de.btobastian.javacord.listener.message.MessageCreateListener; public class jam { static public void main(String args[]){ DiscordAPI api = Javacord.getApi("토큰", true); api.connect(new FutureCallback<DiscordAPI>() { public void onSuccess(final DiscordAPI api) { api.registerListener(new MessageCreateListener() { public void onMessageCreate(DiscordAPI api, Message message) { if(message.getContent().equals("ping")){ message.reply("pong!"); } } }); } public void onFailure(Throwable t) { t.printStackTrace(); } }); } } | cs |
하나하나 클래스를 찾고 붙여놓는건 시간도 오래걸리고, 재미도 없을뿐더러 무엇보다 봇을 만드는 일은 아주 기대되는 일이기 때문에! 그냥 간단한 예제 하나를 가지고 쉽게 이해를 하도록 가져와봤습니다.
위 소스에서 public class 명인 jam만 자신의 java 파일명에 맞게 고치고, 위에 있는 '토큰' 이라는 글자만 자신의 토큰으로 바꿔껴주면 잘 작동합니다.
Javacord.getApi("토큰", boolean);
먼저, 자바코드를 사용하기 위한 가장 첫번째 일입니다. 봇에다가 연결을 해 주는 일인데요. 연결을 하기 위해서는 봇 계정이나 실제 계정이 필요한데, 봇 계정을 만들기 위한 방법으로는 여기를 보시면 되겠습니다. 만약에 봇 계정을 이미 만들었고 토큰도 안다 하는 분들은, 그냥 진행하시면 됩니다.
위 함수는 Discord에서 발급해준 토큰을 이용하여 Discord 서버와의 통신을 준비합니다. (그리고 DiscordAPI class를 반환합니다) 첫번째 인수로는 String 형식인 토큰이 들어가고, 두번째에는 봇 계정인지의 여부로 boolean 값이 들어갑니다. 일반적으로 봇 계정을 따로 만들었다면 그냥 true로 해 두면 됩니다.
api.connect(FutureCallback<DiscordAPI>)
getApi가 준비 과정을 해주었다면, 이 함수는 이제 실제 연결에 들어갑니다. 인수로는 callback이 들어가, 결과에 따라 콜백 함수를 호출합니다. 이 안에는 onSuccess와 onFailure가 들어갈 수 있는데요, onSuccess 안에는 성공적으로 통신을 시작했을 때 일어나는 행동을 기술하면 되고, onFailure는 반대랍니다. (실패했을때)
api.registerListener(리스너)
registerListener는 말그대로, 리스너를 등록해주는 함수입니다. 예를 들어 메시지가 왔다거나 강퇴를 당했다거나 등등 이런 이벤트들이 발생하면 안에 있는 리스너가 작동됩니다.
그리고, 그 안에 리스너를 호출하면서 같이 인수로 넘어오는 객체는 대표적으로 Message가 있는데, 이 Message 객체 안에는 메시지에 관한 정보들과 메서드들이 담겨 있게 됩니다. 이걸 이용해서 사용자의 이름을 알아내거나, 그 사람에게 1:1 메시지를 보낸다거나 하는 것이 가능합니다. 물론 JAVA이기에 Getter와 Setter 방식으로 이루어져 있답니다.
콘솔 로그에는 잘 작동됬다고 뜹니다. 그리고, 서버에 봇을 추가해 주면 됩니다. ping, pong! ping이라고 보내면 pong이라고 오는 봇이 만들어졌습니다. 완성.
이제, javacord API의 문서도 참고해보고 하면서 봇을 만들어가면 됩니다. 그럼 즐거운 봇 개발 되시길.
이만.
'프로그래밍 > 디코봇 만들기' 카테고리의 다른 글
Node.js 디스코드 봇 만들기 # 음성봇 (0) | 2018.06.23 |
---|---|
JAVA 디스코드 봇 챗봇 만들기 - 1, 라이브러리 설치 (0) | 2018.01.17 |
Node.js 디스코드 봇 챗봇 만들기 (0) | 2018.01.16 |