
시간 관리에 취약하여 늘 노션 칸반보드와 구글 캘린더를 끼고 사는 나를 위해 이번에는 알림봇을 디스코드에 만들어보았다. 그리하여 AWS Lambda와 Discord Webhook를 이용하여 '매일 오후 3시에 허리 피기' 알림을 보내는 디스코드 알림봇 만들기!!
디스코드 봇 공지를 올리고 싶은 채널의 편집 버튼을 클릭한다.

좌측 메뉴에서 연동 - 웹 후크 만들기 버튼 클릭

이렇게 하면 바로 하단에 디스코드봇이 생성이 된다.

이후에 이 로봇을 식별할 수 있는 고유의 URL이 필요하다.

이 URL은 나중에 AWS Lambda 함수에서 요청을 보낼 때 사용하게 된다.
웹 후크 URL 복사 버튼을 통해 이 URL을 복사하고 메모장 같은 곳에 복사해두자.
이제 AWS에 로그인 후 Lambda에 접속해보자.

우측에 있는 Create Function 버튼을 클릭하여 함수를 생성한다.

매일 3시 즈음 스스로에게 허리를 위로 피라는 의미의 hurry_up_3_pm이라는 함수를 생성하겠다.

이제 node.js 기반의 alarm_bot.zip을 업로드 해주어야한다.
https://github.com/mikio999/alarm_bot
관련 코드는 깃허브에 업로드를 해놓았다.
깃허브에서는 Download ZIP을 통해 코드를 다운 가능하다.
const axios = require("axios");
exports.handler = async (event) => {
try {
const result = await axios.post("디스코드 웹후크 URL", {
content: "매일 오후 3시에 허리를 펴세요! 🕒"
});
console.info("디스코드 웹훅 호출 성공");
} catch (err) {
console.error("웹훅 호출 실패", err);
}
return {
statusCode: 200,
body: JSON.stringify('Lambda function executed successfully!'),
};
};
이 코드는 axios 라이브러리를 사용하여 디스코드 웹후크 URL로 POST 요청을 보내는 기능을 한다. 요청이 성공하면 콘솔에 성공 메시지를 출력하고, 실패하면 에러 메시지를 출력한다.

다시 AWS로 돌아와서 Upload from > .zip file 클릭.

위에 깃허브에서 다운받은 zip 코드를 upload하고 save를 눌러준다.
이제 위에 디스코드에서 웹 후크 URL 복사에서 가져온 URL을 index.js의 빨간 박스 안에 넣어준다.

디스코드의 md 문법을 적용해서 Content 속성에 세부 내용도 포함시켜주자.
const axios = require("axios");
exports.handler = async (event) => {
try {
const result = await axios.post("https://discord.com/api/webhooks/1330514570434838579/_ZrMGyu2LT2ks_wo9czyFiA47EqDCqQo60Of9xOU9ZQkzvdXvp-C-e3vRqvEwzri_UcR", {
content: "**🕒 매일 오후 3시에 허리를 펴세요!**\n\n> ⏰ **잊지 마세요!**\n> 이제 **허리 스트레칭** 시간입니다. 서서 일하거나 짧은 산책을 즐겨보세요. 🚶♂️🚶♀️\n\n👉 *건강은 일상의 작은 습관에서 시작됩니다!*",
});
console.info("디스코드 웹훅 호출 성공");
} catch (err) {
console.error("웹훅 호출 실패", err);
}
return {
statusCode: 200,
body: JSON.stringify("Lambda function executed successfully!"),
};
};
또한 공지 내용 중 특정 사람을 멘션@해야 한다면 아래와 같이 진행한다.

좌측 하단에 있는 프로필에서 사용자 설정을 들어간다.
왼쪽 메뉴 스크롤을 내려서 고급 선택!

이후에 개발자 모드 를 활성화시켜준다.
다시 챗봇을 배포할 디스코드 서버에 들어가서 > 설정 > 역할

멘션하고 싶은 역할 더보기 버튼 선택 > 역할 ID 복사하기 클릭하여 클립보드에 복사

이후 다시 AWS의 index.js로 돌아와서 멘션을 넣을 위치에 <@& + 복사된ID>형식으로 멘션을 해준다.
이제 Deploy 버튼을 눌러 코드를 저장한다.

공지 내용과 채널이 잘 설정되었는지 확인하기 위해 Test 진행해준다.

이후 Test를 클릭하여 Test 함수를 생성한다.

이후 Test를 다시 한번 더 눌러 해당 채널에 공지가 올라갔는지 확인해본다.

Test를 통해 챗봇을 통해 내용이 디스코드로 잘 꽂히는 것을 최종 확인되었다!
이제 AWS의 시간을 설정하여 특정 시간에 알림봇이 오도록 구현해보자.

AWS > Event Bridge 검색 > Rules > Create rule 으로 이동하자.

규칙 이름만 작성한 후 Continue to create rule 이동 버튼을 클릭한다.

원하는 규칙인 0요일 0시 0분 0초 를 설정하기 위해 aws cron식을 작성한다.

필자는 회사에 있는 가장 졸린 시간인 mon-fri 오후 3시에 해당 알림이 오도록 구현하겠다. UTC 기준으로 새벽 6시는 바로 우리나라 시간 기준으로 오후 3시와 동일하다!

대상 선택에 lambda 함수 함수에 방금 생성한 hurry_up_3_pm 함수를 넣어준다.

함수 설정 후, Create Rule버튼이 나올때까지 Next 버튼을 눌러준 후

Create Rule 버튼으로 최종적인 규칙을 발행한다.

이제 Lambda 페이지에서도 EventBridge가 연결된 것을 확인할 수 있다.
이번 매일 오후 3시에 허리 피기 디스코드 알림봇 만들기를 통해 AWS Lambda와 Discord Webhook을 연동하여 업무 자동화까지 확장할 수 있게 되었다. 이를 통해 어떻게 하면 개발과 코딩 지식을 통해 프로그래밍 역량을 키우는 것 뿐만 아니라 어떻게 프로그램 업무 효율을 증가시킬 수 있을지에 대해 관심을 가지는 계기가 되었다. 앞으로도 적극적으로 자동화 솔루션에 대해 공부하고 개발하고 정리하며 효율성을 증대시키는 방안들을 모색해보고 싶다.