디스코드 봇이 명령을 인식하지 못하거나 실행 중 에러가 발생할 때 확인할 것들

2026년 3월 7일·36개 메시지

간단한 설정 하나로 봇이 메시지를 읽지 못하거나 명령어가 동작하지 않을 수 있다. 이 글에서는 디스코드 봇이 반응하지 않을 때 흔히 확인해야 할 설정(특히 권한/인텐트)과 코드·호스팅 관련 점검 항목을 정리한다. 디스호스트 같은 호스팅 환경에 봇 토큰을 넣은 뒤 바로 동작하지 않을 때 유용하다.

증상

  • 봇이 온라인은 되지만 명령어를 인식하지 못함(채팅에 반응 없음).
  • 특정 이벤트(예: 멤버 조작, 메시지 내용 기반 처리)가 동작하지 않음.
  • 코드 실행 중 들여쓰기/문법 오류로 프로세스가 예기치 않게 종료됨.
  • 동일한 토큰으로 여러 인스턴스를 띄우면 세션이 끊기거나 불안정해짐.

원인

  • 디스코드 개발자 포털에서 Privileged Gateway Intents(예: MESSAGE_CONTENT, GUILD_MEMBERS, GUILD_PRESENCES)가 비활성화되어 있어 봇이 필요한 이벤트를 수신하지 못함.
  • 코드에서 인텐트를 설정하지 않았거나, 사용 중인 라이브러리 버전에 맞지 않는 방식으로 인텐트를 구성함.
  • 모바일이나 비표준 에디터로 파일을 편집하면서 들여쓰기(스페이스/탭 혼용) 오류가 생김(Python에서 치명적).
  • 동일 토큰으로 여러 인스턴스를 동시에 실행해 세션 충돌 발생. 멀티 인스턴스가 필요하면 샤딩 또는 별도 토큰 사용 권장.

해결 방법

1단계: 디스코드 개발자 포털에서 인텐트 활성화

  1. 디스코드 개발자 포털로 이동 후 애플리케이션 선택.
  2. 왼쪽 메뉴에서 Bot 탭 클릭.
  3. 아래쪽의 Privileged Gateway Intents 섹션 확인.
  4. 필요한 인텐트 스위치 세 개를 활성화:
    • PRESENCE INTENT (활동·상태 관련)
    • SERVER MEMBERS INTENT (멤버 관련 이벤트)
    • MESSAGE CONTENT INTENT (메시지 내용 접근이 필요할 때)
  5. 변경 후 봇을 다시 시작.

(디스호스트 같은 호스팅 패널에서 토큰을 넣은 곳 아래에 인텐트 토글을 제공하는 경우 그곳에서도 활성화해야 할 수 있음.)

2단계: 코드에서 인텐트 설정 확인 (예시)

  • discord.py (v2) 예시:
import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True
intents.members = True

bot = commands.Bot(command_prefix="!", intents=intents)
  • discord.js (v14) 예시:
const { Client, GatewayIntentBits } = require('discord.js');

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

코드에서 인텐트를 활성화했더라도 개발자 포털에서 해당 인텐트를 허용해야 이벤트가 전달된다.

3단계: 들여쓰기·문법 오류 점검

  • Python 파일이라면 탭과 스페이스 혼용으로 IndentationError가 발생할 수 있음. 에디터에서 탭을 스페이스로 변환하거나 일관된 들여쓰기 사용.
  • 로컬에서 다음으로 문법 검사:
    • python -m py_compile your_bot.py
    • 또는 python -m compileall .
  • 모바일 편집기로 수정했다면 데스크톱 에디터(Visual Studio Code, PyCharm 등)에서 재확인 권장.

4단계: 로그와 전체 출력 확인

  • 호스팅(디스호스트 포함)에서 제공하는 콘솔 로그 또는 스택 트레이스를 전체 확인. 에러의 정확한 라인이 문제 해결 실마리를 준다.
  • 로그를 캡처해 에러 메시드를 기반으로 검색 또는 디버깅 진행.

5단계: 동일 토큰으로 여러 인스턴스 실행 금지 / 대안

  • 동일 토큰으로 두 개 이상 인스턴스를 동시에 돌리면 세션 충돌로 연결이 불안정해짐. 가능한 한 한 인스턴스만 실행.
  • 여러 인스턴스가 필요하면:
    • 각 인스턴스마다 다른 봇 토큰 사용(별도 애플리케이션 생성).
    • 또는 공식 샤딩(Sharding) 기능 사용.

마무리

메시지 미인식 문제는 보통 개발자 포털의 인텐트 비활성화나 코드에서 인텐트를 설정하지 않은 경우가 대부분이다. 또한 모바일 편집으로 인한 들여쓰기 오류나 동일 토큰의 다중 실행도 흔한 원인이므로, 인텐트 활성화와 코드·로그 점검, 호스팅 패널 설정 확인을 우선적으로 수행하라. 디스코드 봇을 안정적으로 운영하려면 디스호스트와 같은 호스팅 설정과 개발자 포털 설정을 함께 점검하는 습관을 권장한다.