까먹기 전에 적는 디스코드 봇 만들고 호스팅하는 방법
A A

요즘 취미생활로 파판14라는 게임을 재미있게 하고 있다.
이 게임에는 장터게시판이라는 시스템이 있는데, 말 그대로 유저들이 자유롭게 아이템을 사고팔 수 있는 곳이다.
원래 디스코드 봇 중 아이템 이름을 검색하면 서버별 최저가를 보여주는 봇을 서버에 추가해서 잘 사용하고 있었는데, 뭔가 문제가 생긴 듯 제대로 작동하질 않았다. 다른 장게봇을 찾아봐도 마음에 드는 게 없어서 그냥 내가 만드는 게 빠르겠다! 싶어 직접 만들게 되었다.
 
 

앱 생성하기

 
디스코드 봇을 만들어 보자.
 
https://discord.com/developers/applications

Discord for Developers

Build games, experiences, and integrations for millions of users on Discord.

discord.com

 

 
위 링크에 접속한 뒤 우상단의 New Application을 클릭해서 앱을 만들어준다.
 
 

토큰 받기

 
프로필 사진이나 설명 같은 건 하고 싶은 대로 작성하고, Bot 탭에서 Token을 발급받아야 한다.

 
앱을 처음 생성했으면 토큰이 없다. Reset Token 버튼을 눌러서 토큰을 새로 발급받아주자.
어디에서나 그렇지만, 이 토큰은 처음 생성했을 때 한 번만 보여주고 이후부터는 보여주지 않으므로 복사해서 어딘가에 잘 저장해둬야 한다.
 
 

서버에 봇 추가하기

 
OAuth2 탭에 URL Generator 섹션이 있다. 여기서 먼저 bot에 체크해준다.
 

 
그러면 밑에 바로 봇에게 부여할 퍼미션을 고르라고 뜬다.
필요한 만큼 체크하면 된다. 나는 간단하게 메시지 보내는 것만 필요해서 아래처럼 체크했다.
 

 
체크하고 나면 밑에 URL이 하나 뜬다.
이걸 복사해서 브라우저 창에 붙여넣기하면 봇을 추가할 서버를 고를 수 있다.

 
 

호스팅하기

 
코드를 작성해서 로컬에서 잘 돌아가는 걸 확인했다면 이제 봇을 호스팅해야 한다.
(내 로컬 컴퓨터를 24시간 켜놓을 수는 없으니까 다른 클라우드 서비스에 대신 켜놔달라고 부탁하는 것)
 
나무위키에 친절하게 나와있어서 그냥 이거 보고 따라했다.
https://namu.wiki/w/Discord/봇/호스팅#rfn-2
 
여러 가지 옵션이 있는데 나는 구글 클라우드를 선택했다. 졸프 때도 GCP를 사용해봤어서 이게 친숙했다.
운영체제는 Ubuntu를 선택했다.
 
https://cloud.google.com/

무료 체험판과 무료 등급 서비스 및 제품

$300의 무료 크레딧과 월별 한도까지 무료로 사용할 수 있는 Compute Engine, Cloud Storage 등 20여 개의 제품으로 Google Cloud에서 빌드하세요.

cloud.google.com

 
평생 무료 서버로 사용하려면 몇 가지 사항을 만족해야 하는데, 설정방법은 나무위키에 자세하게 나와있다.
 
나는 discord.js 기반으로 코드를 작성했어서 나무위키에 있는 python이랑 pip 말고 node랑 npm을 설치해야 한다.
'가상 머신' 카테고리의 VM 인스턴스 탭에서, SSH 오른쪽의 토글을 눌러 '브라우저 창에서 열기'를 클릭하면 터미널 창이 열린다.
 

 
 
아래 같은 창이 나오면 Authorize를 눌러준다.
 

 
 
이제 이것저것 설치해줘야 한다.
사용한 커맨드 목록은 아래와 같다.
 

sudo apt update
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
source ~/.bashrc
nvm install 24.5.0    # 코드에서 사용한 node 버전
sudo apt install npm
sudo apt install git
sudo apt-get install tmux

 
마지막 줄의 tmux는 터미널을 종료해도 24시간 동작할 수 있게 하는 역할을 할 것이다.
 
다음으로는 git의 레포지토리를 clone해와야 한다.
 

git clone "repo-url"
cd "repo-name"

 
 
여기에 추가로 내가 코드에서 사용한 라이브러리들도 설치해주었다.
 

npm i discord.js
npm i axios
npm i fs
npm i path
npm i dotenv

 
 

💡 참고로, 커맨드를 입력하다 보면 이전에는 잘 썼던 sudo 커맨드를 못 쓰게 막아버릴 때가 있는데, 그때는 그냥 창을 종료하고 다시 SSH-'브라우저 창에서 열기'를 클릭하면 sudo를 다시 사용할 수 있다.

 
 
 
이제 위에서 설치했던 tmux를 사용해 24시간 돌아가게 만들어보자.
사용법은 간단하다.
 

# 사용
tmux

# 사용 해제
tmux ls    # 세션 번호 확인
tmux attach-session -t 0    # 예시: 0번일 경우

# 그냥 다 삭제
tmux kill-server

 
 
tmux 커맨드를 입력하면 아래처럼 맨 밑에 초록색 표시가 뜬다. 이 상태에서 서버파일을 실행한다.
이제 창을 닫아도 뒤에서 계속 돌아갈 것이다.
 

 
 
 

결과

 
만들었다!! 아주 귀엽다.
 

 

 
또륵이는 나온지가 언젠데 아직도 미친듯이 비싸다..
아무튼 일도 잘한다!!
 

참고한 글

discord.js
https://huzan2.tistory.com/11

 
 
 

Copyright 2024. GRAVITY all rights reserved