이거 저거 만들고 싶어지는 요즘ㅋ 일 하다가 자동화가 필요한 게 생겨서 만들어 봤다
이미 업무하는 서버에 누가 만들어놓은 봇이긴한데 기능이 부족하고 매 번 봇 적용이 늦어서 직접 만들었다
현재 업무 서버에 적용했고 테스트 단계에 있다
웹훅(webhook)이란 한 서버에서 특정 이벤트가 발생할 시, 다른 서버에서 지정된 다른 이벤트가 발생하는 기능

const body = {
content: '메세지',
};
const response = await fetch(`${DISCORD_WEBHOOK_URL}?wait=true`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
?wait=true는 생성한 메세지에 대한 데이터를 응답으로 받기위한 쿼리작성한 스크립트 코드를 실행하는 서버
생성 과정
1. 프로젝트 폴더 생성
2.npm init -y 명령어로 node 프로젝트 설정 및 package.json 생성
3. index.js 파일 생성

handler라는 이름의 함수가 lambda의 endpointnpm i dotenv를 설치해 nodejs에서 환경 변수 사용node index.js 명령어로 파일 실행handler() 함수 호출을 했지만 람다에서는 해당 호출문은 제거하고 올려야 함import dotenv from "dotenv";
dotenv.config();
export const handler = async (event) => {
try {
const body = {
content: "메세지 전송",
};
const messageResponse = await fetch(`${process.env.DISCORD_WEBHOOK_URL}?wait=true`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
console.log("[SUCCESS]", messageResponse);
const response = {
statusCode: 200,
body: JSON.stringify(result),
};
return response;
} catch (error) {
console.error("[FAIL] ", error);
return { statusCode: 500 };
}
};
handler();
디스코드에 전송된 메세지



.zip 생성에서 업로드 클릭 > .zip 파일 클릭 후 압축한 파일 업로드

아래 코드 업로드를 마친 화면

deploy버튼을 눌러 코드를 람다에 저장test버튼을 눌러, 테스트 생성 후 코드 실행을 테스트 함
테스트 정상 실행 후 람다 터미널

디스코드 결과

설정된 스케쥴에 따라 지정된 코드를 실행시키는 이벤트

cron 표현식



다음 글은
보낸 메세지의 스레드를 만들고
스레드에 메세지를 보내는 기능을 추가할 것!