1. 디스코드 봇이란 무엇인가?

디스코드란 화상, 음성 채팅을 지원하는 인스턴트 메신저 프로그램으로 2018년 이후로 상당한 인기를 얻고 있는 프로그램이다.

디스코드 봇이란, 이 디스코드라는 메신저에서 User 와 다르게 자동화된 코드로 동작하며 여러 편의 기능을 제공하는 객체를 말한다.

이용자들은 ‘서버’라는 단위로 나뉘어 각 서버 안에서 채널을 만들고, 각 채널의 주제에 어울리는 내용으로 소통한다. 이때 이용자들의 수가 많아지고 채널의 관리가 복잡해지기 시작할 때 그 효과를 톡톡히 볼 수 있는 방법이 바로 디스코드 봇을 도입하는 것이다.

채널 관리는 물론, 일정 관리 및 사용자 개개인에게 DM(Direct Message)을 통한 알림까지, 디스코드 봇은 사람이 하기 힘든 일을 편하게 할 수 있게 해주어 그 유용성이 높다고 할 수 있다.

심지어 최근에는 자체적으로 게임 기능도 구현하고, 음성 채팅 기능을 활용해 사용자들과 소통할 수 있게 되는 등 디스코드는 굉장히 다양화되고 있는 봇들의 개발을 통해 메타버스화되고 있다고 말할 수도 있겠다.

최근에는 Discord Application이라는 이름으로 봇의 여러 기능을 통합하여 편하게 서버에 대응시키도 하고, 외부 결제 시스템을 통하지 않고 디스코드 내부 결제 시스템을 이용해 여러 Application의 유료 구독을 편하게 할 수 있는 환경도 구축되어가고 있다.

이렇게 다변화되어 가는 환경을 몸소 겪어본 나는 이참에 디스코드 서버 관리에 필요한 기능을 직접 만들고 봇, 또는 디스코드 Application의 형태로 배포해보고자 봇 개발 프로젝트를 진행해보았다. 앞으로 연재될 글은 그 이리 치이고 저리 치였던 개발 일대기를 보기 좋게 정리한 것이다. 본 글을 읽는 사람들은 나와 같은 시행착오를 최소화하고 빠르게 개발을 마칠 수 있기를 바라겠다.

2. 어떻게 개발하나요…

디스코드 봇은 다음 도표와 같이 동작 구조를 가진다.

asynchronous input을 계속해서 서버에 전송 > online으로 처리 이제 asynchronous한 메시지 전송을 인식하는데, 봇의 파이썬 함수 구조는 주로 접두사(!, ~과 같은)가 붙은 명령어를 매개로 하여 각 명령어에 맞는 함수를 설정할 수 있게 되어있다. 봇은 다양한 기능을 수행할 수 있는데, 애초에 파이썬 구조이다보니 여러 외부 api와 상호작용할 수 있으나 우선 디스코드 내에서 할 수 있는 일들을 나열해보면 다음과 같다.

User와 동일하게 할 수 있는 동작

  • 메시지 전송
  • 메시지 답장
  • 반응 (이모지 달기)
  • DM (Direct Message) 달기
  • 스레드 개설
  • 음성 채팅방 참가
  • 관리자 권한 (차단, 밴, 음소거, 헤드폰 조작, 역할 부여 및 해제) 전부
  • etc.

    Bot만 할 수 있는 동작

  • 메시지 블록 전송하기 (사진, 문단, )

    User만 할 수 있는 동작

  • 파일 전송

Bot 의 권한은 서버에 초대하는 사람들이 확인하고 허용하지 않는 권한은 차단할 수 있다. 이 Bot이 요구하는 권한은 개발자가 디스코드 공식 개발자용 홈페이지에서 설정할 수 있고, 코드 내에서도 Intended array의 설정으로 구체화할 수 있다. 이 권한과 관련된 문제는 우선 자세히 설명하지 않고, 나중에 별개의 문서로 다루도록 하겠다. 우리는 우선 무슨 동작이 어떻게 돌아가는 지 알아보도록 하자!

3. 24년도 들어 개발 진척

가장 간단한 기능만 구현하고 나중에 feature들을 추가하려고 한다. 구체적으로는 밑과 같다.

  • 생일 출력
  • web에서 message 전송

생일 출력의 python 코드는 대략 다음과 같다. (지금은 discord.js로 리팩토링했다…)

async func(){
  
}

댓글남기기