개발/디스코드 봇 제작 [PYTHON]
[디스코드 봇 제작] 2023년 기본
꾸적꾸적
2023. 2. 18. 15:00
슬 졸업 시기도 다가왔고, 정보보안기사 시험을 준비하며 취직 준비를 하고있는데,
이러다가는 뭐랄까 아무것도 남기지도 않고 허송세월을 보낼것 같아
개인적으로 프로젝트를 진행하려 마음을 다잡았을때,
취미로 하고있는 그림 그리는 디스코드 방에서 수동으로 매우 귀찮은 작업을 반복하는 것을 발견하고,
이를 봇으로 해결하는 방법이 있지 않을까, 라는 생각으로 찾아보게 되었고 개발 했습니다.
조금이라도 더 편한 방법을 만들고싶다는 개발자의 마음...
디스코드 봇은 파이썬 Nodejs 자바 뭐 다양하게 가능한데,
제가 고른건 가장 친숙하고 자신있는 파이썬.
간단하게 파이썬 코드가 어떤것이 있는지 부터 확인 한 후 바로 머리 박치기로 가장 기초부터 제작해보았습니다.
디스코드 홈페이지, 개발자 탭에서 자신의 어플리케이션을 만들고,
그 어플리케이션의 토큰 및 여러 정보들은 따로 메모장에 저장해두고 시작했습니다.
여긴 뭐 다른 사이트들에서도 많이 잘 나와있는 내용일테니 패스
from discord.ext import commands # 디스코드 봇에서 사용할 여러가지 기능을 위한 임포트
import discord # 디스코드 봇을 위한 임포트
discord_bot_token = TOKEN # 토큰 정보는 각자의 토큰 정보
intents = discord.Intents.default() # Intents 부분의 설정을 사용하기 위한 변수 불러오기
intents.message_content = True # 메세지를 쓰기위한 message_content True 설정.
# 상태에 보이고 싶은 문구 설정
# 상태 메세지는 게임 중일때 어떤 게임을 하는지를 알려주는 것이기 때문에, Game으로 설정.
bot_activity = discord.Game(name=":: DB가 싫어요 ::")
# activity 는 봇 상태를 알려주는 것
# command_prefix = "$" 는 "$" 라는 명령어 시작 구문을 만들어주는것, 아래로 예를 들자면 $ping
# intents 는 봇 Intents를 사용하기 위한 구문, 우리는 코드상으로 수정을 해주었으니 넣어줄 것.
bot = commands.Bot(activity=bot_activity, command_prefix="$", intents=intents)
#################################################################
#디스코드 봇 이벤트
@bot.event # 안쓰면 작동을 안함
async def on_ready(): # 봇이 켜져있음을 확인하는 동작
print('Bot: {}'.format(bot.user))
#################################################################
#디스코드 봇 커맨드
# 인사
@bot.command() # 안쓰면 작동을 안함
async def ping(ctx): # ping이라는 명령어를 쓸때,
await ctx.send("pong") # pong이라는 메세지로 답변한다.
bot.run(discord_bot_token) # 봇 실행 문구
여기서 고친것이 다른 홈페이지와 비굘르 해보니 많이 다른데,
사실 문제가 좀 많이 발생을 했고, 그 문제가
intents 라는 저 변수였습니다(...)
아직도 정확히 왜 저게 문제를 일으켰는지는 잘 모르겠습니다만,
아무래도 디스코드 봇의 버전이나 파이썬의 버전 이런것에 의해 계속해서 수정되고,
디스코드 봇을 만드는 코드도 계속해서 변화해오다보니
여러 강좌들은 과거라서 문제로 작용하는것 같더라구요.
뭐 하여튼, 설명은 코드블럭에 적어둔것과 동일합니다.