안녕하세요! 김코딩입니다
지금까지 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. 디스코드 개발자 포털에서 봇 생성
이제 디스코드에서 봇 계정을 만들어야 해요.
다음 단계로 따라 해보세요:
- 디스코드 개발자 포털 접속.
- New Application 버튼 클릭 → 봇 이름 입력 (예: “MyFirstBot”).
- 왼쪽 메뉴에서 Bot 탭 선택 → Add Bot 클릭.
- Token 항목에서 Copy 버튼을 눌러 토큰 복사 (나중에 필요해요!). ⚠️ 토큰은 비밀입니다! 절대 공개하지 마세요.
- OAuth2 탭 → Scopes에서 “bot” 체크 → Bot Permissions에서 필요한 권한 체크 (“Send Messages” 등).
- 생성된 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 discord
와commands
: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")

코드 설명:
- 봇 설정:
commands.Bot
을 사용하여!
접두사를 지정한 봇을 만듭니다. - 이벤트 핸들러:
on_ready
함수는 봇이 디스코드에 연결되면 콘솔에 메시지를 출력합니다. - 명령어들:
!안녕
: “안녕하세요! 저는 여러분의 첫 번째 봇이에요!”라고 응답.!roll
: 주사위를 굴려 1부터 6 사이의 랜덤 숫자를 출력.!info
: 명령어를 실행한 사용자의 디스코드 이름과 ID를 출력.
- 봇 실행:
bot.run("여기에-여러분의-토큰을-붙여넣으세요")
에서 여러분의 토큰을 넣어 실행합니다.
이 코드를 {원하는이름}.py로 저장한 후, Python으로 실행하면 봇이 제대로 작동할 거예요. 이제 여러분의 디스코드 서버에서 다양한 명령어를 테스트해보세요!
6. 문제 해결 팁
- 봇이 응답하지 않아요!:
- 토큰이 맞는지, 봇이 서버에 초대되었는지 확인하세요.
- 권한에 “Send Messages”가 체크되어 있는지 확인하세요.
- 오류: ModuleNotFoundError:
pip install discord.py
를 다시 실행해보세요.
- 한글 깨짐:
- Python 파일을 UTF-8 인코딩으로 저장하세요 (대부분의 에디터에서 기본 설정).
7. 다음 단계는?
오늘은 디스코드 봇의 기초를 배웠어요.
다음 글에서는 더 멋진 기능을 추가해볼 거예요:
- 이벤트 반응: 누군가 입장하거나 메시지를 보낼 때 자동으로 반응하기
- 음악 재생: 유튜브 링크로 음악을 재생하기
- 관리 명령어: 사용자 킥/밴 같은 기능
8. 마무리
디스코드 봇 만들기는 Python으로 할 수 있는 재미있는 프로젝트 중 하나예요.
친구들과 서버에서 직접 만든 봇을 써보면 뿌듯함이 두 배!
여러분은 어떤 봇을 만들고 싶나요? 아이디어가 있다면 댓글로 알려주세요.
다음 글에서 그걸 구현해볼 수도 있답니다. 😊
그럼 다음에 또 만나요!
[…] 디스코드 봇만들기 에서 discord.py를 이용해 기본적인 봇을 만들고 간단한 명령어(!hello, !roll)를 구현해 봤습니다. 오늘은 한 단계 더 나아가 디스코드 봇을 더욱 똑똑하고 재미있게 만들어볼 예정입니다. […]
ㄷㄷ