파이썬으로 디스코드 봇 만들기: 친구랑 수다 떨듯 쉽게 알려줄게
혹시 디스코드 봇 만들어보고 싶었는데, 뭔가 너무 복잡해 보여서 포기했던 적 있나요? 저도 처음엔 딱 그랬어요. 뭔가 개발자만 할 수 있을 것 같고, 코드 보면 머리 아플 것 같고. 근데 막상 해보니까, 생각보다 훨씬 쉽더라구요. 이 글에서는 진짜 친구한테 설명하듯, 어렵지 않게! 파이썬으로 디스코드 봇 만드는 과정을 차근차근 풀어볼게요. 한 100줄 정도만 쓰면 완성할 수 있어서 부담도 없어요!
오늘 우리가 할 것들:
- 파이썬 작업 공간 준비하기
- 디스코드.py 설치하고 연결하기
- 간단한 명령어랑 반응 이벤트 만들기
- 역할 주고 뺏기 기능 추가하기
- DM 보내기, 답장 기능 만들기
- 금지어 필터링으로 서버 청정화(?)
- 귀여운 투표 시스템 만들기
- Render로 24시간 돌아가는 봇 만들기!
자, 편하게 커피 한 잔 들고 시작해봅시다 ☕️

Step 1: 새 프로젝트 폴더 만들기
새 폴더 만들고 거기에 파일 세 개 준비해요:
- requirements.txt (필요한 라이브러리 목록)
- .env (비밀 토큰 저장소!)
- main.py (우리가 코딩할 메인 파일)
requirements.txt에는 이렇게 적어요:
discord.py
python-dotenv
.env 파일엔:
DISCORD_TOKEN=
비워두세요! 곧 토큰 채워넣을 거니까.
Step 2: 필요한 도구 설치하기
터미널 열고 쿨하게 한 줄 입력:
pip install -r requirements.txt
짠! 필요한 거 다 설치 완료.
Step 3: 디스코드 개발자 페이지 다녀오기
discord.com/developers로 가서 로그인하고 "New Application" 눌러요. 이름은 아무거나. 저는 MyBot이라고 했어요.
그 다음에는:
- "Bot" 메뉴에서 "Add Bot" 클릭
- "Public Bot" 체크✅
- "Reset Token" 눌러 토큰 복사! .env 파일에 붙여넣기
꿀팁: 이 토큰은 절대절대 공유하면 안 돼요. 누가 훔쳐가면 내 봇이 남의 손에...
그리고 권한도 챙깁니다:
- Server Members Intent
- Message Content Intent
이 두 개 켜줘야 우리가 메시지랑 멤버 데이터 만질 수 있어요!
Step 4: 내 서버에 봇 초대하기
OAuth2 > URL Generator로 갑시다:
- "bot" 체크하고
- 권한은 이런 거 선택:
- Manage Roles (역할 관리)
- View Channels (채널 보기)
- Send Messages (메시지 보내기)
- Manage Messages (메시지 삭제도 해야죠)
- Add Reactions (이모지 반응은 필수)
- Embed Links (예쁜 링크)
생긴 URL 복사해서 브라우저에 붙여넣으면, 내 서버에 봇을 초대할 수 있어요!
Step 5: 코딩 시작! (긴장 풀고)
main.py에 아래 코드부터 적어요:
import discord
from discord.ext import commands
import logging
from dotenv import load_dotenv
import os
load_dotenv()
token = os.getenv("DISCORD_TOKEN")
그리고 로그 파일 만들어서 기록도 남겨줘요:
handler = logging.FileHandler(filename="discord.log", encoding="utf-8", mode="w")
intents도 설정합니다:
intents = discord.Intents.default()
intents.message_content = True
intents.members = True
드디어 봇 생성!
bot = commands.Bot(command_prefix="!", intents=intents)
이벤트 핸들러도 추가해야 해요:
@bot.event
async def on_ready():
print(f"드디어 연결 완료! 내 이름은 {bot.user.name}")
@bot.event
async def on_member_join(member):
await member.send(f"{member.name}님, 환영해요! 🎉")
@bot.event
async def on_message(message):
if message.author == bot.user:
return
if "badword" in message.content.lower():
await message.delete()
await message.channel.send(f"{message.author.mention}, 그 단어는 사용 금지에요!")
await bot.process_commands(message)
Step 6: 명령어 맛보기
Hello 명령어:
@bot.command()
async def hello(ctx):
await ctx.send(f"안녕하세요 {ctx.author.mention}님 👋")
역할 주기/빼기:
@bot.command()
async def assign(ctx):
role = discord.utils.get(ctx.guild.roles, name="Gamer")
if role:
await ctx.author.add_roles(role)
await ctx.send(f"{ctx.author.mention}님, 이제 {role.name} 역할을 가졌어요!")
else:
await ctx.send("그 역할을 찾을 수 없네요 😢")
@bot.command()
async def remove(ctx):
role = discord.utils.get(ctx.guild.roles, name="Gamer")
if role:
await ctx.author.remove_roles(role)
await ctx.send(f"{ctx.author.mention}님, {role.name} 역할을 잃었어요...")
특정 역할 가진 사람만 볼 수 있는 비밀 명령어:
@commands.has_role("Gamer")
@bot.command()
async def secret(ctx):
await ctx.send("비밀의 공간에 오신 걸 환영합니다 🌟")
@secret.error
async def secret_error(ctx, error):
if isinstance(error, commands.MissingRole):
await ctx.send("이 명령어는 선택받은 사람만 쓸 수 있어요.")
Step 7: 재미있는 기능 추가
DM 보내기:
@bot.command()
async def dm(ctx, *, message):
await ctx.author.send(f"DM으로 답장왔어요: {message}")
메시지에 직접 답장하기:
@bot.command()
async def reply(ctx):
await ctx.reply("여기에 바로 답장합니다 📨")
투표 기능 만들기:
@bot.command()
async def poll(ctx, *, question):
embed = discord.Embed(title="빠른 투표!", description=question)
poll_message = await ctx.send(embed=embed)
await poll_message.add_reaction("\U0001F44D") # 좋아요
await poll_message.add_reaction("\U0001F44E") # 싫어요

Step 8: 봇 실행하기
main.py 마지막에 추가해요:
bot.run(token, log_handler=handler, log_level=logging.DEBUG)
이제 터미널에서 실행하면, 봇이 짜잔~ 하고 온라인으로 연결돼요.
Step 9: 24시간 돌아가는 봇 만들기
컴퓨터를 꺼도 걱정 없는 봇 만들고 싶죠? Render 추천드려요:
- GitHub에 코드 업로드
- Render에 연결
- 실행 명령어는 python main.py
게다가 Render는 소규모 프로젝트라면 무료 플랜도 있어요! 진짜 편해요.
마무리하면서
어때요? 생각보다 훨씬 쉽죠? 직접 만든 봇이 서버에서 인사도 하고, 역할도 주고, 비밀 채널도 관리할 수 있다니... 진짜 신기해요.
한 줄 한 줄 만들어가면서, 나만의 디스코드 세상을 만들어보세요. 조심스레 말씀드리지만, 이거 한 번 시작하면 진짜 시간 순삭입니다. 😆
그럼, 다음에 더 신박한 기능으로 또 만나요! 🚀
'SW > Python' 카테고리의 다른 글
Python 실무에서 매일 쓰는 유용한 툴 추천 TOP 5 (0) | 2025.06.13 |
---|---|
파이썬 컨텍스트 매니저, 메타클래스, 싱글디스패치 함수 예제로 배우는 실전 활용법 (0) | 2025.05.07 |
Python 코드로 스프레드시트 자동화하는 법 – Quadratic AI 활용기 (0) | 2025.04.24 |
2025년 파이썬 개발자가 되는 법: 데이터 사이언스, 백엔드, DevOps 로드맵 (0) | 2025.04.11 |
Python으로 서버 관리하기: 쉽고 빠른 자동화 가이드 (0) | 2025.04.10 |