이 글은 벨로그에 올려놓은 게시물을 그대로 티스토리에 옮긴 내용입니다!
원본 링크
디스코드 봇 만들기
오늘부터 드디어 해보고 싶었던 디스코드 봇을 만들 것이다.
어떤 봇을 만들거냐? 여러 기능이 있겠지만 우선적으론 롤 전적검색이 가능하도록 만드려고 한다. 차근차근 한 뒤 음악 듣는 기능이나 자동 알림을 보내도록 하는 기능 등 여러가지를 추가할 생각이다.
오늘은 가볍게 만들어 보기만 하고 test를 돌려보는 정도로만 진행했다.
우선 봇을 만들기 위해 디스코드 개발자 포털로 들어간다.
New Applications을 눌러서 이름을 지정해주고 만들어준다.
사진 아래에 토큰이 제공되는데 이 토큰은 나중에 코드상에서 봇에 접속하기위한 고유키이므로 까먹지 않게 따로 잘 보관한다.
OAuth2 > URL Generator 에서 bot을 체크하면 맨 아래 URL이 생성되는데 이 URL을 카피해서 주소창에 입력하면
어디 디스코드 서버에 초대할 것인지 묻는 창이 나온다.
승인해주니까 오프라인 상태로 서버에 잘 들어왔다.
이제 온라인으로 바꿔주고, !인사
를 입력하면 안녕하세요
라는 문구를 출력할 수 있도록 간단한 테스트 코드를 작성해볼 것이다.
우선 사용한 언어는 쉽고 간단한 파이썬으로 하기로 했다.
파이썬으로 디스코드 봇을 만들기 위해서는 파이썬용 디스코드 봇 API인 discord.py를 설치해야 한다.
터미널에서 pop install discord.py
입력해서 설치해주고
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='!', intents=intents)
token = '토큰 주소 넣기'
@bot.event
async def on_ready():
print('Logged in as')
print(bot.user.name)
print(bot.user.id)
print('--------')
@bot.command()
async def 인사(ctx):
await ctx.send("안녕하세요")
bot.run(token)
위와 같은 내용을 입력해준다.
on_ready() 부분은 오프라인이였던 봇을 온라인으로 활성화 시켜주고, command 부분은 인사
를 입력하면 봇이 안녕하세요
를 출력하는 기능 부분이다.
하지만 온라인은 잘 활성이 됐지만 메시지는 보내도 응답이 없는 것을 확인헀다.
알아보니 권한 문제로 봇이 명령어를 입력받아도 메시지를 보낼 수 없던 것이였다.
실제로 코드를 실행해보면WARNING discord.ext.commands.bot Privileged message content intent is missing, commands may not work as expected.
과 같은 경고문이 뜨는데 이 경고문은 권한이 필요한 메시지 내용에 대한 intent 설정이 제대로 이루어지지 않아 발생하는 내용이다.
이로 인해 일부 기능이 예상대로 작동하지 않을 수 있고, 이걸 해결하기 위해 필요한 intents를 설정해주어야 한다. 나 같은 경우는 메시지를 보내는 권한이 필요하므로 우선 개발자 앱에서
Message Content Intent를 활성화 시켜주고,
intents.message_content = True
위와 같은 코드를 붙여주고 실행하면
이번엔 경고문 없이 잘 실행되는 것을 확인했다.
이제 메시지가 잘 오는지 봇에게 명령어를 입력해보자.
정상적으로 잘 동작하는 것을 확인할 수 있었다!
📌 각종 참고한 사이트
discord 개발자 공식문서
discord.py 공식문서
Real Python 디스코드 튜토리얼
참조 블로그1
참조 블로그2
사실 봇을 만들기만 하는거까지는 어렵진 않아서 전공자가 아니여도 누구나 쉽게 만들 수 있을 것 같다. 이제 시간날 때마다 기능을 하나씩 추가해서 친구들끼리 있는 서버에 초대해서 갖고 놀아야지 !