디스 코드 봇 소스 - diseu kodeu bos soseu

지난 시간에 작업 환경 만들기까지 완료했습니다.

이번 시간에는 봇을 등록하고, 필요한 패키지를 설치한 후, 본격적으로 봇 코딩을 시작하겠습니다.

1. 디스코드 앱 등록

디스코드 봇을 만드려면, 우선 애플리케이션을 디스코드에 등록해야합니다.

디스코드 개발자 포털에 접속합니다.

디스 코드 봇 소스 - diseu kodeu bos soseu

첫 화면은 위와 같을 겁니다. 이제 오른쪽 위의 New Application 버튼을 클릭해서 새 앱을 만들어봅시다.


디스 코드 봇 소스 - diseu kodeu bos soseu

New Application 버튼을 클릭하고, 앱의 이름을 입력하고 Create 버튼을 클릭해서 앱을 생성합니다.

단, 이 이름은 봇의 이름을 정하는 것이 아닙니다. 그저 '앱'의 이름일 뿐입니다. 봇 이름 설정은 곧 알려드리겠습니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

앱을 생성하면, 위와 같은 화면이 등장합니다. 이제 왼쪽 메뉴에서 Bot 탭을 클릭해서 봇 설정으로 이동합니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

저희는 이 앱을 봇으로 사용할 것이기 때문에, 봇으로 등록해야 합니다. 오른쪽의 Add Bot 버튼을 클릭해서 봇으로 등록해줍니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

Yes, do it! 을 클릭합니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

이제 봇이 등록되었습니다. 중간의 USERNAME 필드에서 봇의 이름을 설정할 수 있고, 그 왼쪽의 아이콘을 클릭하면 봇의 프로필 사진을 변경할 수 있습니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

이제 TOKEN 필드 아래의 Copy를 눌러 봇 토큰을 복사해줍니다. 이 토큰은 네이버, 구글 등의 비밀번호와 같습니다. 봇마다 다르게 부여되는 고유한 비밀번호이므로, 절대 노출되지 않아야 합니다. 토큰이 노출되면 다른 사람이 자신의 봇을 조종할 수 있기 때문입니다. 만약 실수로 노출되었다면, Regenerate 버튼을 눌러 봇 토큰을 교체할 수 있습니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

그러면 이제 봇을 서버에 초대해 봅시다. 왼쪽 메뉴에서 OAuth2 탭으로 이동 후, SCOPES 메뉴에서 bot을 선택합니다. 그리고 그 아래에 생성된 주소로 접속합니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

봇 추가하기: 아래의 선택 상자에서 봇을 추가할 서버를 선택합니다. 제 경우는 Arpa라는 이름의 서버에 추가하겠습니다.

선택을 완료했다면 승인 버튼을 누릅니다.

파이썬으로 디스코드 봇을 쉽게 개발하려면, discord.py 라이브러리를 설치해야 합니다. 이 라이브러리 없이 제대로 된 디스코드 봇을 만들기는 불가능에 가깝다고 생각합니다.

디스 코드 봇 소스 - diseu kodeu bos soseu

시작메뉴 검색창에서 PowerShell 을 검색하고, 실행합니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

위와 같이 푸른색 창이 뜹니다. 여기에 다음과 같이 입력 후 엔터키를 누릅니다.

python -m pip install discord

디스 코드 봇 소스 - diseu kodeu bos soseu

라이브러리가 설치가 시작되게 됩니다. 잠시 후에 다음과 같이 Successfully installed ... 라고 뜬다면 성공적으로 설치된 것입니다.

3. 봇을 켜보자

지난 강의처럼 VS코드를 실행합니다.

그리고 bot.py 파일에 다음과 같이 코드를 작성합니다.

import discord
from discord.ext import commands

client = commands.Bot(command_prefix='*')

@client.command()
async def hello(ctx):
    await ctx.send('안녕하세요')

client.run('봇 토큰')

* '봇 토큰' 부분을 아까 복사했던 봇 토큰으로 바꿔주세요!

이 코드는 *hello 를 입력하면 '안녕하세요' 를 말하는 코드입니다. 이제 이 코드를 한번 실행해 볼까요?


디스 코드 봇 소스 - diseu kodeu bos soseu

봇 파일이 열린 상태에서 F5 키를 누르면 위와 같이 실행 메뉴가 뜹니다. 여기에서 Python File 을 선택하거나, 그냥 엔터만 눌러도 됩니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

봇이 실행된 상태에는 VS코드 창 밑부분이 주황색으로 변합니다.

디스 코드 봇 소스 - diseu kodeu bos soseu

봇을 끄려면 VS코드 창 상단에서 주황색 정사각형 아이콘을 클릭하고,

봇을 재시작하려면 연두색 원형 화살표 아이콘을 클릭합니다.


디스 코드 봇 소스 - diseu kodeu bos soseu

이제 디스코드에 들어가보면, 아케이드봇이 온라인인 것을 볼 수 있습니다.

디스 코드 봇 소스 - diseu kodeu bos soseu

잘 작동하는지 확인해 볼까요? *hello 를 전송하니, 봇이 '안녕하세요' 라고 전송했습니다. 잘 작동하는 것을 확인했습니다.

4. 코드 설명

import discord
from discord.ext import commands

client = commands.Bot(command_prefix='*')

@client.command()
async def hello(ctx):
    await ctx.send('안녕하세요')

client.run('봇 토큰')

아까 입력한 코드를 다시 가져왔습니다. 차근차근 설명을 해 보겠습니다.

코드

설명

import discord

from discord.ext import commands

아까 설치한 디스코드 모듈을 불러옵니다.
client = commands.Bot(command_prefix='*')

디스코드 봇 객체를 만들고

명령어 접두사는 ' * ' 으로 정합니다.

@client.command()

async def hello(ctx):

'hello' 명령어를 만듭니다.
    await ctx.send('안녕하세요') 같은 채널에 '안녕하세요' 를 전송합니다.
client.run('봇 토큰') 봇 토큰을 사용해 디스코드에 로그인하고, 봇을 시작합니다.

즉, @client.command() 데코레이터를 함수에 붙이면 하나의 명령어가 된다는 것입니다.

또, ctx.send(내용) 으로 같은 채널에 메시지를 보낼 수 있습니다.

그리고, client.run(토큰) 으로 봇이 시작됩니다.

단, client.run 뒤의 코드는 실행되지 않습니다. 따라서 모든 코드는 client.run 위에 써야 합니다.


오늘은 봇을 등록해서 서버에 초대하고, 간단한 봇 코드를 실행해 봇을 켜보기까지 했습니다.

다음 강의에서 본격적으로 봇 코딩을 시작해보도록 하겠습니다!