디스코드 모달 입력창 기본 사용법

2026. 5. 1. 16:54·봇 개발 팁/Discord.py

모달을 쓰고 싶은데 예제가 너무 크거나 지원서 전체 코드만 보이면 오히려 구조가 안 잡힐 때가 있습니다.

그럴 때 필요한 건 완성형 운영 예제가 아니라, 입력칸 정의와 제출 처리만 남긴 가장 작은 레퍼런스입니다.

이 글은 지원서나 문의 흐름 전체가 아니라, 디스코드 모달의 기본 뼈대를 이해하는 참고 글로 보면 맞습니다.

1. 긴 입력을 받을 때 '명령어 인자' 대신 쓰는 기본 UI다

아래처럼 입력 길이가 길거나 형식을 맞춰 받고 싶을 때 잘 맞습니다.

  • 문의 요약 받기
  • 신고 사유 받기
  • 지원 이유 받기
  • 버그 제보 내용 받기

실전 예시를 먼저 보고 싶다면 모달 폼 접수 디스코드 봇 만들기를 같이 보면 됩니다.

2. 모달을 붙이기 전에 확인할 것

슬래시 명령어 기본 구조는 이미 있다는 전제로 갑니다.

아직 slash 명령어가 익숙하지 않다면 슬래시 명령어 디스코드 봇 만드는 법, 파이썬 discord.py app_commands 입문부터 먼저 맞춰야 합니다.

3. 명령어와 채널 값 먼저 넣기

DISCORD_TOKEN=여기에_봇_토큰
GUILD_ID=테스트_서버_ID


이 글에서는 가장 작은 예제로 `/문의폼` 명령어를 만들고 모달을 띄웁니다.

4. 모달 호출과 응답의 최소 구조

import os

import discord
from discord import app_commands
from dotenv import load_dotenv

load_dotenv()

TOKEN = os.getenv("DISCORD_TOKEN")
GUILD_ID = int(os.getenv("GUILD_ID"))

intents = discord.Intents.default()
client = discord.Client(intents=intents)
tree = app_commands.CommandTree(client)
guild = discord.Object(id=GUILD_ID)


class FeedbackModal(discord.ui.Modal, title="문의 폼"):
    subject = discord.ui.TextInput(label="제목", max_length=50)
    detail = discord.ui.TextInput(label="상세 내용", style=discord.TextStyle.paragraph, max_length=500)

    async def on_submit(self, interaction: discord.Interaction):
        embed = discord.Embed(title="모달 제출 결과", color=discord.Color.blurple())
        embed.add_field(name="제목", value=str(self.subject), inline=False)
        embed.add_field(name="상세 내용", value=str(self.detail), inline=False)
        await interaction.response.send_message(embed=embed, ephemeral=True)


@client.event
async def on_ready():
    await tree.sync(guild=guild)
    print(f"로그인 성공: {client.user}")


@tree.command(name="문의폼", description="기본 모달 입력창을 엽니다.", guild=guild)
async def open_feedback_modal(interaction: discord.Interaction):
    await interaction.response.send_modal(FeedbackModal())


if not TOKEN:
    raise ValueError("DISCORD_TOKEN 값이 없습니다.")

client.run(TOKEN)


이 예제는 가장 기본적인 모달 흐름만 남겼습니다.
슬래시 명령어가 모달을 열고, 제출된 값을 바로 ephemeral 응답으로 보여 주는 구조입니다.

5. 코드에서 봐야 할 핵심

  • discord.ui.Modal을 상속한다
  • TextInput으로 입력칸을 만든다
  • on_submit()에서 제출 뒤 동작을 처리한다
  • 명령어나 버튼에서 send_modal()을 호출한다

모달은 결국 입력 UI를 따로 여는 컴포넌트라고 보면 됩니다.

6. 입력창이 실제로 뜨는지 먼저 확인

python main.py


실행 후 `/문의폼`을 입력합니다.
모달 창이 뜨고 값을 넣어 제출하면 본인에게만 결과가 보이면 정상입니다.

7. 응답 타이밍에서 자주 막히는 부분

  • 명령어는 보이는데 모달이 안 뜨는 경우 응답을 send_message()로 보내고 있을 수 있습니다.

    모달은 send_modal()로 열어야 합니다.
  • 제출 직후 This interaction failed가 뜨는 경우 on_submit() 안에서 응답을 안 보냈거나 예외가 난 경우가 많습니다.
  • 입력칸 개수를 너무 많이 넣은 경우 초반에는 무엇이 필수인지 흐려져서 제출률이 떨어집니다.

8. 어디에 응용할 수 있을까

기본 모달 구조를 익혀 두면 아래로 바로 확장됩니다.

  • 제휴 신청 폼
  • 신고 접수 폼
  • 이벤트 참가 신청 폼
  • 버그 제보 폼

실제로는 입력칸과 제출 후 저장 위치만 바꾸면 되는 경우가 많습니다.

9. 모달은 다른 자동화 글과 같이 보면 더 잘 잡힌다

입력 결과를 검토 채널에 보내고 싶다면 모달 폼 접수 디스코드 봇 만들기가 바로 이어집니다.

버튼과 함께 붙이고 싶다면 티켓 디스코드 봇 만들기 구조와도 잘 맞습니다.

10. 기본기를 잡았다면 이제 운영 흐름 안에 끼워 넣는다

모달 기본기를 익혔다면 다음에는 이 입력 UI를 실제 운영 흐름 안에 끼워 넣는 단계로 가면 됩니다.

검토 채널까지 붙은 실전형 예제를 보고 싶다면 모달 폼 접수 디스코드 봇 만들기를, 슬래시 명령어 구조부터 다시 확인하고 싶다면 디스코드 봇 slash command 안 뜰 때 기본 점검을 같이 보면 됩니다.

'봇 개발 팁 > Discord.py' 카테고리의 다른 글

모달 폼 접수 디스코드 봇 만들기  (0) 2026.04.30
지원서 접수 디스코드 봇 만들기  (0) 2026.04.29
고객 지원 대기열 디스코드 봇 만들기  (0) 2026.04.28
티켓 디스코드 봇 만들기  (0) 2026.04.25
온보딩 체크리스트 디스코드 봇 만들기  (0) 2026.04.24
'봇 개발 팁/Discord.py' 카테고리의 다른 글
  • 모달 폼 접수 디스코드 봇 만들기
  • 지원서 접수 디스코드 봇 만들기
  • 고객 지원 대기열 디스코드 봇 만들기
  • 티켓 디스코드 봇 만들기
디스호스트
디스호스트
쉽고 안정적인 디스코드 봇 호스팅 서비스, 디스호스트의 기술 블로그입니다. 디스호스트는 24시간 구동되는 서버를 통해 디스코드 봇을 대신 구동시켜 드리는 서비스를 제공하고 있습니다.
  • 디스호스트
    디스호스트 기술 블로그
    디스호스트
  • 블로그 메뉴

    • 홈
    • 디스호스트 사용 가이드
    • 디스코드 봇 호스팅, 24시간 서버 구동
    • 분류 전체보기 (93) N
      • 디스코드 (9)
      • 디스호스트 가이드 (12)
      • 봇 개발 팁 (32) N
        • Discord.js (11)
        • Discord.py (20) N
      • DiscordJS 개발 튜토리얼 (15)
      • 디스코드 서버 운영 (17)
      • 디스코드 봇 오류 해결 (7)
  • 링크

    • 디스호스트
  • hELLO· Designed By정상우.v4.10.3
디스호스트
디스코드 모달 입력창 기본 사용법
상단으로

티스토리툴바