파이썬으로 간단한 디스코드 봇 만들기 시리즈 마지막 포스팅이다. 무료 호스팅 서비스에서 우리가 만든 봇을 24시간 돌아가게 해보자.

 

봇은 일할 곳이 필요해요

봇이 이제 우리의 명령을 알아듣는것 까지는 좋다. 하지만 또 하나의 문제점이 남아있다. 봇은 우리가 쓰는 컴퓨터에서 돌아간다는 것이다. 즉, 우리가 컴퓨터를 끄면 봇도 같이 꺼진다. 만약 나 혼자 쓰는 봇이라면 딱히 상관이 없지만, 여러 명이서 쓰는 봇이라면 내 컴퓨터가 꺼져 있을 때는 다른 사람이 우리가 만든 봇을 사용할 수 없게 된다.

생각해볼 수 있는 해결법은 다음과 같을 것이다. (혹은 더 있을 수도 있다)

  • 내 몸 하나 희생해서 24시간 컴퓨터를 끄지 않는다
  • 봇을 사용하는 사람에게 소스 코드를 건네주고, 필요할 때 너도 돌리라고 한다.
  • 24시간 킬 수 있는 다른 누군가에게 부탁한다

본인이 24시간 계속 킬 여건이 되는 사람이라면 본인 컴퓨터에서 계속 돌리는 것도 나쁜 선택이 아니다. 하지만 그럴 만한 여유가 되는 사람은 많지 않을 것이다.

소스 코드를 공유하는 것은, 본인이 만든 봇의 토큰도 공유한다는 뜻이다. 자신이 신뢰할 수 있는 사람에게라면 토큰을 건네줘도 되지만, 만약 그냥저냥 적당히 아는 사이인데 봇은 같이 쓴다면? 근데 토큰을 공유할 만큼 신뢰가 쌓이지 않은 관계라면? 좀 그렇긴 하다.

그래서 나오는 것이 24시간 킬 수 있는 다른 누군가에게 부탁한다 항목이다. 모르는 사람에게 대뜸 “이 봇좀 24시간 돌려주세요” 라고 요청한다면 이상하게 볼 수 있으나, 그것을 전문적으로 해 주는 업체가 있다. 당장 AWS(Amazon Web Service)라던가, GCP(Google Cloud Platform)이라던가. 유명한 회사에서도 해 주고 있는 서비스이다.

둘 다 좋은 서비스지만, 이번 포스트에서는 Heroku를 사용해볼 것이다. 굳이 Heroku를 고른 이유가 있는데, GCP는 실제 본인의 신용카드 사진을 요구한다! (물론 카드의 앞의 12자리는 가리고) Heroku는 이러한 절차가 없어도 되기 때문에 빠르게 시작하기가 더 편할 것이다.

 

Heroku 가입

Heroku 사이트에 접속해보자.

https://www.heroku.com/

그러면 오른쪽 위에 Log in 버튼과 Sign up 버튼이 보일 것이다. Sign up 버튼을 눌러서 회원가입 화면으로 넘어가자.

aa

흔하게 볼 수 있는 회원가입 화면이다. 필수 항목들만 적당히 입력하자.

그러면 가입할 때 사용했던 이메일로 인증 메일이 전송될 것이고, 여러분은 해당 메일을 열어 인증만 하면 회원 가입 절차는 끝나게 된다.

 

app 만들기

그러면 봇이 돌아갈 app을 만들어보자.

aa

위의 그림에서 create new app 버튼을 눌러주면 다음 화면으로 넘어가게 될 것이다.

aa

두 가지 입력란이 보일 것이다. App name, 즉 이 어플리케이션의 이름과 Choose a region, 어디서 실행할 거냐는 것이다.

App name은 대충 지어도 상관 없다. 어자피 다른 사람이 이 이름을 볼 일이 없기 때문이다. 게다가 App name은 다른 사람이 쓰고 있으면 사용할 수 없으므로, 골머리를 앓는 것 보단 대충 짓는게 속 편할수도 있다.

Choose a region은 어자피 미국과 유럽 뿐이니 대충 정하자. 미국이라고 해서 봇의 반응속도가 심각하게 느리지는 않다.

모두 정하고 Create app 버튼을 누르면 app이 만들어진다!

aa

 

봇 코드 올리기

이제 app이 만들어졌으니, app이 동작하기 위한 환경을 세팅하고, 실행하고자 하는 코드를 올려야 한다.

 

  • app에 파이썬 설치하기

그러면 app 초기 메뉴를 살펴보자. 그러면 맨 오른쪽에 Settings라는 메뉴가 보일 것이다. 눌러서 들어가보자.

aa

쭉 내리다보면 Buildpacks라는 항목이 보일 것이다. 여기서 Add buildpack 버튼을 눌러주자.

aa

그러면 무언가의 창이 뜰 것이다. 우리는 봇 코드를 파이썬으로 작성했으므로, 밑에 보이는 python 버튼을 눌러주자. 그리고 Save changes 버튼을 눌러주면 된다.

 

  • Heroku CLI 설치

찾다보면 Deploy라는 메뉴가 보일 것이다. (왼쪽에서 3번째 메뉴이다) 눌러서 들어가보자.

aa

여기서는 Heroku에서 자체적으로 제공하는 Git인 Heroku Git을 사용하여 업로드를 해 보도록 한다.

메뉴를 보면 Github 연동도 가능하다. Github로 연동하고 싶다면 똑같이 진행해도 무방할 것이다.

밑을 보면 Install the Heroku CLI라는 글자가 보일것이다. 그리고 주변에 Heroku CLI 글자에 하이퍼링크가 달린 것을 볼 수 있다. 눌러서 들어가면 다운로드를 받을 수 있는 사이트가 나온다. 본인의 운영체제에 맞는 설치 파일을 다운받아서 설치하도록 하자. 설치하고 나면 이제 cmd 창에서 heroku 명령어를 쓸 수 있게 된다.

 

  • CLI에서 Heroku 로그인 하기

이제는 cmd 창에서 이것저것 해야 한다. cmd 창을 열자. (윈도우 키를 누르고 cmd를 입력하면 된다)

먼저 다음 명령어를 입력해보자.

cd "봇 코드가 들어있는 경로"

만약 당신이 c:\bot 폴더에서 작업하고 있다면, cd "c:\bot"이라고 입력하면 된다.

혹시 아무런 반응이 없다면, 맨 앞에 두글자만 입력해보자. 예를 들어 작업 중인 폴더가 d:\bot이라면, d: 까지만 입력해보자. 그러면 정상적으로 이동이 될 것이다.

이동이 끝났다면, 이제 다음 명령어를 입력해보자.

heroku login

그러면 다음과 같이 나올 것이다.

aa

q를 제외한 아무 키를 입력하면 인터넷 창이 새로 뜰 것이다. Log in 버튼을 눌러주면 된다. 그러면 cmd 창에 당신이 로그인 한 계정 이름이 나타날 것이다.

 

  • 추가 파일 생성하기

이제 Heroku에 업로드할 준비가 되었지만, 필요한 파일이 조금 더 있다.

우리는 파이썬 코드를 업로드하고, app이 이 코드를 실행해주기를 바란다. 그런데, app은 우리가 무슨 코드를 실행하기를 원하는질 모른다. 그래서 우리는 app에게 너가 실행하기 시작하면 이 동작을 해 줫으면 좋겠어! 라는 것을 알려주는 파일이 필요하다.

ProcFile이란 파일을 하나 생성하자. 확장자가 없음에 주목하라. 그리고 이 ProcFile 파일을 메모장에 넣어서 다음과 같이 입력하자.

worker: python "봇 코드"

만약 여러분이 지금까지 작성한 코드를 bot.py에다가 작성했으면, 다음과 같이 입력하면 된다.

worker: python bot.py

그리고 저장하면 된다. 그러면 이제 ProcFile 준비는 끝이다.

 

만들어야 할 파일이 하나 더 있다. requirements.txt 파일이다. 우리는 pip를 통해 discord.py를 설치했지만, app에서 discord.py를 설치한 적은 없다! 따라서 app에게도 discord.py 설치를 시켜줘야 한다.

그래서 requirements.txt가 필요한 것이다. 실행하기 전에 이 동작들을 수행하여 필요한 것들을 설치해 두도록! 이라고 알려주는 것이 바로 이 파일이다.

requirements.txt에 다음과 같이 적어두자.

git+https://github.com/Rapptz/discord.py

이러면 app이 실행하기 전에 위의 경로에서 discord.py를 설치하게 될 것이다.

 

  • 파일 업로드 하기

이제 필요한 파일의 준비는 끝났다. 이제 파일을 Heroku Git에 업로드를 할 차례다.

cmd로 돌아가서, 다음 명령어를 입력하자.

git init

그러면 비어있는 Git이 생성/또는 재생성 되었다는 메시지를 볼 수 있을 것이다. 그리고 다음 명령어도 이어서 입력하자.

heroku git:remote -a "app 이름"

어떤 app의 git을 사용할 것인지를 정하는 명령어이다. "app 이름"에는 여러분이 정한 app 이름을 집어넣으면 된다. 예를 들어 지금 예시에서 생성한 app의 이름은 softcodehellobot이다. 그러면 이렇게 입력하면 된다.

heroku git:remote -a softcodehellobot

완료했다면 이제 다음 명령어를 입력하자.

git add .

이러면 현재 작업중인 폴더에 있는 모든 파일들을 git에 등록하게 된다.

혹시라도 등록되지 않았으면 하는 파일이 있다면, add 뒤에 파일을 하나 하나 등록하도록 하자

그리고 다음에는 commit을 해야 한다. 다음과 같이 입력하자.

git commit -am "아무말"

이러면 지금까지 add했던 항목들을 Heroku git에 저장하게 된다. 아무말에는 말 그대로 아무말이나 쓰면 된다. 이 commit에 대한 기록을 남기는 것이므로, 기왕이면 왜 이런 코드를 업로드 했는지에 대한 내용을 쓰는 것이 좋겠다.

그리고 실제로 반영된 commit을 밀어넣는 동작을 다음 명령어를 통해 수행할 수 있다.

git push heroku master

그러면 수많은 텍스트들이 뜨다가 어느 순간 멈추는 때가 올 것이다. 이제 파일 업로드가 끝났다.

 

  • app 실행하기

이제 app을 실행하기만 하면 된다. 다시 app의 첫 화면으로 돌아가보자.

왼쪽에서 두 번째 메뉴를 보면 Resources라는 메뉴가 보일 것이다. 여기로 이동해보자.

이동하면 무언가가 있을 수도 있고, 없을 수도 있다. 없다면 조금만 기다려보자.

그러면 다음과 같이 우리가 등록한 파이썬 코드의 이름이 보일 것이다.

aa

맨 오른쪽의 연필 모양을 눌러 수정을 시작하고, 토글 버튼을 눌러서 봇을 킨 후, Confirm 버튼을 눌러주자. 그러면 드디어 봇이 실행된다!

이제 봇은 Heroku에서 24시간 내내 돌아가게 될 것이다.

그렇다고 항상 24시간 켜져있는 것은 아니다. 하루에 한 번씩 껐다 켜질 것이다. 따라서 파이썬 내 자료구조가 24시간 유지되지는 않을 것이다.

 


 

여기까지 진행했다면 이제 봇 만들기를 어떻게 시작하면 되는지 조금은 감이 왔을 것이다. 이 이후의 진행은 이제 본인의 능력에 달려있다. 즐거운 봇 만들기 세상에 온 것을 환영한다!

 

Reference : 이 포스팅은 다음 사이트 및 영상을 참고하여 작성하였다.

https://www.youtube.com/watch?v=BPvg9bndP1U
https://realpython.com/how-to-make-a-discord-bot-python/
https://discordpy.readthedocs.io/en/latest/

 

Comments