자바스크립트로 디스코드 봇 만들기 명령어 추가 01

자바스크립트로 디스코드 봇 만들기 명령어 추가 01

잘 알려진 천문학 홈페이지 중 하나인 를 디스코드 봇으로 만들어보려고 합니다. APOD에서는 매일 주목할만한 천문학 연관 이미지때때로 gif나 영상도 올라온다를 선정해 설명과 함께 업로드하는데, 평소에 동호회 단톡방에 그 내용을 정리해서 올리곤 했다. 하지만 솔직히 정리하기 귀찮기도 하고. 번역하기도 귀찮고 해서 안 한 적이 훨씬 많습니다.. 그래서 조금이라도 수고를 덜고자 카카오톡은 아니지만 디스코드에서 APOD 정보를 불러오는 봇을 만들 생각입니다.

목표하는 기능은 일단은 다음과 같다.


대표적인 intents 예시
대표적인 intents 예시

대표적인 intents 예시

0. 필수 권한 GatewayIntentBits.Guilds 1. 디스코드 서버에서 문자 정보 불러오기 GatewayIntentBits.MessageContent GatewayIntentBits.GuildMessages 2. 디스코드 개인 문자 채널 권한

등등 intents는 아래 사이트를 참조해 주세요간단한 slash command 만들기 commands 폴더에 ping.js 파일 만들기ping.js에 아래 코드 작성하기 프롬프트에서 node .register.js를실행하여 명령어를 등록하시고node index.js를 실행하여 봇을 실행시킵니다.

위의 과정을 거친다면 채팅에 ping을 입력할 시명령어가 자동으로 뜨게 됩니다.

명령어 배포하기.
명령어 배포하기.

명령어 배포하기.

Slash Commands를 소개할 때 말씀드렸었죠? 배포 하는 과정이 있다고, 배포를 하지 않으면 discord는 이 Bot이 어떤 명령어를 갖고 있는지 알 수 없기 때문에 Slash Command가 동작하지 않습니다. 따라서 우리는 Command가 뭐가 있는지 discord에 알려 주시기 바랍니다야 합니다. 코드에서 add 부분들을 추가해주세요. 이 코드는 서버가 실행 됐을 때 읽어들인 Commands들을 특정 서버에 배포해주는 역할을 합니다.

대표적인 봇 만들기
대표적인 봇 만들기

대표적인 봇 만들기

1 discord 패키지를 설치하자. Powershell 등 터미널에서 명령어를 입력해줍니다. ip install discord.py

2 각자 사용하는 IDE에서 프로젝트 폴더와 python 자료를 만든다. 이 때 python 파일명이 discord이면 안 됩니다. 또한 이 단계에서 봇의 token을 복사해주어야 하는데, Discord Developer Portal의 Bot 탭에서 copy 버튼을 클릭하시면 됩니다.

token을 확인하지 못했다면, reset token을 눌러 새로운 token을 생성해 copy합니다. 4) 작성한 python 자료를 저장하고 실행합니다. ython bot.py

5 실행하면 봇은 온라인 상태가 됩니다. 6) 다음과 같이 정상적으로 작동하면 대표적인 봇이 완성되었습니다.

명령어 추가하기.

자 그럼 명령어를 추가해봅시다. 프로젝트 내에 commands라는 폴더를 만들어주세요. 왜 만드는지는 차차 설명 드리겠습니다. 그리고 commands 폴더 안에, ping.js라는 자료를 만들겠습니다. 방금 작성한 코드는 명령어 배열을 봇에게 등록하는 코드입니다. 명령어를 index.js에 쭉 나열해서 추가할 수도 있겠지만, 그럼 구분하기도 어렵고 수정도 어렵겠죠? 그래서 명령어는 commands 폴더에서만 새로 만들어서 작성하고, 그 파일들을 읽어들여서 명령어로 만듭니다.

코드를 기술하고 실행하는 과정에서 다음과 같은 오류를 마주했다 Client.init missing 1 required keywordonly argument intents

1.5버전부터 Intents라는 것이 생기면서, 코드에서도 intents에 관한 명시를 해주어야 합니다. 제대로 어떤 매커니즘으로 작동하는지는 아직 이해하지 못했지만, 아래 두 방안으로 해결할 수 있었습니다. 1 Discord Developer Portal의 Bot 탭에서 intents 권한을 허용합니다.

2 다음 코드를 추가합니다.

0. 봇 계정 생성 및 초대

1 Discord Developer Portal에서 로그인 2 New Application을 클릭하고 Application의 이름을 짓는다. 이 때 이름이 너무 흔하면 이후 Add bot 단계에서 진행이 불가능합니다. 3 이런 화면이 나타납니다. 대표적인 봇 설정은 여기서 할 있습니다. 4 Bot 탭으로 이동해 Add Bot을 클릭합니다. 2단계 인증을 설정해 두었다면 6자리 코드를 입력해야 합니다.

Google OTP 등 2단계 인증 앱에서 코드를 확인할 있습니다. ) 5 이런 화면이 나타납니다. 6 만드러진 봇을 서버에 초대하기 위해, OAuth2 탭을 클릭합니다. 7) SCOPES에서 bot을 체크하고, 필요한 권한을 선택한 후 만드러진 URL을 복사해 접속합니다.

어때요? 그리 어렵지 않죠? 그 외에도 여러가지 이벤트와 방법이 무궁무진합니다. 특히 SlashCommand는 이전에 help 명령어 입력할 일 없이 조금 더 직관적일 수도 있다는 생각이 드네요. 그럼 다음에는 또 다른 재밌는 기술로 찾아 뵙겠습니다.

자주 묻는 질문

대표적인 intents

0 자세한 내용은 본문을 참고하시기 바랍니다.

명령어 배포하기.

Slash Commands를 소개할 때 말씀드렸었죠? 배포 하는 과정이 있다고, 배포를 하지 않으면 discord는 이 Bot이 어떤 명령어를 갖고 있는지 알 수 없기 때문에 Slash Command가 동작하지 않습니다. 자세한 내용은 본문을 참고 해주시기 바랍니다.

대표적인 봇 만들기

1 discord 패키지를 설치하자. 좀 더 자세한 사항은 본문을 참고하시기 바랍니다.