본문 바로가기

[근무일지] LV_intern

[디스코드 알림봇 만들기 1] aws의 lambda 함수 이용 _2021.09.07.

 TODAY's GOAL 

평소 사용하는 메신저인 디스코드를 이용해 딥러닝 시 학습이 완료되면 알람을 보내주거나,

크롤링봇을 작동시킬 때 크롤링이 완료되면 혹은 예상치 못한 에러로 중단되면 알림을 보내주는

알림봇을 만들고자 합니다.

 


 

디스코드 봇을 만드는 방법은 크게 두가지가 있는데, aws의 lambda 함수를 이용하거나 디스코드에서 배포하는 discord.py 패키지를 설치해서 이용하는 것 입니다. 이번 포스팅에서는 aws의 lambda 함수를 이용하는 방법부터 살펴보겠습니다.

 

 

aws의 lambda 함수 이용하기

 

 

 

 

AWS Lambda는 서버리스 컴퓨팅 서비스로서, 서버를 직접 만들어서 개발하는 것 보다 훨씬 쉽고 간단해서 디스코드봇을 만드는 데도 적절합니다. 이를 위해서는 AWS 계정이 필요하며, AWS Lambda는 한달에 백만건씩 무료로 호출이 가능하니 비용적인 부분에서도 염려할 필요가 없습니다.

이 때 우리는 node.js를 사용합니다. node.js란 쉽게 말해 javascript로 만든 프레임워크로, 자바스크립트로 서버단까지 제어할 수 있게된 점이 포인트입니다. 즉, 필요한 준비물은 AWS 계정 발급과 node.js 다운로드, 텍스트데이터(ex. vscode)입니다.

 


 

1.  채널 목록 중 알림봇을 추가하고 싶은 채널의 톱니바퀴모양(채널편집버튼)을 클릭해주세요.

 

2. 좌측의 연동 버튼을 클릭한 후, '웹후크 만들기' 버튼을 클릭합니다.

 

3. 봇의 이미지, 이름, 채널을 원하는 대로 설정합니다. 저는 이미지는 따로 넣지 않고, test-bot이라는 이름을 설정하였습니다.'웹후크 URL 복사' 버튼을 눌러 웹후크를 복사해둡니다. 아래처럼 연두색의 '웹후크복사'라는 알림이 뜨면 정상적으로 복사된 것입니다. 복사된 웹후크는 개인 메모장 등 개인적인 공간에 따로 저장해둡니다.

 

4. aws의 console에 로그인 한 후, 상단에 'Lambda'를 검색하여 클릭합니다. 이후 오른쪽 상단의 주황색 '함수 생성' 버튼을 클릭합니다.

 

5. 원하는 이름을 설정하고, 런타임에 node.js를 지정하여 '함수생성' 버튼을 클릭합니다.

 

6. 만들어진 함수의 코드 소스를 전체 드래그 하여 복사해줍니다.

 

7. 이제 vscode를 열고 작업할 폴더를 만들어준 후, 해당 경로의 터미널에서 npm init을 입력한 후 계속 엔터를 칩니다.

 

8. 해당 폴더에 index.js라는 파일을 만들어준 후, aws에서 복사한 코드를 붙여넣기 합니다. 그리고 아래 터미널에 npm install axios를 입력하면 왼쪽에 axios와 관련된 패키지들이 설치됩니다.

 

9. 이제 나머지 필요한 코드들을 입력해줍니다.

const axios = require("axios");

# axios를 불러오는 것입니다.

try{

const result = await axios.post("본인의 url을 입력하세요.", {

"content" : "블로그 포스팅용 테스트 중입니다."

});

# 본인의 url을 입력하라는 부분에는 아까 디스코드에서 복사한 웹후크 url을 넣으면 됩니다. 이 부분에서 메세지를 보내는 것입니다.

저는 블로그 포스팅용 테스트 중입니다. 라고 입력하였습니다.

catch(err){

console.err("웹훅 실패"err);

}

# 상기 코드로 에러까지 리포트 해줄 수 있도록 합니다.

 

10. 이제 해당 폴더에 있는 모든 파일을 압축한 뒤 이를 aws lambda에 zip파일로 업로드 합니다. 업로드 버튼은 오른쪽 상단에 있습니다.

 

11. 중앙 상단에 있는 함수 만들기 버튼을 눌러 이벤트 이름을 설정해주고, 이외에는 그대로 놔준 채 생성 버튼을 눌러줍니다. 생성이 완료되면 Test 버튼을 눌러줍니다.

 

12. 테스트 버튼을 누른 후 디스코드에 들어가보면 정상적으로 메세지가 잘 수신되어 있습니다. 이를 더 활용하고자 한다면 lambda 함수를 설정하여 주기적으로 알람을 보낼 수 있습니다.

 

 


 

lambda함수를 이용하는 방법은 여기까지 입니다. 다음 포스팅에서는 discord 패키지를 이용하여 봇을 만들어보도록 하겠습니다.