포스트

디스코드 봇 DIY - 0. 개념과 개발 계획

디스코드 봇의 개념과 봇 개발 계획

이 글에서 다루는 내용

  • 디스코드 봇이란 무엇인가
  • 디스코드 봇 개발 계획

들어가며

어느샌가 디스코드(Discord)는 나와 주변 이들의 생활 깊숙이 자리 잡았다. 친구들이나 관심사를 공유하는 사람들 간에 소통하는 커뮤니케이션 플랫폼으로 사용하지만, 메시지와 음성 채팅 기능을 제공하는 것은 비단 디스코드뿐만이 아니다. 많은 선택지 중 디스코드를 고집하는 것은 아무래도 뛰어난 확장성 때문일 것이다. 그리고 그 확장성의 핵심에 있는 것이 바로 봇(Bot)이다.

디스코드 봇이란?

디스코드를 이용하면서 어느 정도 규모가 있는 서버에 들어가 봤다면 파란 딱지가 붙어있는 수상하게 생긴 녀석들을 보았을 것이다. 이 녀석들이 바로 봇인데, 이벤트명령어에 자동으로 응답하여 임무를 수행하는 코드 덩어리들이다. 인간 운영자를 대신해 서버를 관리하기도 하고 음성 채널 안에서 음악을 재생하기도 하는 등 정말 다양한 사용처가 있다.

0_0 디스코드 LoL 서버에 접속해 있는 봇들

나도 작은 서버를 운영하면서 필요에 따라 봇들을 몇 개 추가해 사용했었다. 이미 수십만 개가 넘는 봇들이 다양한 기능들을 제공하고 있지만, 사용하는 입장에서 가끔 불편할 때가 있다. 특정한 기능 한 가지를 추가하고 싶은데 하나의 기능을 위해 여러 개의 봇을 혼용해야 하거나 내가 머릿속에 그린 딱 그 기능이 없는 경우들을 맞닥트렸다.

"안 되면 되게 하라"

그래서 직접 나만의 작은 디스코드 봇을 만들기로 결심했다.

개발 계획 세우기

디스코드 API를 다루는 방법에는 여러 가지가 있다. 오랜 역사만큼 Python, Java, Node.js, C언어 등 정말 다양한 선택지가 있는데, 가장 널리 쓰이고 자료가 많은 것은 아무래도 Python이다. 어차피 나도 Python이 제일 익숙하기 때문에 개발은 Python으로 진행하기로 했다.

디스코드 API를 활용하기 위해서는 애플리케이션(Application)을 등록하고 봇을 생성해야 한다.

일반 계정으로 코드를 돌릴 수도 있지만 잘못하다가는 디스코드 계정이 정지될 수 있다.

궁극적인 목표는 하나의 디스코드 봇으로 서버에 필요한 기능을 전부 제공하는 것이다. 물론 그래봤자 디스코드를 사용하면서 개인적으로 있으면 좋겠다고 생각한 것들이긴 하다. 이 기능들을 서버에 추가하여 최대한 서버 멤버들의 참여도를 높여 서버를 활성화 상태로 유지하는 것이 개발 의의다.

기능들을 크게 분류해 보면 사용자 관리, 엔터테인먼트, 유틸리티 이 세 가지로 나눌 수 있다. 사용자 관리는 경고와 밴 시스템 등이 해당하고 엔터테인먼트는 도박이나 미니게임 요소들, 그리고 유틸리티는 음악 재생이나 웹 검색 기능 같은 편리성을 향상할 수 있는 기능들이 포함된다.

분류포함되는 기능들 (예시)
사용자 관리경고와 밴, 유저 등록/삭제
엔터테인먼트도박 시스템, 미니게임, 모의투자
유틸리티음악 재생, TTS, 웹 검색

이 기능들을 전부 구현하려면 꽤 긴 시간이 걸릴 테지만 하나씩 차근차근 만들어보려 한다. 먼저, 엔터테인먼트에 가상 경제 시스템을 넣을 생각이기 때문에 사용자의 자산을 기록하기 위해서라도 사용자 관리 시스템을 먼저 셋업 해놓는 것이 맞다고 생각된다.

사용자 관리와 엔터테인먼트의 기능들은 서로 연결이 되어있지만, 유틸리티는 각각의 기능들이 개별적으로 작동한다. 그렇기 때문에 따로 개발 순서를 정해두지 않아도 될 것으로 생각된다.

단순히 만들기만 할 거면 방방곡곡에서 가져온 코드들을 짜깁기하면 되겠지만 이참에 제대로 API를 활용한 개발을 해보고자 한다. 앞으로 긴 여정이 될 것이다.

개발 환경

혹시나 글을 읽고 따라 하실 분들을 위한 현재 개발 환경입니다.

2024년 5월 기준

  • 윈도우 11 (64비트)
  • Python 3.12.3
  • pip 24.0
  • discord.py 3.7.4
  • Visual Studio Code 1.89.1
이 글은 저작권자의 CC BY 4.0 라이센스를 따릅니다.