개발 기술/개발 이야기

내 조직의 리뷰 할당 현황 구하기(2) - discord webhook 사용법

by GicoMomg 2023. 6. 25.

0. 들어가기에 앞서

  • 앞선 포스팅에서 Github API를 사용해 내 조직의 리뷰 할당 현황을 구해보았다.
  • 이번 시간에는 “내 조직의 리뷰 할당 현황 구하기”의 2번째로, discord webhook으로 할당 현황을 디스코드 채널에 전송해보겠다.
  • 이 포스팅을 읽게 되면 node 환경에서 discord 채널에 메시지를 보낼 수 있게 된다.

😎 시리즈 순서

(1) github API로 내 조직의 리뷰 할당 현황 구하기(포스팅 링크)
(2) discord webhook을 사용하여 discord 채널에 할당 현황 데이터를 전송하기
(3) github actions로 discord webhook 주소에 자동으로 할당 현황 메시지 전송하기(포스팅 링크)



1. node환경에서 discord webhook을 사용하기

1) 디스코드 웹후크 주소 확인하기

디스코드 채널에 웹후크로 메시지를 보내고 싶다면 해당 채널의 웹후크 URL을 알아야한다.
만약 당신이 웹후크 접근 권한이 있다면 아래 과정을 통해 웹후크 URL을 확인할 수 있다.

(1) 채널 편집으로 이동하기

  • 웹후크 API를 사용하고 싶은 채널의 [채널 편집] 버튼을 클릭한다.

 

(2) 연동 탭에서 웹 후크 만들기

  • [연동] 탭의 [웹 후크 만들기]를 클릭한다.

 

(3) 웹후크 만들기

  • [새 웹후크를 클릭]하면 아래 5번 이미지와 같이 웹 후크봇이 하나 생성된다.
  • 이제 웹 후크 봇을 클릭하자!

 

(4) 웹후크 주소 획득하기

  • [웹 후크 URL 복사]를 클릭하여 해당 주소를 기억해두자. (잠깐! 웹후크 URL은 개인정보기에 노출에 주의!!)
  • 이 과정을 마치면 우리는 이 채널에서 웹 후크 봇을 사용해 메시지를 보낼 1차 준비가 된 것이다 😊
  • 이제 이 주소를 사용해 채널에 메시지를 보내보자



2) 웹후크로 메시지 보내기

(1) discord-webhook-node 라이브러리 설치하기

  • discord-webhook-node는 디스코드 웹후크 API를 쉽게 사용할 수 있게 해주는 라이브러리이다.(링크)
  • 아래 명령어를 사용해 프로젝트에 라이브러리를 설치하자.
yarn add discord-webhook-node

 

(2) 프로젝트 구조

 

(3) 메시지 전송 코드 작성하기

  • 우선 웹후크 URL주소는 외부에 노출되면 안되는 정보이므로, .env에 URL 주소를 저장한다.
// .env

HOOK_URL=웹후크_URL_주소

 

  • new Webhook에 웹후크 URL 주소를 인자로 넘기면, 해당 웹후크로 메시지를 보낼 준비가 된다.
// index.js

import "dotenv/config";
import { Webhook, MessageBuilder } from "discord-webhook-node";
import PRAssign from "./msg/pr-assign.js"; // PR 할당 현황을 리턴하는 함수

const hook = new Webhook(process.env.HOOK_URL); // this!

 

  • new MessageBuilder()로 보내고 싶은 메시지를 작성한다.
// index.js

...
async function sendMessage() {
  const msg = await PRAssign.getMessage();
  const embed = new MessageBuilder()
    .setTitle("오늘자 리뷰 할당 현황")     // (1) 제목
    .setColor("#00ff00")              // (2) 메시지창의 바 색상
    .setDescription(                  // (3) 설명
      "🌞 굿모닝 좋은 아침 🌞\n💪 오늘자 리뷰 할당 현황 알려드려요!"
    )
    .addField("할당 현황", msg)         // (4) 필드(제목, 내용)
    .addField(                        // (5) 필드(제목, 내용)
      "😉 유의사항",
      "* 당일 오전 9시 이전에 요청한 리뷰는 당일 오후 2시까지 리뷰 완료해주세요!\n* 리뷰가 늦어질 시 리뷰 요청자에게 DM으로 미리 알려주는 센스~!\n* 일부 인원에게 많은 리뷰가 가지 않게 골고루 리뷰를 걸어주세요"
    );

  hook.send(embed);
}

sendMessage();

번호  설명
(1)  메시지 제목
(2)  메시지창의 바 색상
(3)  제목 하단에 들어가는 설명
(4), (5)  필드로 순서대로 제목, 내용을 작성

 

  • 이제 명령어를 실행하면 메시지가 전송된다.
yarn serve




이번 포스팅은 “내 조직의 리뷰 할당 현황 구하기”시리즈의 두 번째로,
discord webhook 사용법을 알아보았다.
우선 메시지를 보내고 싶은 채널에서 웹 후크 주소를 확보해야했으며,
discord-webhook-node 라이브러리로 메시지를 보낼 수 있었다.
오늘 설명한 코드는 이 링크에서 확인할 수 있다.

다음 포스팅에서는 마지막으로 “github actions로 자동으로 메시지 전송하기” 방법을 알아보겠다 🙂

반응형

댓글