디스코드 봇 개발 첫걸음! 5분 만에 환경 설정 끝내는 법

2026-07-05 · 테크 · 읽는데 9분

디스코드 봇 개발, 환경 설정만 빠르게 끝내는 법

디스코드 봇 개발을 시작하려면 복잡한 서버나 도커 개념은 잠시 접어두세요. 가장 먼저 해야 할 일은 디스코드 개발자 포털에서 애플리케이션을 생성하고 봇을 서버에 초대하는 것입니다. 이 과정은 5분 안에 끝낼 수 있습니다. Node.js와 JavaScript(또는 TypeScript)만 설치되어 있다면 바로 시작할 수 있습니다.


디스코드 봇 계정 만들기 5분이면 끝

봇 개발의 첫 관문은 디스코드에서 봇을 공식적으로 인정받는 계정을 만드는 일입니다. 사람이 쓰는 일반 계정과 달리, 봇 계정은 소프트웨어가 제어하며 서버 리소스에 접근할 수 있는 권한을 부여받습니다.

  1. 디스코드 개발자 포털 접속: 웹 브라우저에서 discord.com/developers/applications에 접속해 로그인합니다.
  2. 새 애플리케이션 생성: "New Application" 버튼을 클릭하고 봇의 이름(Application Name)을 입력한 후 "Create"를 누릅니다. 이 이름은 서버에 표시될 봇의 이름이 됩니다.
  3. 봇 설정으로 이동: 왼쪽 메뉴에서 "Bot" 탭을 클릭합니다.
  4. 봇 토큰 발급: "Reset Token" 버튼을 눌러 봇 토큰을 생성합니다. 이 토큰은 봇의 비밀번호와 같아서 절대 외부에 공유하면 안 됩니다. 한 번만 표시되므로 안전한 곳에 복사해 두세요. (분실 시 다시 초기화해야 합니다.)
  5. 권한 설정: 같은 "Bot" 탭 아래에서 "Privileged Gateway Intents" 항목을 찾아 "SERVER MEMBERS INTENT"와 "MESSAGE CONTENT INTENT"를 활성화합니다. 이 설정은 봇이 서버 멤버 정보나 메시지 내용을 읽을 수 있게 해주는 필수 권한입니다.

봇을 서버에 초대하기 위해 꼭 체크할 설정

계정을 만들었다면, 이제 봇이 실제로 활동할 서버에 초대해야 합니다. 이 과정에서 권한 설정을 잘못하면 봇이 정상 작동하지 않을 수 있습니다.

초대 링크를 만들기 위해 왼쪽 메뉴에서 "OAuth2" > "URL Generator" 로 이동합니다.

  • SCOPES(범위): 이 봇이 어떤 기능을 할지 정의하는 부분입니다. 다음 두 가지를 반드시 선택하세요.
    • bot: 봇으로서 서버에 참여할 수 있는 기본 권한입니다.
    • applications.commands: 봇이 /명령어 형태의 슬래시 커맨드를 사용할 수 있게 해줍니다. 이 설정을 하지 않으면 명령어가 서버에 등록되지 않아 봇이 응답하지 않는 문제가 발생할 수 있습니다.
  • BOT PERMISSIONS(봇 권한): 봇이 서버 내에서 어떤 행동을 할지 결정합니다. 개발 초기에는 "Administrator" 권한을 주는 것이 편리합니다. (실제 서비스 시에는 필요한 권한만 선택하는 것이 보안에 좋습니다.)

설정을 마치면 하단에 "GENERATED URL" 이 생성됩니다. 이 URL을 복사하여 웹 브라우저에 붙여넣고, 봇을 초대할 서버를 선택하면 모든 준비가 끝납니다.

디스코드 봇 초대 시 필수 체크리스트

  • [ ] SCOPES: bot과 applications.commands가 모두 선택되었는가?
  • [ ] BOT PERMISSIONS: Administrator 또는 필요한 최소 권한이 설정되었는가?
  • [ ] Bot 탭: SERVER MEMBERS INTENT와 MESSAGE CONTENT INTENT가 켜져 있는가?

로컬 개발 환경 TypeScript로 시작하기

봇 계정과 서버 초대가 끝났다면, 이제 실제 코드를 작성할 준비를 합니다. 가장 보편적인 방법은 Node.js와 discord.js 라이브러리를 사용하는 것입니다.

  1. Node.js 설치: 공식 홈페이지(nodejs.org)에서 LTS 버전을 다운로드해 설치합니다.
  2. 프로젝트 폴더 생성 및 초기화: bash mkdir my-discord-bot cd my-discord-bot npm init -y
  3. 필수 패키지 설치: bash npm install discord.js npm install -D typescript @types/node ts-node
  4. 환경 변수 설정: .env 파일을 만들어 앞서 발급받은 봇 토큰을 안전하게 보관합니다. TOKEN=여기에_토큰_입력 CLIENT_ID=여기에_클라이언트_ID_입력 (OAuth2 탭에서 확인 가능) GUILD_ID=여기에_서버_ID_입력

참고: TypeScript를 사용하면 코드의 안정성과 가독성이 높아집니다. discordx와 같은 라이브러리를 사용하면 TypeScript 환경에서 더 편리하게 봇을 제작할 수 있습니다.


봇이 응답하게 만들기 첫 번째 슬래시 커맨드

이제 봇이 명령어를 인식하고 응답하도록 코드를 작성해 봅시다. 가장 기본적인 /ping 명령어를 만들어 보겠습니다.

1. 명령어 등록 파일 (register-commands.js) 봇이 새로운 명령어를 알게 하려면 먼저 디스코드 API에 등록해야 합니다. 아래는 길드(서버)에 명령어를 등록하는 코드 예시입니다.

const { REST, Routes } = require('discord.js');
require('dotenv').config();

const commands = [
    {
        name: 'ping',
        description: 'Replies with Pong!',
    },
];

const rest = new REST({ version: '10' }).setToken(process.env.TOKEN);

(async () => {
    try {
        console.log('Started refreshing application (/) commands.');
        await rest.put(Routes.applicationGuildCommands(process.env.CLIENT_ID, process.env.GUILD_ID), { body: commands });
        console.log('Successfully reloaded application (/) commands.');
    } catch (error) {
        console.error(error);
    }
})();

2. 봇 실행 파일 (index.js) 이제 봇이 실제로 명령어를 받았을 때 어떻게 행동할지 정의합니다.

const { Client, GatewayIntentBits } = require('discord.js');
require('dotenv').config();

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('ready', () => {
    console.log(`Logged in as ${client.user.tag}!`);
});

client.on('interactionCreate', async interaction => {
    if (!interaction.isChatInputCommand()) return;

    if (interaction.commandName === 'ping') {
        await interaction.reply('Pong!');
    }
});

client.login(process.env.TOKEN);

3. 실행 및 확인 터미널에서 node register-commands.js를 실행해 명령어를 등록한 후, node index.js로 봇을 실행합니다. 디스코드 서버에서 /ping을 입력하면 봇이 "Pong!"이라고 응답하는 것을 확인할 수 있습니다.


FAQ 봇 개발 중 자주 묻는 질문

Q. 명령어를 등록했는데 서버에 나타나지 않아요. A. 가장 흔한 원인은 OAuth2 설정에서 applications.commands 범위를 선택하지 않은 경우입니다. URL Generator에서 다시 확인해 주세요. 또한 명령어 등록 후 디스코드 서버에 반영되기까지 최대 1시간 정도 걸릴 수 있습니다.

Q. 봇이 온라인 상태인데도 명령어에 반응하지 않아요. A. 봇 토큰이 정확한지, .env 파일이 제대로 로드되었는지 확인하세요. Intents 설정이 잘못되었거나, interactionCreate 이벤트 리스너에 오류가 있는지도 살펴봐야 합니다.

Q. 로컬에서만 테스트해도 괜찮나요? A. 네, 개발 초기에는 로컬 환경에서 테스트하는 것이 가장 빠릅니다. 다만 컴퓨터를 끄면 봇도 함께 꺼지기 때문에 24시간 운영이 필요하다면 AWS, Back4app 같은 클라우드 서비스나 본인이 운영 중인 서버에 배포해야 합니다.