본문 바로가기
개발

디스코드 봇 만들기 #1

by wafla 2024. 8. 27.

디스코드 봇 설정 및 테스트

간단한 메서드를 통해 봇을 생성, 설치하고 잘 작동하는지 확인해 봅시다.

 

1. 봇 생성

봇 생성 과정을 통해 디스코드에서 맞춤형 기능을 제공하는 봇을 만들고, 이를 서버에 추가하는 방법을 단계별로 설명해보겠습니다. 

 

먼저, 디스코드 봇을 생성하기 위해서 Discord Developer Portal에 접속해야 합니다. 이 포털은 디스코드에서 봇이나 다른 애플리케이션을 관리하고 설정하는 곳으로, 로그인을 하면 자신의 계정과 연동된 애플리케이션을 관리할 수 있습니다. 포털에 접속 후, 오른쪽 위에 위치한 New Application 버튼을 눌러 새로운 애플리케이션을 생성합니다. 

기본 화면

 

 

여기서 애플리케이션의 이름을 정하고, Create 버튼을 눌러 디스코드 봇을 만들어줍니다.

New Application을 누르면 나오는 화면

 

 

이제, 봇을 만드는 과정에서 필요한 코드를 작성하기 위해 Pycord 사이트에 접속해봅시다. Pycord는 디스코드 API와 상호작용할 수 있는 파이썬 라이브러리로, 슬래시 명령어와 같은 기능을 쉽게 구현할 수 있습니다. Pycord의 Quickstart 예제 코드에서는 기본적인 봇을 만드는 방법을 보여주며, 이 코드를 바탕으로 간단한 봇을 만들어 테스트해볼 수 있습니다.

Quickstart
코드 예시

 

 

2. 서버 생성

우선, 봇의 기능을 구현하기 위해 guild_ids와 token이 필요합니다. guild_ids는 디스코드 서버의 고유 ID를 의미하며, token은 봇을 실행하기 위한 인증 토큰입니다. 이를 코드에 포함시키기 위해서는 먼저 디스코드에서 설정으로 이동하여 고급 옵션을 활성화하고, 개발자 모드를 켭니다. 이렇게 하면 서버의 ID를 쉽게 복사할 수 있습니다.

설정 - 고급 - 개발자모드
서버명 우클릭

 

 

위 사진처럼 디스코드에서 사용할 서버를 하나 만들어봅시다. 채널을 생성하고 채널명을 우클릭하면 서버 ID 복사하기 옵션이 나타납니다. 이 ID를 복사한 후, 코드에 포함시킵니다. 아래는 코드 예시입니다.

import discord

bot = discord.Bot()

@bot.event
async def on_ready():
    print(f"We have logged in as {bot.user}")

@bot.slash_command(guild_ids=['123456789'])
async def hello(ctx):
    await ctx.respond("Hello!")

bot.run("your token here")

 

 

3. Pycord 설치

위의 코드를 사용하기 위해 Pycord공식사이트에 나와있는대로 Pycord 라이브러리를 설치합니다. 개발 툴 터미널이나 cmd를 실행해서 설치하시면 됩니다. 두 명령어 중에 편한거 쓰시면 되겠습니다.

python3 -m pip install -U py-cord

py -3 -m pip install -U py-cord

공식 홈페이지에 알려주는 설치 방법

 

 

4. 토큰 번호 확인

이제 토큰 번호를 확인해봅시다. 다시 Discord Developer Portal에 접속하여, 왼쪽 메뉴에서 Bot 탭을 선택합니다. 그리고 ADD BOT을 클릭해 아래와 같이 봇을 생성합니다. 여기서 Reset Token 버튼을 클릭하면 새로운 토큰을 생성할 수 있으며, 이 토큰을 위의 코드에서 "YOUR_TOKEN_HERE" 부분에 넣어줍니다. guild_ids 역시 문자열 형식으로 넣어야 합니다.

Bot 클릭
Reset Token 클릭

 

 

5. 봇 추가

코드를 작성하고 실행하면, 아직 봇이 서버에 추가되지 않았기 때문에 오류가 발생할 수 있습니다.  봇을 서버에 추가하려면, 디스코드 개발자 포털 화면의 왼쪽에 위치한 Installation으로 이동하면 됩니다.

설치 url을 클릭

 

 

화면을 살짝 밑으로 내려보면 권한을 부여할 수 있는 창이 뜨는데 여기서 필요한 권한을 선택하고, 생성된 URL을 통해 서버에 봇을 추가합니다. 봇을 서버에 추가한 후, 코드를 다시 실행하면, 봇이 정상적으로 로그인되어 터미널에 have logged in as YOUR_BOT_NAME 같은 메시지가 출력될 것입니다.

권한 부여 전
권한 부여 후

 

 

url을 클릭하여 서버에 봇을 추가합니다.  서버에 추가를 누르고 봇을 추가할 채널을 선택한 후 봇에게 부여할 권한도 체크해주면 됩니다. 봇을 서버에 추가한 후, 코드를 다시 실행하면, 봇이 정상적으로 로그인되어 터미널에 have logged in as YOUR_BOT_NAME 같은 메시지가 출력될 것입니다.

봇이 추가된 모습

 

 

6. 작동 확인

이제 디스코드에서 hello 명령어를 테스트해봅시다. 디스코드 채팅창에서 /hello를 입력하고 실행하면, 봇이 Hello!라는 응답을 반환할 것입니다. 

/hello 명령어가 뜨는 모습
정상적으로 작동되는 모습

 

 

이로써 기본적인 봇의 기능이 구현되었고, 특정 서버에만 명령어를 제한할 필요가 없다면, guild_ids를 생략해 모든 서버에서 사용 가능하도록 설정할 수도 있습니다.

@bot.slash_command()
async def hello(ctx):
    await ctx.respond("Hello!")

 

 

7. 개발 방향

이제 본격적으로 봇의 기능을 확장해봅시다. 개발 방향은 특정 시간에 역할을 부여하고, 그 시간에 봇이 해당 역할을 가진 사용자들을 멘션하는 것입니다. 예를 들어, 봇이 사용자가 특정 시간대에 책을 읽도록 알림을 보내고, 사용자는 그 시간에 읽은 책의 내용을 채팅에 공유하는 방식입니다.

 

이를 구현하기 위해서는 먼저 00부터 23까지의 시간을 의미하는 역할을 설정해야 합니다. 각 사용자는 원하는 시간대를 선택하여 봇을 통해 자신의 역할을 부여받게 됩니다. 그 후, 봇은 설정된 시간에 맞춰 역할을 가진 사용자들에게 알림을 보내고, 사용자는 해당 알림을 받으면 책을 읽고, 읽은 내용(페이지)을 채팅에 기록합니다.

 

 

목차 -

 

디스코드 봇 만들기 #0
https://wafla.tistory.com/12
디스코드 봇 만들기 #1
https://wafla.tistory.com/13
디스코드 봇 만들기 #2
https://wafla.tistory.com/15
디스코드 봇 만들기 #3
https://wafla.tistory.com/16

디스코드 봇 만들기 #4

https://wafla.tistory.com/17

'개발' 카테고리의 다른 글

디스코드 봇 만들기 #3  (2) 2024.08.31
디스코드 봇 만들기 #2  (0) 2024.08.29
디스코드 봇 만들기 #0  (0) 2024.08.27
양력 음력 생일 변환 어플  (0) 2024.01.17
24시간 돌아가는 코인 시세 알림 봇 만들기 #3  (0) 2024.01.04