디스코드 봇 만들기 #1: 기초부터 시작하기

안녕하세요! 김코딩입니다
지금까지 Pygame으로 게임을 만들어 봤다면, 이번에는 색다른 도전을 해볼까요? 이번 글에서는 디스코드 봇을 만드는 기초를 배워보겠습니다. 디스코드 봇은 채팅 서버에서 명령어를 통해 다양한 기능을 수행할 수 있는 프로그램이에요. 예를 들어, “!안녕”이라고 치면 “안녕하세요!”라고 답하거나, 게임 점수를 기록하거나, 재미있는 메시지를 보내는 봇을 만들 수 있습니다. 오늘은 Python의 discord.py 모듈을 사용해 봇을 만들어볼게요. 준비되셨나요? 그럼 시작합시다!

1. 디스코드 봇이란?

디스코드 봇은 디스코드 서버에서 자동으로 작동하는 프로그램입니다.
채팅에 반응하거나, 음악을 재생하거나, 관리 도구로도 사용될 수 있어요.
우리는 Python을 사용하여 간단한 봇을 만들어 명령어에 응답하는 기능을 구현할 거예요. 예를 들어:

  • !안녕→ “안녕하세요!” 출력
  • !roll → 주사위 굴리기 결과 출력

2. 준비물: 환경 설정하기

2-1. Python 설치 확인

먼저 Python이 설치되어 있는지 확인해야 해요.
터미널(또는 명령 프롬프트)에서 아래 명령어를 입력해보세요:

python --version

“Python 3.x.x”와 같은 결과가 나오면 OK!
만약 없다면 Python 공식 사이트에서 설치하세요.

2-2. discord.py 설치

디스코드 봇을 만들기 위해 discord.py 모듈이 필요해요.
터미널에서 아래 명령어를 실행해 설치합니다:

pip install discord.py

설치가 완료되면 Python에서 import discord를 실행해보세요. 오류 없이 실행된다면 성공입니다!

2-3. 디스코드 개발자 포털에서 봇 생성

이제 디스코드에서 봇 계정을 만들어야 해요.
다음 단계로 따라 해보세요:

  1. 디스코드 개발자 포털 접속.
  2. New Application 버튼 클릭 → 봇 이름 입력 (예: “MyFirstBot”).
  3. 왼쪽 메뉴에서 Bot 탭 선택 → Add Bot 클릭.
  4. Token 항목에서 Copy 버튼을 눌러 토큰 복사 (나중에 필요해요!). ⚠️ 토큰은 비밀입니다! 절대 공개하지 마세요.
  5. OAuth2 탭 → Scopes에서 “bot” 체크 → Bot Permissions에서 필요한 권한 체크 (“Send Messages” 등).
  6. 생성된 URL로 봇을 서버에 초대.

3. 첫 번째 봇 코드 작성하기

이제 간단한 봇을 만들어봅시다. 아래 코드는 봇이 온라인 상태를 표시하고, 메시지에 반응하는 기본 예제입니다.

import discord
from discord.ext import commands

# 명령어 접두사 설정 (예: !안녕)
bot = commands.Bot(command_prefix="!")

# 봇이 준비되었을 때 실행
@bot.event
async def on_ready():
print(f"{bot.user}가 온라인이에요!") # 봇 이름과 ID 출력

# !안녕명령어에 반응
@bot.command()
async def 안녕(ctx):
await ctx.send("안녕하세요! 저는 여러분의 첫 번째 봇이에요!")

# 봇 실행 (토큰 입력 필요)
bot.run("여기에-여러분의-토큰을-붙여넣으세요")

코드 설명

  • import discordcommands:
    • discord.py에서 기본 기능과 명령어 처리를 가져옵니다.
  • commands.Bot:
    • 봇의 명령어 접두사(여기선 !)를 설정합니다.
  • on_ready:
    • 봇이 디스코드에 연결되면 콘솔에 메시지를 출력합니다.
  • hello 명령어:
    • !hello를 입력하면 “안녕하세요!”라고 답합니다.
    • ctx는 메시지 정보(누가 보냈는지, 어떤 채널인지 등)를 담고 있어요.
  • bot.run:
    • 복사한 토큰을 넣어 봇을 실행합니다.

4. 봇 실행하기

위 코드를 bot.py 파일로 저장하세요.
토큰을 bot.run("토큰") 부분에 붙여넣고, 터미널에서 아래 명령어를 실행합니다:

python bot.py

콘솔에 “MyFirstBot#1234가 온라인이에요!“와 같은 메시지가 뜬다면 성공!
디스코드 서버에서 !hello를 쳐보세요. 봇이 “안녕하세요!”라고 답하면 대성공! 🎉

5. 더 재미있는 기능 추가하기

기본 봇이 작동하면, 이제 간단한 기능을 추가해볼까요?

5-1. 주사위 굴리기 명령어

import random

@bot.command()
async def roll(ctx):
result = random.randint(1, 6)
await ctx.send(f"주사위를 굴렸어요: {result}")
  • !roll을 입력하면 1부터 6까지 랜덤 숫자를 출력합니다.

5-2. 사용자 정보 출력

@bot.command()
async def info(ctx):
user = ctx.author # 명령어를 입력한 사용자
await ctx.send(f"이름: {user.name}\nID: {user.id}")
  • !info로 자신의 디스코드 이름과 ID를 확인할 수 있습니다.

물론이죠! 전체 명령어들을 합친 최종 코드를 마지막에 추가해드리겠습니다. 아래는 앞서 설명한 모든 기능을 포함한 디스코드 봇 코드입니다.

import discord
from discord.ext import commands
import random

# 명령어 접두사 설정 (예: !안녕)
bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())

# 봇이 준비되었을 때 실행
@bot.event
async def on_ready():
print(f"{bot.user}가 온라인이에요!") # 봇 이름과 ID 출력

# !안녕 명령어에 반응
@bot.command()
async def 안녕(ctx):
await ctx.send("안녕하세요! 저는 여러분의 첫 번째 봇이에요!")

# !roll 명령어로 주사위 굴리기
@bot.command()
async def roll(ctx):
result = random.randint(1, 6)
await ctx.send(f"주사위를 굴렸어요: {result}")

# !info 명령어로 사용자 정보 출력
@bot.command()
async def info(ctx):
user = ctx.author # 명령어를 입력한 사용자
await ctx.send(f"이름: {user.name}\nID: {user.id}")

# 봇 실행 (여기에 여러분의 토큰을 붙여넣으세요)
bot.run("MTM0NDQ4Mjk2OTkwNTI3MDg5MA.GIcZz5.lXPHbrcYl4hCF6Ug3OJy_NYtM90FFZVk9nLIPk")

코드 설명:

  1. 봇 설정: commands.Bot을 사용하여 ! 접두사를 지정한 봇을 만듭니다.
  2. 이벤트 핸들러: on_ready 함수는 봇이 디스코드에 연결되면 콘솔에 메시지를 출력합니다.
  3. 명령어들:
    • !안녕: “안녕하세요! 저는 여러분의 첫 번째 봇이에요!”라고 응답.
    • !roll: 주사위를 굴려 1부터 6 사이의 랜덤 숫자를 출력.
    • !info: 명령어를 실행한 사용자의 디스코드 이름과 ID를 출력.
  4. 봇 실행: bot.run("여기에-여러분의-토큰을-붙여넣으세요")에서 여러분의 토큰을 넣어 실행합니다.

이 코드를 {원하는이름}.py로 저장한 후, Python으로 실행하면 봇이 제대로 작동할 거예요. 이제 여러분의 디스코드 서버에서 다양한 명령어를 테스트해보세요!

6. 문제 해결 팁

  • 봇이 응답하지 않아요!:
    • 토큰이 맞는지, 봇이 서버에 초대되었는지 확인하세요.
    • 권한에 “Send Messages”가 체크되어 있는지 확인하세요.
  • 오류: ModuleNotFoundError:
    • pip install discord.py를 다시 실행해보세요.
  • 한글 깨짐:
    • Python 파일을 UTF-8 인코딩으로 저장하세요 (대부분의 에디터에서 기본 설정).

7. 다음 단계는?

오늘은 디스코드 봇의 기초를 배웠어요.
다음 글에서는 더 멋진 기능을 추가해볼 거예요:

  • 이벤트 반응: 누군가 입장하거나 메시지를 보낼 때 자동으로 반응하기
  • 음악 재생: 유튜브 링크로 음악을 재생하기
  • 관리 명령어: 사용자 킥/밴 같은 기능

8. 마무리

디스코드 봇 만들기는 Python으로 할 수 있는 재미있는 프로젝트 중 하나예요.
친구들과 서버에서 직접 만든 봇을 써보면 뿌듯함이 두 배!
여러분은 어떤 봇을 만들고 싶나요? 아이디어가 있다면 댓글로 알려주세요.
다음 글에서 그걸 구현해볼 수도 있답니다. 😊
그럼 다음에 또 만나요!

2 Comments

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다