본문 바로가기
Programming

python으로 디스코드 봇 만들기 (discord.py)

by 고간디 2023. 12. 11.

파이썬에 있는 discord.py를 이용해서 디스코드 봇을 만들고 작동시켜봅시다

 


 

https://discord.com/developers/applications

 

Discord Developer Portal — API Docs for Bots and Developers

Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.

discord.com

위의 링크에 접속해주세요

만약 로그인이 안 되어 있다면 로그인을 해주세요

봇을 생성하기 위해 New Application을 눌러줍시다 

우측 상단 프로필 옆에 버튼이 있어요

 


원하는 봇 이름을 입력하고 아래 이용약관 동의에 체크해주시고 Create를 누르면 생성됩니다

 


Build-A-Bot을 보면 TOKEN이라는 게 있어요

봇 인증할 때 필요한 건데 아래 Reset Token 버튼을 눌러주세요

팝업 하나 나올텐데 Yes, do it 눌러주면 됩니다

 


그러면 문자열로 된 토큰이 생성되는데 Copy를 눌러서 저장해주세요

만약 저 토큰이 유출되거나 더 이상 사용할 수 없게 된 경우 Reset Token으로 재생성하시면 됩니다

 

토큰이 유출되면 내 봇을 다른 사람이 조종할 수 있게 되므로 유출되지 않도록 조심해주세요

 


Bot save changes

조금 더 아래로 내려서 Privileged Gateway Intents로 이동해주세요

세 가지 모두 체크해주세요

후에 Save Changes를 눌러 저장해줍시다

 


좌측 내비게이션에 OAuth2URL Generator로 이동해주세요

SCOPESbot에 체크하시고 BOT PERMISSIONS는 봇 사용 목적에 맞게 알아서 설정해주시면 되는데 저는 나중에 이걸로 뭘 할 지 모르니 Administrator로 체크했습니다

 

그러면 아래에 URL이 하나 생성되는데 그 URL로 접속해봅시다

 


원하는 서버에 봇을 추가할 수 있어요

허용되는 권한에 존재의 위기 느끼기 저런 헛소리가 있는데 디스코드가 농담으로 넣어놓은 거니까 굳이 신경 쓸 필요는 없을 것 같습니다

 


우리는 discord.py를 사용할 거니까 다운을 받아줍시다

cmd를 열어 아래 명령어를 입력해주세요

pip install discord.py

 


import discord, random
from discord.ext import commands
bot = commands.Bot(command_prefix="$", intents=discord.Intents.all())
TOKEN = "(아까 복사한 토큰 입력)"

# 로그인
@bot.event
async def on_ready():
    print(f"{bot.user.name} 로그인 성공")
    await bot.change_presence(status=discord.Status.online, activity=discord.Game('테스트')
    
# 인사
@bot.command(name="안녕", help="인사말", aliases=["인사", "하이"])
async def hello(ctx):
  hi = random.randrange(1,4)
  if hi == 1:
    await ctx.channel.send("안녕하세요")
  elif hi == 2:
    await ctx.channel.send("안녕")
  elif hi == 3:
    await ctx.channel.send("네, 안녕하세요")

# 봇 작동
bot.run(TOKEN)

간단하게 위와 같이 파이썬으로 봇 코드를 작성해봤어요

 


@bot.event
async def on_ready():
    print(f"{bot.user.name} 로그인 성공")
    await bot.change_presence(status=discord.Status.online, activity=discord.Game('테스트')

어떠한 event가 발생하면 on_ready()함수가 실행됩니다

토큰을 사용해서 봇 로그인에 성공하면 콘솔에 로그인 성공이라는 문구가 나옵니다

봇이 온라인 상태로 전환되게 만들고, 상태는 테스트하는 중 이라고 나오게 됩니다

 


실행하고 콘솔에 로그인 성공 메세지가 나온다면 이렇게 봇이 디스코드 서버에서 온라인 상태로 전환된 것을 확인할 수 있습니다

 


@bot.command(name="안녕", help="인사말", aliases=["인사", "하이"])
async def hello(ctx):
  hi = random.randrange(1,4)
  if hi == 1:
    await ctx.channel.send("안녕하세요")
  elif hi == 2:
    await ctx.channel.send("안녕")
  elif hi == 3:
    await ctx.channel.send("네, 안녕하세요")

간단한 명령어를 만드는 코드입니다

name에는 명령어가 들어갑니다

예를 들어 위의 코드 같은 경우에는 $안녕을 입력하면 지정된 명령을 수행합니다

help$help 안녕을 입력했을 때 명령어 설명을 설정할 수 있습니다

aliases는 같은 명령을 수행하는 명령어들을 여러 개 설정할 수 있게 해주는 건데 위의 코드 같은 경우 $안녕 외에도 $인사, $하이 모두 같은 명령을 수행합니다

 


 

뭐 그냥 대충 봇 간단하게 만들어봤는데 더 다양한 기능을 만들 수 있어요

굳이 길게 강좌 끌어가면서 쓰기에는 좀 귀찮기도 하고 의미도 없을 것 같아서 참조 링크만 좀 남길게요

https://discord.com/developers/docs/intro

 

Discord Developer Portal — API Docs for Bots and Developers

Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.

discord.com

공식 docs니까 잘 참고해보세용

728x90
반응형

댓글