Post

디스코드 뮤직 봇 개발 (1)

디스코드 뮤직 봇 개발 (1)

디스코드를 애용하는 1인으로서 다양한 봇들은 너무 유용하고 편한 기능이다. 그중에서도 뮤직봇은 대부분의 사용자들이 애용하는 봇이라고 생각한다. 음성채널에서 간단하게 원하는 음악을 스트리밍할 수 있기 때문이다. 그런데 요즘 youtube링크를 붙여넣어도 뮤직봇이 먹통인 경우가 많아 이상함을 느꼈고, 대부분의 봇들이 망가지는 현상을 겪어 직접 봇을 만들어보기로 했다. 잘 작동할지는 아직 모르겠지만 경험삼아 끄적여보았다.

봇 생성

먼저 디스코드 개발자 포털로 들어가 봇을 생성해야한다.

로그인 후 New Application을 클릭하고 원하는 이름을 작성한 뒤 Create를 눌러준다. 이후 좌측 Bot 을 눌러 Add Bot을 해주면 봇이 추가된다.

다음과 같이 사진도 넣어주었다. AI 이미지 생성을 위해 Canva를 사용했다.

여기서 Reset Token을 하면 토큰값이 생성되는데 이 토큰은 봇에 접속하기 위한 고유키이므로 유출되어선 안된다. 잘 저장해주자.

서버에 추가

이제 봇을 디스코드 서버에 추가해보자.

OAuth2 탭을 클릭 후 봇의 권한을 체크하고 URL을 생성해주면 된다.

다음과 같이 골랐는데 이유는 먼저 bot체크는 필수고, applications.commands는 /텍스트 형식으로 작동하던 명령어 방식대신 슬래시 명령어로 /를 치고 명령어를 골라 작동시키기 위해 추가했다.

그러면 맨 아래 Generated URL 이 생길것이고 이 주소를 복사붙여넣기해 들어가면 원하는 서버에 봇을 추가할 수 있다.

일단 오프라인이지만 서버에 잘 추가된 모습이다.

이후 레포지토리에는 여러 이슈와 커밋으로 나누어두었지만 지금까지 개발된 상황을 요약하고자 한다.

일단 source meloD_env/Scripts/activate 로 가상환경을 활성화해주고 python main.py 로 실행해주면?

제대로 봇이 동작하며 디스코드에서도 보면

온라인으로 바뀌어 명령어를 실행할 수 있게 된다.


봇 실행

기본 명령어

먼저 슬래시 명령어를 일반 채팅채널에서 사용해보자. / 를 입력하면 자동으로 사용가능 명령어가 나오는데

각각 사용해보면

다음과 같이 잘 작동하는 것을 볼 수 있다! 슬래시 명령어는 UX적으로 접근성이 편하고 물리적 부담감을 줄여주기 때문에 이렇게 변경하였고, 출력도 임베드로 깔끔한 UI가 반영되도록 했다.

텍스트 템플릿은 생성형 AI를 사용했는데 나름 레퍼런스를 여러개 넣어주니 다음과 같이 이모지도 사용해 잘 작성해주었다. 명령어들은 추후 추가하며 어떻게 바뀔지 모르겠지만 수정 가능성이 높다.

출석 기능

출석 기능도 살펴보자. 소규모기 때문에 간단하게 python으로 SQLite를 사용해 구현했다. 이미 출첵을 해버려서 이전에 슬래시 명령어로 변경하기전 출첵했던 기록을 가져왔다. 사진에 보이듯 기존 명령어는 /출첵 이런식으로 전부 작성해야해서 물리적 피로도가 높다.

음성 채팅방 기능

다음 기능으로 음성채팅 채널에 참가한 후 사용가능한 명령어를 테스트해보자.

이렇게 입퇴장을 개발하면서 먼저 되는지 구현을 해 본 것이고 이것조차 입장, 퇴장으로 구분한건 매우 UX적으로 귀찮기 때문에 다음과 같이 변경할 예정이다.

  1. 노래 재생 시 자동 입장 ex) /재생 [URL] -> 입장해서 노래 재생
  2. 음악을 특정시간동안 재생하지 않거나, 음성채팅방이 특정시간 비었을 때 자동 퇴장

여기까지 디스코드 봇을 구현해 봤는데 생각보다 레퍼런스도 많고 재밌게 개발했다. 지금은 파이썬 코드를 실행시켜야 작동가능하므로 향후 배포하여 24/7의 봇이 되어 여러 사람들이 사용할 수 있는 봇이 될때까지 해보아야겠다.

This post is licensed under CC BY 4.0 by the author.