본문 바로가기
discord.py

[Discord.py] 디스코드 봇을 직접 만들어보자 #2 (Slash 명령어)

by 뉴아뉴큐 2023. 8. 20.
반응형

 

디스코드 봇 개발 #1 (사전 준비)

https://newanewq.tistory.com/3

디스코드 봇 개발 #2 (Slash)

https://newanewq.tistory.com/4

디스코드 봇 개발 #3 (Embed)

https://newanewq.tistory.com/5

디스코드 봇 개발 #4-1 (modal)

https://newanewq.tistory.com/7

디스코드 봇 개발 #4-1 (Select Menu)

https://newanewq.tistory.com/9

https://newanewq.tistory.com/3

 

지난 1편에서 코드를 작성하기 전 단계까지 준비를 완료 하였다. 

이제 어떠한 봇을 만들 것인지 정한 뒤 알맞게 코딩만 해준다면 봇을 완성할 수 있다.

 

글을 작성하는 시점에서 일주일 후에 훈련소에 입소를 하기에 한번 입영 날짜를 선택하면,

전역일을 알려주는 소위 전역일 계산기를 만들어 보는 것을 목표로 해보겠다.

 

추가로 디스코드 강좌를 검색하다보면 ! 같은 접두사를 이용해서 명령어를 작성하는 경우가 많은데,

이러한 방법의 경우에는 과거의 방식이며, 지금도 사용은 가능하나 100개 이하의 서버에서만 사용이 가능하고 

이후 사용하기 위해서는 추가로 디스코드에 사용 허가를 받아야하는데, 받기가 어려운 것으로 알고 있다.

처음부터  "/" 슬레쉬 명령어를 이용하여 봇을 작성하는 것이 나은 방법이라고 생각 하여 이 글에서는 Slash 명령어를 

이용한 봇 작성을 하도록 하겠다.

 

Part # 2-1 / 봇 작동을 위한 기본 코드 작성

우선 봇이 잘 동작 하는지 확인하기 위한 코드를 작성 해보도록 하겠다.

아래 코드를 main.py 파일에 작성한 뒤 F5 - Enter를 눌러 실행 해 아래와 같은 화면이 나오며,

초대한 디스코드 봇이 온라인으로 표기된다면 성공이다.

#!/usr/bin/env python

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='|',intents=discord.Intents.all())

@bot.event
async def on_ready():
    print("봇 실행")

bot.run('[자신의 봇 토큰 입력]')

하단 콘솔창에 "봇 실행" 표기가 나오면 성공이다.
초대한 디스코드 봇이 온라인으로 전환된 모습

 

해당 봇은 아무런 기능을 가지고 있지 않기 때문에 vs code에서 shift + F5를 눌러 봇을 종료해준다.

 

Part # 2-2 / 해당 봇에 기능 추가

글을 시작하며 적어 두었듯이 강좌를 작성하며 만들 봇의 기능은 입영일을 입력하면 

특정 명령어를 사용해 봇을 호출시 전역일을 알려주는 봇을 만들것이다.

 

우선은 봇에 명령어를 입력하면 반환을 해주는 기능을 만들도록 하자

 

우선 아래와 같이 코드를 추가해주자 코드에 대한 설명은 결과를 보며 작성하도록 하겠다.

코드를 작성 후 F5를 눌러 실행한 뒤 디스코드로 이동해 채팅창에 "/"를 입력해보자

#!/usr/bin/env python

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='|',intents=discord.Intents.all())

@bot.event
async def on_ready():
    print("봇 실행")


@bot.tree.command(name="test1", description="test2")
async def test3(interaction: discord.Interaction):
    embed = discord.Embed(title="test4", color=0x00ff00)
    embed.add_field(name="test5", value="test6", inline=False)
    await interaction.response.send_message(embed=embed)

bot.run('봇 토큰')

"/"를 입력하면 사용가능한 명령어 창이 뜨며 test봇의 명령어가 뜨게 된다.

초반에는 명령어가 업데이트 되는데 시간이 걸려 뜨지 않을 수 있는데

봇을 켜두고 한 5분정도 기다렸다가 디스코드를 재시작 하면 뜰것이다.

 

/test1 이라는 명령어가 검색 되었으니 사용해보자

/test1 명령어를 사용한 모습

/test1 명령어를 사용한 모습이다.

 

아래 코드를 보며 설명하자면 각 코드는 아래와 같다.

test1 = 실제 디스코드에서 사용하고 표시 될 명령어

test2 = 해당 명령어를 입력하기 전 명령어에 대한 설명

test3 = 함수 이름으로 따로 디스코드에서 표시될일은 없다.

test4, 5, 6 = embed라는 디스코드 내 문자/이미지를 깔끔하게 표시해주는 형식 (embed 설명은 #3강에서 작성하도록 하겠다.)

@bot.tree.command(name="test1", description="test2")
async def test3(interaction: discord.Interaction):
    embed = discord.Embed(title="test4", color=0x00ff00)
    embed.add_field(name="test5", value="test6", inline=False)
    await interaction.response.send_message(embed=embed)

 

2편에서는 Slash 명령어를 작성하는 방법에 대해서 간단하게 알아보았다.

다음 편에서는 embed 명령어에 대해서 알아보도록 하겠다.

 

디스코드 봇 개발 #1 (사전 준비)

https://newanewq.tistory.com/3

디스코드 봇 개발 #2 (Slash)

https://newanewq.tistory.com/4

디스코드 봇 개발 #3 (Embed)

https://newanewq.tistory.com/5

디스코드 봇 개발 #4-1 (modal)

https://newanewq.tistory.com/7

디스코드 봇 개발 #4-1 (Select Menu)

https://newanewq.tistory.com/9

반응형

댓글