IT 개발2026-06-09

디스코드 봇 만들기: 토큰·인텐트·초대와 실행 방법

디스코드 봇 만들기는 앱 생성, 디스코드 봇 토큰 발급, 인텐트 설정, 초대 URL, 코드 실행 순서로 진행합니다.

디스코드 봇 만들기: 토큰·인텐트·초대와 실행 방법 썸네일

안녕하세요. 사랑받는 IT 프로덕트의 첫걸음, 똑똑한개발자입니다.

오늘의 인사이트 요약

  1. 디스코드 봇 만들기는 앱 생성, 디스코드 봇 토큰 발급, 인텐트 설정, 초대 URL, 코드 실행 순서로 진행합니다.

  2. 일반 서버 메시지의 내용을 읽으려면 Message Content Intent 설정이 필요하며 일부 예외가 있습니다.

  3. 슬래시 커맨드는 길드 커맨드로 먼저 테스트하면 바로 반영됩니다.


커뮤니티를 운영하다 보면 신규 멤버 안내, 공지 알림처럼 같은 일이 반복해서 생깁니다. 디스코드 봇 만들기에서 자주 막히는 곳은 코드 앞 설정 단계라 이 글은 개발자 포털부터 순서대로 짚어 보겠습니다.

디스코드 봇 만들기 1단계, 앱 생성과 디스코드 봇 토큰

디스코드 봇 만들기 - 앱 생성과 디스코드 봇 토큰 발급 화면

봇은 Developer Portal의 애플리케이션 안에 만들어집니다.

Developer Portal의 Applications에서 New Application을 눌러 이름만 정하면 됩니다.

디스코드 봇 토큰은 Bot 메뉴의 Reset Token으로 받습니다.

디스코드 공식 문서 기준으로 토큰은 재생성하지 않으면 다시 볼 수 없습니다. 잃어버렸다면 Reset Token을 다시 누르면 됩니다. 대신 이전 토큰은 그때부터 못 씁니다.

토큰은 코드에 직접 적지 않습니다.

봇 토큰은 환경변수나 비밀값 저장소에 보관합니다. .env 파일을 사용한다면 저장소 제외 목록에 넣고, 개발용·운영용 값을 구분합니다.

디스코드 봇 권한과 인텐트, 무엇을 켜야 할까

디스코드 봇 만들기 - Privileged Gateway Intents 설정

Bot 메뉴에는 특권 인텐트 세 가지가 있습니다.

Privileged Gateway Intents 항목에서 Presence Intent, Server Members Intent, Message Content Intent를 하나씩 따로 켜는 방식입니다.

Message Content Intent가 없으면 메시지 본문이 빈 값으로 옵니다.

예외에는 봇에게 온 DM, 봇을 멘션한 메시지, 봇이 보낸 메시지 등이 있습니다. 메시지 컨텍스트 메뉴 명령으로 전달된 메시지도 예외에 포함됩니다. 위 도식은 대표적인 세 경우만 요약했습니다. 키워드에 반응하는 봇을 만든다면 포털과 코드 양쪽에서 켜 두어야 합니다.

서버가 100개를 넘으면 인증과 승인이 필요합니다.

100개 이상 서버로 확장하려는 앱은 인증이 필요하며, 인증된 앱의 특권 인텐트는 별도 승인 대상입니다. 인텐트는 받는 이벤트·데이터의 범위이고, 메시지 전송 등 작업 권한과는 다릅니다. Discord Gateway 문서

디스코드 봇 초대 URL로 서버에 추가하는 법

디스코드 봇 만들기 - 디스코드 봇 초대 URL 생성

OAuth2 URL Generator에서 스코프 두 개를 체크합니다.

OAuth2 메뉴의 URL Generator에서 bot과 applications.commands를 고르면 아래에 권한 목록이 열립니다. 공지 봇이라면 Send Messages처럼 필요한 권한만 고르는 편이 안전합니다.

생성된 URL을 열고 서버를 고르면 초대가 끝납니다.

디스코드 봇 추가하는법은 이 URL을 브라우저에 붙여 넣고 서버를 골라 승인하면 끝입니다. 목록에는 봇을 추가할 권한이 있는 서버만 나옵니다.

디스코드 봇 만들기 파이썬과 js, 코드 실행까지

디스코드 봇 만들기 파이썬과 js 비교

구분

파이썬 (discord.py)

js (discord.js)

설치

python3 -m pip install -U discord.py

npm install discord.js

실행 환경

설치할 discord.py 릴리스의 Python 지원 범위 확인

설치할 discord.js 릴리스의 Node.js 요구 버전 확인

메시지 인텐트

intents.message_content = True

GatewayIntentBits.MessageContent

디스코드 봇 만들기 파이썬은 설치 한 줄로 시작합니다.

위 비교 그림의 버전 숫자는 제작 시점 예시이며 항상 최신 요구 사항을 뜻하지 않습니다. Python은 discord.py 설치 안내를 확인합니다. 슬래시 커맨드는 app_commands.CommandTree에 등록하고 sync()로 올리면 됩니다.

디스코드 봇 만들기 js는 Node.js 버전부터 확인합니다.

Node.js 18 이상이라는 그림의 표기는 현재 설치 기준으로 사용하지 않습니다. 현재 discord.js 공식 설치 문서에 표시된 최소 Node.js 버전을 확인하고 해당 릴리스와 호환되는 환경을 준비합니다. 슬래시 커맨드는 REST API로 등록할 수 있습니다.

슬래시 커맨드는 길드 커맨드로 먼저 테스트합니다.

디스코드 문서는 테스트에는 길드 커맨드를, 공개할 때는 글로벌 커맨드를 권합니다. 길드 커맨드 쪽은 수정이 바로 반영됩니다.

파이썬으로 /ping 명령을 실행하는 예시입니다.

테스트 서버용 슬래시 커맨드 예시입니다. 앞의 초대 과정에서 봇과 명령어를 추가한 뒤, 환경변수 DISCORD_BOT_TOKEN과 테스트 서버 ID인 DISCORD_GUILD_ID를 설정합니다. 아래 코드를 bot.py로 저장하고 python3 bot.py로 실행한 후 해당 서버에서 /ping을 입력합니다.

import os
import discord
from discord import app_commands

guild = discord.Object(id=int(os.environ["DISCORD_GUILD_ID"]))

class TestBot(discord.Client):
    def __init__(self):
        super().__init__(intents=discord.Intents.default())
        self.tree = app_commands.CommandTree(self)

    async def setup_hook(self):
        await self.tree.sync(guild=guild)

bot = TestBot()

@bot.tree.command(name="ping", description="봇 연결 확인", guild=guild)
async def ping(interaction: discord.Interaction):
    await interaction.response.send_message("pong!")

bot.run(os.environ["DISCORD_BOT_TOKEN"])

이 예시는 Message Content Intent가 필요하지 않습니다. 별도 테스트 앱·서버에서 실행하는 구성이며, sync()는 해당 앱의 서버 명령 목록을 코드의 목록으로 맞춥니다. 운영 중인 다른 명령을 유지하려면 기존 명령 등록 코드와 함께 관리합니다.

상시 실행하는 프로세스로 만든 봇은 해당 PC나 서버가 꺼지면 연결도 종료됩니다. 운영 환경에서는 실행 서버, 재시작 정책, 오류 로그와 담당자를 정합니다. 슬래시 커맨드만 제공하는 봇은 일반 메시지 본문을 읽지 않고도 구성할 수 있습니다.

디스코드 봇 만들기 - 운영 전 체크리스트

커뮤니티의 일상을 돕는 봇을 만듭니다

새로운 멤버를 맞이하고 질문에 답하는 작은 기능도 커뮤니티의 분위기를 만듭니다. 똑똑한개발자는 회원 경험과 운영 기능을 함께 고려하며 웹·앱 서비스를 만드는 팀입니다.

똑똑한개발자 소개

공지 봇에서 시작해 회원 정보나 관리자 화면까지 연결하고 싶다면 필요한 장면을 알려주세요. 우리 커뮤니티에서 쓰기 편한 봇과 운영 도구를 함께 그려볼 수 있습니다.

감사합니다. :)

클립보드에 복사되었어요 ✓
이 글을 공유해보세요!