카테고리: 디스코드 봇 만들기

디스코드 봇 만들기#3Slash Command에 서브 커맨드(Subcommand) 넣기!

목차5개 항목

안녕하세요 Mojangcam입니다 😎 이번엔 좀 더 고급 기능! Slash Command를 그룹으로 묶는 서브 커맨드 기능을 알아볼 거예요!

예를 들어…

  • /user info → 유저 정보 보기
  • /user ban → 유저 차단

이런 식으로 하나의 명령어 그룹 안에 여러 개의 기능을 넣는 거죠!


🧩 서브 커맨드? 이게 뭐야?

서브 커맨드는 /명령어 서브명령어 형태로 사용하는 구조입니다. 기능이 많은 봇일수록 깔끔하게 정리할 수 있어서 정말 유용해요!


🧑‍💻 예제 코드

Python
import discord
from discord.ext import commands
from discord import app_commands

class UserCommandGroup(app_commands.Group):
    def __init__(self):
        super().__init__(name="user", description="유저 관련 명령어 모음!")

    @app_commands.command(name="info", description="유저 정보를 확인합니다.")
    async def info(self, interaction: discord.Interaction, user: discord.User):
        await interaction.response.send_message(f"{user.name}님의 ID는 {user.id}입니다.")

    @app_commands.command(name="ban", description="유저를 차단합니다.")
    async def ban(self, interaction: discord.Interaction, user: discord.User, reason: str):
        await interaction.response.send_message(f"{user.name}님을 '{reason}' 이유로 차단했습니다!")

intents = discord.Intents.default()
bot = commands.Bot(command_prefix="!", intents=intents)
bot.tree.add_command(UserCommandGroup())   # 그룹은 sync() 전에 먼저 등록!

@bot.event
async def on_ready():
    await bot.tree.sync()
    print(f"✅ {bot.user} 봇이 준비되었습니다!")

bot.run("YOUR_TOKEN")

🚀 사용 예시

  1. /user info user:@홍길동 → 홍길동님의 ID는 1234567890입니다.
  2. /user ban user:@홍길동 reason:욕함 → 홍길동님을 '욕함' 이유로 차단했습니다!

🎁 보너스 꿀팁

  • 그룹 이름은 name="...", 설명은 description="..." 으로 정할 수 있어요!
  • 그룹 안에 명령어를 추가할 때는 @app_commands.command() 데코레이터를 사용합니다.
  • 실제 서버에서 관리자 기능, 게임 명령어, 설정 명령어 등 묶어서 만들 때 완전 좋아요!

📌 마무리

서브 커맨드는 기능이 많아질수록 필수! 명령어를 깔끔하게 묶어서 봇이 훨씬 정돈된 느낌을 줍니다.

다음에는…

버튼, 셀렉트 메뉴(SelectMenu) 같은 UI 구성 요소 넣는 방법 알려드릴게요! 😎

연재 · 32편 중 3번째

디스코드 봇 만들기

  1. #1디스코드 봇 만들기 - Slash Command 완전 정복!
  2. #2Slash Command에 옵션(Arguments) 추가하기!
  3. #3Slash Command에 서브 커맨드(Subcommand) 넣기!지금 읽는 글
  4. #4Slash Command로 임베드 전송하기!
  5. #5버튼(Button) 상호작용 구현하기!
  6. #6드롭다운(Select Menu) 메뉴 구현하기!
  7. #7모달(Modal)로 입력 받기 구현하기 (파이썬 예제)
  8. #8임베드(Embed) 이미지·필드로 꾸미기 (파이썬 예제)
  9. #9AI(Claude·ChatGPT API) 연동하기! (파이썬 예제)
  10. #10다국어(i18n) 지원하기! (파이썬 예제)
  11. #11플라스크(Flask)로 웹 대시보드 만들기! (파이썬 예제)
  12. #12명령어 쿨다운(Cooldown)·권한(Permission) 관리하기! (파이썬 예제)
  13. #13역할·채널 자동화로 서버 관리하기! (파이썬 예제)
  14. #14데이터 저장하기! JSON vs SQLite (파이썬 예제)
  15. #15슬래시 명령어 그룹(Group)으로 명령어 정리하기! (파이썬 예제)
  16. #16리마인더·알림 기능 만들기! 봇이 먼저 말 걸게 하기 (파이썬 예제)
  17. #17RAG로 문서 기반 답변봇 만들기! 우리 서버 전용 FAQ 봇 (파이썬 예제)
  18. #18투표(Poll) 기능 만들기! 다수결로 정하는 서버 규칙 (파이썬 예제)
  19. #19Cog로 코드 쪼개기! 1000줄 봇도 안 더러워지는 구조 (파이썬 예제)
  20. #20자동 환영 메시지·온보딩 만들기! 규칙 동의 버튼으로 자동 역할 부여 (파이썬 예제)
  21. #21키워드 자동응답·금지어 필터 만들기! 경고 누적으로 자동 제재까지 (파이썬 예제)
  22. #22슬래시 명령어 자동완성(Autocomplete) 만들기! 금지어를 골라서 추가·삭제 (파이썬 예제)
  23. #23aiosqlite로 비동기 DB 제대로 설계하기! JSON 탈출 (파이썬 예제)
  24. #24채널 난독화(Channel Obfuscation) 대응하기! 11/16부터 안 보이는 채널이 생겨요 (파이썬 예제)
  25. #25봇이 죽지 않게! 에러 핸들링·로깅 체계 잡기 (파이썬 예제)
  26. #26티켓(Ticket) 문의 시스템 만들기! 버튼 하나로 1:1 상담 채널 자동 생성 (파이썬 예제)
  27. #27티켓 담당자 배정·우선순위 만들기! 스태프가 여러 명이어도 안 꼬이게 (파이썬 예제)
  28. #28레벨·경험치(XP) 시스템 만들기! 채팅할수록 레벨업, 랭킹판까지 (파이썬 예제)
  29. #29화폐·상점(Economy) 시스템 만들기! 코인 벌어서 아이템 사기 (파이썬 예제)
  30. #30투표·설문(Poll) 봇 만들기! 네이티브 투표 + 버튼으로 실시간 집계까지 (파이썬 예제) 🗳️
  31. #32서버 로그·감사(Audit Log) 채널 만들기! 메시지 삭제·수정·입퇴장·추방까지 자동 기록 (파이썬 예제) 🕵️
  32. #33임시 음성방 확장, 파티방 만들기! 방장 위임·강퇴·초대 전용(비공개) 방 + 전용 채팅방 자동 생성 (파이썬 예제) 🎉
전체 32편 보기접기

글쓴이

Mojangcam

직접 코드를 짜고, 서버를 돌리고, 막힌 에러를 해결하며 배운 것들을 기록하는 개발·IT 실전 기록 블로그