개인 자료란 (JE)

  서버 커뮤니티

Profile lukekeum 대표칭호 없음
Profile

JavaScript

[ JavaScript로 디스코드 봇 만들기 ] 1강 봇 생성 및 실행하기

2020.01.24 조회 수 8963 추천 수 0

이번 강의는 [ JavaScript로 디스코드 봇 만들기 ] 0강 준비물 을 보고 오셔야 진행이 가능합니다.

번거로우실 수 있으시겠지만 부탁드립니다.


안녕하세요

자, 드디어 첫 번째 시간입니다. 

이번시간에는 디스코드 봇을 생성하고 실행을 해보는 시간을 가져보겠습니다.

그럼 먼저 봇을 생성하는 것 부터 해볼까요?


디스코드 봇 생성

디스코드 봇을 생성하실려면 먼저 여기로 들어가주세요

들어가신 후, NewApplication을 클릭하고 원하는 이름을 적어주세요.

이번 강좌에서는 우린 "Tutobot"으로 정하겠습니다.

그리고, 클라이언트 아이디를 복사하여 메모장에 붙여넣어 줄게요.

TIP

어플리케이션의 이름은 나중에 다시 바꾸실 수 있습니다


이후 Bot으로 이동하여 AddBot을 클릭해서 새로운 봇을 생성합니다.

토큰 TOKEN

WARNING

여기서 부터는 진짜 중요합니다. 그러므로 집중해 주세요. 

이번에는 여러분들에게 보안적인 것 뿐만 아니라 봇 토큰에 대하여 알려드리겠습니다

봇을 만드셨다면, 아래와 같은 화면이 뜰것입니다.

c6748b4a18774ef0eac2c652a184881e.PNG

이 패널에서는 디스코드 봇의 프로필 을 바꾸실 수 있고, 닉네임도 바꾸실 수 있고, PUBLIC 봇 or PRIVATE봇 인지 설정할 수 있습니다.

우리는 일단 토큰을 얻어야 하니, TOKEN 밑에 있는 COPY 버튼을 눌러 메모장에 일단 붙여넣어줍시다

.

그래서, 토큰이 뭔데?

토큰은 디스코드 봇의 비밀번호와 같습니다. 봇은 디스코드에 로그인을 할 때 TOKEN(토큰)을 사용합니다. 만약, TOKEN이 타인에게 있다면, 그 사람은 당신의 디스코드 봇에 맘대로 로그인을 할 수 있습니다. 그만큼 위험하단 말이죠. 그러므로, 타인과는 자신의 디스코드 봇의 토큰을 절대 공유해서는 안됩니다.


디스코드 봇 서버에 추가하기

여기까지 따라오셨다면, 봇이 만들어져 있어야 합니다. 

하지만, 이게 아직 아무 서버에도 추가가 되지 않았습니다. 

어떻게 해야할까요?


봇 서버에 추가하는 주소


https://discordapp.com/oauth2/authorize?client_id=클라이언트 아이디&scope=bot

여기에서 저기 "클라이언트 아이디"에 아까 우리가 메모장에 복사해뒀던 클라이언트 아이디를 붙여넣어주면 됩니다.

이후, 추가해줄 서버를 선택하여 추가해주시면 됩니다.

050d019ec66f8ba8f70cbfee401d5036.PNG

만약 위와 같은 반응이 일어난다면, 제대로 추가를 하신 것입니다.

축하합니다. 이후, 디코 서버에 들어가 보시면, 

d1e38a15ae8038f12f31c316d197b2e1.PNG

이런식으로 Tutobot이 추가가 된 것을 확인할 수 있습니다.


디스코드 봇 로그인하기

자 드디어 이번 강좌에서 가장 신나는! 디스코드 봇에 로그인하기 입니다. 위와 같이 잘 따라와 주셨다면, 분명히 잘 하실 수 있으실껍니다.

이번 단계에서는 드디어 코딩을 할 것입니다.


아까 우리가 만들었던 폴더(discordBot)을 열어, 'index.js'를 추가해줄게요

그리고, 아까 우리가 켰던 Visual Studio Code를 켜 'index.js'에서 다음과 같이 써줄게요.

const Discord = require(`discord.js`); // discord.js를 불러옴
const client = new Discord.Client(); // 새로운 디스코드 클라이언트를 만듬
// 만약에 클라이언트가 준비되었다면, 아래의코드를 실행합니다
// 이 이벤트는 봇이 로그인 되고 한번만 실행될것입니다
client.once('ready', () => {
  console.log("디스코드 봇이 준비되었습니다");
});

// 여러분의 디스코드 토큰으로 디스코드에 로그인합니다
client.login(`여러분들의 토큰이 여기에 있어야 해요`);

자, 이렇게 하시고, 콘솔에다가 "node index.js" 를 쳐 실행을 합니다. 그리고 난 이후, 콘솔창을 확인해 보시면, "디스코드 봇이 준비되었습니다"라고 띄워져 있는 것을 확인하실 수 있습니다. 그리고 디스코드를 확인해 보시면,


9955ccd3ae53e2a283c7f137992c32c4.PNG

이런식으로 봇이 온라인으로 된 것을 확인하실 수 있습니다.

이런식으로 봇이 온라인 된 것을 확인하시면, 이제 커맨드를 만드시고 싶으신 욕심이 나실껍니다.

자, 그럼 기본적인 명령어를 한번 만들어볼까요?

TIP

참고로 node index.js가 귀찮으시다면, node . 으로 더 간편하게 실행이 가능합니다


플레이어가 보낸 메시지 확인하기

먼저, 우리는 플레이어가 어떤 메시지를 입력을 하였는지 알아보아야 합니다. 

그래야지 커맨드를 설정을 하던가 말던가 할 수 있겠죠.

일단은 콘솔(명령어 프롬프트)에 들어가 Ctrl + C 를 눌러 잠시동안 디스코드 봇을 오프라인 상태로 바꾸겠습니다.

이후 다시 애디터( Visual Studio Code )로 돌아가 다음과 같이 입력해줍니다.

client.on('message', message => {
  console.log(message.content);
});

WARNING

위의 코드는 client.login() 위에 올라가야합니다.

자, 우리가 방금 적었던 코드와 아까 쓴 코드의 차이점이 있다면, 그것은 .once 와 .on입니다.  .on은 .once와는 다르게 여러번 실행이 가능하단 말입니다.

자, 방금 적었던 코드를 저장하시고, "node ."를 사용하여 디스코드 봇을 다시 로그인 시켜줍니다.

이후, 디스코드에서 아무 메시지를 입력하면 입력한 메시지가 콘솔창에 뜨게됩니다.

이를 활용하여 우리는 이제 커맨드를 만들겁니다.


기본적인 응답명령어 만들기

우리가 방금 썼던 코드에서 console.log(message.content)부분을 아래의 코드로 대체해줄게요

if (message.content === "!ping" ) {
  // "Pong"으로 되돌려 칩니다.
  message.channel.send("Pong");
}

이러한 식으로 하고 다시 Ctrl + C, node . 으로 다시 실행해 줄게요. 이후, 디스코드에서 만약에 우리가 !Ping이라고 쳤을 경우, 봇은 Pong이라고 답을 합니다.

아래의 사진과 같이요.

6cf0ee12764f237ce7729287449e496d.PNG


수고하셨습니다

오늘 우리는 디스코드 봇을 만들고, 간단한 커맨드까지 만들어보았습니다. 다음시간에는 좀 더 효율적인 config.json 강의로 돌아오겠습니다.

수고하셨습니다59039e709e6d86529a877e802f204a33.png


https://discord.gg/2gxSqWu - 마인크래프트 개발자 디스코드

9개의 댓글

HELLO!
2020.02.03

자바 잘 배워야겠네요...!

lukekeum
2020.02.05
@HELLO!

자바하고 자바스크립트는 다른 언어긴 해요. 하지만, 이번 강의를 통해서 뭐 조건문 정도는 알 수 있지 않을까 싶네요.

만약에 이번 자바스크립트 강좌가 끝나면, 자바로도 봇을 만드는 것을 강의할 생각도 있어요.

현재는 다음 강좌를 위해서 문서를 조금 더 검색하고 있어서;; 최대한 이해하기 쉽도록 작성할려고..

FIB_WARNING
2020.04.08

파이썬으로 하는거 다른거 보고하다가 어디선지 막혀서 그냥 포기햇습니다 ㅎㅎㅋㅋㅋㅋㅋ

lukekeum
2020.04.08
@FIB_WARNING

아앗... ㅜㅜ

rhdtkTldps
2020.05.19

아까 만들었던 폴더가 뭔뜻인가요..?

ingpungya
2020.06.03

0일차부터 잘따라햇는데 Error: Cannot find module 'discord.js' 에러가 나네요 ㅠㅠ

리펙스
2020.12.23
@ingpungya

cmd에 npm install discord.js 입력을 하면됩니당. 저기위에있는 에러는 discord.js라는 모듈이 없다는겁니다

ingpungya
2021.01.15
@리펙스

당연히 했지요..

그런데도 에러가 지속되서 그냥 JDA로 넘어갔습니다...

닝닝_0311
2021.08.03

index.js 이게 뭔가요ㅜㅜ

 

뉴스 및 창작물
/files/thumbnails/576/775/003/262x150.crop.jpg?20240426232553

아티클

이달의 블록: 단단한 진흙

학교가기싫다

2024-04-26

0

/files/thumbnails/115/774/003/262x150.crop.jpg?20240426223813

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1