Zapier로 간단하게 디스코드 알림 봇 만들기

Share on facebook
Share on linkedin
Share on twitter
Share on email
디스코드는 근본적으로 협업도구가 아니기 때문에 업무용 메신저로는 아쉬운 부분이 있었다. 이 포스트에서는 디스코드에서 슬랙의 Reminder 기능을 구현하는 방법을 소개한다.

목차

포스트 공유하기

Share on facebook
Share on linkedin
Share on twitter
Share on email

“업무용 메신저”라 하면 흔히 슬랙을 떠올리곤 한다. 하지만 우리 팀 크레센도는 업무용 메신저로 디스코드를 사용한다. 디스코드는 원래 게이머들끼리 음성 채팅을 하기 위해 만들어진 메신저였지만, 멘션이나 역할 관리를 비롯한 다양한 기능이 있어 협업 도구로도 손색이 없다. 더더이 팀 크레센도의 아이덴티티가 디스코드 챗봇 개발 팀이고, 팀원들 대다수가 애초부터 디스코드를 활발히 이용하고 있었기에 굳이 다른 메신저를 도입할 이유도 없었다.

리마인더 봇이 필요해

다만 디스코드는 근본이 협업 도구는 아니라서 몇 가지 아쉬운 점이 있다. 대체재(?) 슬랙에서 제일 부러웠던 점은 Reminder 기능이었다. 한 달을 주기로 시즌이 바뀌는 게임 챗봇을 기획하다 보니, 매달 해야하는 루틴 작업들이 기억 만으로는 감당이 안 될 정도로 많아지기 시작했다.

굵직한 고정 일정만 이 정도고, 마감일이나 회의 일정까지 겹치면 꽤 정신없다. 지금까지는 일정을 기억하고 있는 팀원이 다른 팀원들한테 멘션 주는식으로 리마인드를 줬다.

참고: 크센에서 오회있은 “늘 의 어요”의 준 말이다.

다만 이 방법은 결국 사람이 하다 보니 실수가 생기기 마련이고, 특히 하루에도 수 천명이 이용하는 서비스를 운영하는 입장에서는 부담이 큰 방법이었다. 고민 끝에 돌연 이런 생각이 들었다.

차라리 내가 리마인더 봇을 만들어볼까?

바퀴를 두 번 발명할 필요는 없다

우리가 무슨 팀이냐, 디스코드 챗봇을 만드는 팀이다. 주로 게임 콘텐츠를 제공했지만 업무 관리 도구라고 못 만들 이유는 없었다. 다만 막상 추진하고자 하니 역시 신경쓸 게 많았다.

  1. 리마인더를 추가 ∙ 열람 ∙ 수정 ∙ 삭제하기 위한 UI ∙ UX를 어떻게 설계해야할까? 등록하는 과정이 기존의 “때되면 멘션하기”보다 번거롭다면 안 쓰지 않을까?
  2. 챗봇을 어떤 서버 위에서 구동해야할까? 서버 비용은 어떻게 충당할까? 장애가 생기면 어떻게 대응하고, 유지보수는 누가 해야할까?

우리 손으로 만들기에는 기획쪽으로든 개발쪽으로든 얻는 이득에 비해 투자해야하는 비용이 꽤 큰 느낌이었다. 관련 디스코드 봇을 찾아 보니 리마인더 봇이 없지는 않지만, 단순히 몇 시간마다 똑같은 메시지를 반복하는 형태이거나, 유명하지 않아서 서비스 장애가 걱정되는 등 뭔가 하나씩 아쉬운 점이 있었다. 챗봇 개발자로서 유지보수 과정이 그리 녹록치 않음을 알고 있기 때문에 오히려 외부 서비스를 들여오는 데 망설임이 컸다.

그러던 중, 팀 크레센도에 도입할 법한 좋은 서비스를 찾았다.

Zapier

Zapier라는 서비스는 코딩 없이 업무를 자동화할 수 있는 서비스다. 지메일, 구글 시트를 비롯한 2000개 이상의 앱과의 연동을 지원하며, 그 중 우리가 쓰고 있는 디스코드도 포함되어 있었다.

팀 크레센도 리마인더 봇의 전체 구조

Zapier에서는 업무 흐름을 “A가 발생하면, B를 해라” 라는 단순한 규칙으로 기술하고, 이를 Zap 이라고 부른다. 내가 생각하던 리마인더 봇도 이 Zap으로 간단히 만들 수 있었다. “구글 캘린더에 등록된 일정이 시작될 때, 디스코드에 알림 메시지를 보내라.” 구글 캘린더라는 강력한 일정 관리 도구를 도입함으로써 별도의 UI를 기획할 필요도 없어졌다.

자잘한 설정을 바꾸는 과정도 상당히 간단했다. 어떤 채널에 메시지를 보낼 지, 어떤 형식으로 메시지를 보낼 지, 심지어는 봇의 프로필 사진을 어떻게 할 지까지 필요한 모든 기능들은 웹사이트 내에서 간단하게 수정할 수 있었다.

유일하게 신경써야할 점은 디스코드에서 멘션하는 방법이 다르다는 점 정도이다. 구글 캘린더 일정에 쓴 상세 설명이 그대로 디스코드에 전달되도록 Zap을 설정했지만, 닉네임 앞에 골뱅이를 붙이는 통상적인 방법(@Skile)으로는 멘션이 듣지 않는다. 디스코드에서는 역할이나 사용자를 멘션할 때 겉으로는 닉네임이 나오지만 내부적으로는 <@&ROLE_ID>나 <@!USER_ID> 형태로 변환하는 작업을 거친다. 따라서 사용자가 아닌 챗봇으로 메시지를 보낼때는 디스코드 자체 문법의 형태로 메시지를 보내야 한다. 역할이나 사용자의 ID를 추출해야 한다는 번거로움이 있지만 디스코드 개발자 모드를 사용하면 이 과정 또한 버튼 클릭 몇번으로 간단히 진행할 수 있었다.

총평

Zapier 서비스를 이용해서 간단히 디스코드 알림봇을 만들 수 있었다. 한 줄의 코딩도 하지 않았고, 가입부터 시작해서 10분의 시간이 채 걸리지 않았다. 2012년부터 지금까지 지속되고 있는 서비스인 만큼 믿을만하다는 점도 큰 장점이었다.

이렇게 구축된 봇은 운영 비용도 전혀 들지 않는다. Zapier의 가격 정책에 따르면 Free Plan 사용자는 최대 5개의 Zap과 한 달 100개의 Task(Zap이 작동된 횟수)까지 지원하는데 이 정도 규모의 팀의 일정을 관리하는 데는 크게 부족함은 없었다. 알림봇으로써 아쉬운 점은 최대 15분 정도의 오차가 발생할 수 있다는 점이다. 이 또한 Free Plan의 한계인데, 때문에 회의가 이미 시작한지 10분이 지나서 알림이 뜬 적도 있다.

그 정도를 빼면, Zapier를 도입한지 한 달이 넘어간 지금까지, 큰 불편함은 딱히 없었다. 팀 생산성을 높일 수 있는 서비스를 보다 적극적으로 리서치해봐야겠다.

목차

Skile (스카일)

Skile (스카일)

자연어처리에 관심이 많고 챗봇을 좋아하는 개발자 스카일입니다. 디스코드 봇 SkileBot을 만들었고, 팀 크레센도의 대표로서 효과적인 팀 운영에도 많이 신경쓰고 있습니다.

더 둘러보기