본문 바로가기

프로그래밍/디코봇 만들기

Node.js 디스코드 봇 챗봇 만들기

디스코드 봇이라고 들어보셨나요? 디스코드 봇은 특정 디스코드 채팅방에 관리자가 초대를 해, 그 채팅방에서 특정 기능을 도와주거나 하는데요. 이런 봇들을 만들기 위해서는 Discord API 페이지를 세심히 읽어보고 여러가지를 해 주어야 하는데요. 처음 접할 때에는 많이 힘들 것입니다.

하지만, 확장성이 뛰어나고 변화가 빠르고, 잠깐 동안 몇십개의 모듈이 생산되는 'Node.js'를 사용하는 분들은, 그렇게 힘든 삽질을 하지 않아도 될 것 같습니다. 벌써 디스코드 봇 모듈이 나왔거든요!

그럼, 이 모듈을 어떻게 사용하는지 알아봅시다.




discord.js 모듈 사용하기!


Discord.js 모듈을 사용하기 전, 이 모듈을 설치해주어야 됩니다. package.json의 dependencies 항목에 추가를 하거나, 프로젝트 폴더에서 cmd를 실행시켜 npm install discord.js 를 실행시켜주세요.



npm install 명령으로 discord.js 모듈을 성공적으로 설치했다면, 위에 나온 사진처럼 로그가 출력됩니다. ERR 나, 빨간색 글씨가 나오지 않았다면 대부분 설치가 성공적으로 된 겁니다.


이제, discord.js 모듈을 깔았으니 직접 사용해 봅시다.


봇 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const Discord = require("discord.js");
const client = new Discord.Client();
 
client.on("ready", () => {
  console.log("준비 완료!");
});
 
client.on("message", message => {
  if (message.content == "ping") {
    message.reply("pong");
  }
});
 
client.login("*토큰*");
cs

(위 코드는 ECMAScript 식 문법을 사용합니다. const는 상수입니다.)

Client 객체 생성

먼저, Discord 상수에 require 함수를 이용하여 discord.js 모듈을 로드해 줍니다. 그리고 client 에다가는, Discord.Client 객체를 생성해 줍니다. Discord.Client는 디스코드 접속자 객체로, 이게 있어야 다른 기능들을 이용할 수 있답니다.


Client 객체 이벤트

Node.js의 가장 큰 특징! 이벤트와 콜백입니다. client.on 으로 ready, message와 각종 이벤트들을 받을 수 있습니다.


Message 객체

client.on message 같은 이벤트에서는 콜백 함수의 인자로 Message 객체가 돌아옵니다. 이 안에는 메시지의 내용을 판별하거나 사용자의 정보를 담고 있는 속성도 있고, 답장을 보내거나 반응을 추가하는 등의 행동을 하는 메소드도 있습니다.

위 예제에서는 message.content 를 이용하여 'ping' 이라는 메시지가 오면, reply 함수를 이용해 pong이라고 답장을 해 줍니다.


Client.login(토큰)

Client 객체를 생성하면, 그 안에 있는 login 함수를 이용해 봇을 로그인시키고 작동을 시작할 수 있습니다. 이 함수에는 인수로 토큰이 들어가는데요. String 형식으로, 사용자 계정의 토큰을 이용하던가, 봇 전용으로 만든 토큰을 이용하면 됩니다. 봇 전용 토큰을 발급하길 원하신다면 여기를 보세요.

http://jam-ws.tistory.com/10




실행을 해 보면, '준비 완료!' 라는 메시지가 뜹니다. 이렇게 되면, 봇이 디스코드 서버와의 통신을 시작했고 이제 봇을 사용할 수 있게 된 것입니다. 이제, 봇의 계정이나 봇을 초대해 주면 됩니다. 봇 전용 계정의 경우에는 초대하기 위해서 다음 과정을 거쳐야 됩니다.

관리 페이지에 들어가서 Generate OAuth2 URL 버튼을 눌러 줍니다.


그리고, 아래쪽에 생성된 URL을 'COPY' 버튼으로 복사해 접속해줍니다.

접속해 주면 위와 같은 창이 뜨는데, 여기에서 자신이 봇을 넣고 싶은 서버를 선택해 주고 승인 버튼을 눌러 주면 됩니다. 봇이 서버에 들어갑니다!



핑퐁핑퐁. 핑퐁봇이 잘 되받아쳐 줍니다. 핑퐁핑퐁핑퐁~

아직 많은 기능을 사용하지 않아서 이런 단순한 작업만 가능한 것 처럼 보이지만, 실제 Discord API 를 보면, 훨씬 많은 기능을 이용할 수 있답니다. 디스코드 봇에 대해서 더 알아보고 싶으시다면 다음 주소로 들어가시면 됩니다.

https://discord.js.org/#/docs/main/stable/general/welcome


디스코드js 문서 페이지니, 잘 활용하시길 바랄게요. 다음에는 더 유익한 정보 가지고 오겠습니다. 그럼 이만~