Discord

Discord.js를 활용한 디스코드 봇 만들기 - 1 (봇 생성하기)

ukong0324 2023. 11. 6. 00:45

 

 

1. 봇 생성하기

먼저 이 링크를 클릭하여 디스코드 개발 포탈에 접속하고, 로그인을 해야 한다.

그러면 아래와 같은 화면이 뜰 텐데, 오른쪽 위에 있는 "New Application" 을 누른다. 

< 디스코드 개발자 포털 로그인 후 화면 >

그러면 봇에 대한 이름을 작성하고, ToS와 디스코드 정책에 대한 동의를 누르고 "Create" 버튼을 누른다.

위와 같은 화면이 나오는데, Description은 봇 프로필을 눌렀을 때 나오는 설명 내용이고, Tags는 봇에 대한 기능을 태그로 설명하는 것이라고 한다.

이제 봇을 액세스 할 수 있는 토큰을 얻어야 하는데, 왼쪽에 있는 Bot을 누르고 Reset Token을 눌러서 인증 후 Copy를 눌러서 잘 저장해 두길 바란다.
토큰은 봇을 엑세스 할 수 있는 계정 키라고 생각하면 편한다. 따라서 이 키를 자신 이외에 다른 곳에 공유하지 말아야 한다. 제발요... 😡

 

2. 패키지 생성 및 필요한 패키지 설치 

우리는 작업을 시작하기 전 패키지를 생성해야 한다. 따라서 아래와 같이 명령어를 쳐서 작업해야 한다.

npm init

그러면 패키지 이름과 버전, 패키지에 대한 설명, 실행 시작 파일 경로, 테스트, Git 저장소, 패키지 키워드, 원작자, 라이센스가 존재할 것이다. 필요에 따라 내용을 채워주면 될 것이다.

나는 아래와 같이 package.json 파일이 생성되었다.

{
  "name": "discord.js_tutorial",
  "version": "1.0.0",
  "description": "discord.js bot tutorial",
  "main": "./src/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Ukong0324/discord.js_tutorial.git"
  },
  "author": "Youbin Choi",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Ukong0324/discord.js_tutorial/issues"
  },
  "homepage": "https://github.com/Ukong0324/discord.js_tutorial#readme"
}

패키지를 생성하였으니 이제 필요한 모듈을 설치하려고 한다. 아래의 명령어를 통해 설치하길 바란다.

npm i discord.js

그러면 discord.js와 필요한 모듈들을 자동으로 설치될 것이다. 이러한 설치 방식은 파이썬의 pip와 비슷하다고 보면 된다.

 

3. 봇 개발하기

봇을 개발하기 위해 나는 소스 관리를 하기 위하여 별도로 src 폴더를 생성하고 그 안에 index.js 라는 파일을 생성하였다.
그리고 토큰을 이용하여 봇을 로그인하려고 하는데, json 파일로 따로 관리하려고 한다. 그러면 경로는 아래와 같다.

개발폴더
  └-- src
        └-- index.js
   └--- config.json

 

./src/index.js

const { Client, GatewayIntentBits, Events } = require('discord.js'); // 패키지 불러오기
const { token } = require('../config.json'); // 설정 파일 불러오기

const client = new Client({ intents: [GatewayIntentBits.Guilds] }); // client 인스턴스 생성 

client.once(Events.ClientReady, client => { // ClientReady 이벤트 
	console.log(`${client.user.tag} | 로그인 하였습니다.`); // 어떤 애플리케이션으로 로그인하였는지 출력
});

client.login(token); // 봇 로그인하기

./config.json

{
    "token": "your_token_here"
}

 

코드를 다 작성하였다면 개발 폴더 경로 위치에서 node . 치고 엔터 누르면 봇이 작동된 것을 확인할 수 있다.

ClientReady 이벤트는 클라이언트가 준비되었을 때 작동되는 이벤트이다. 따라서 로그인하고 모든 준비를 다 마친 상태에서 어떤 클라이언트로 로그인하였는지를 출력하기 위해 위와 같은 코드를 작성하게 되었다.

다음에는 슬래시명령어를 만들어볼 예정이다. 내용 준비되는대로 포스팅 할 예정이니 많은 관심바란다.