트러블슈팅 및 FAQ

흔히 발생하는 터미널 경고 및 대처

봇 실행 중 실시간 로그 콘솔에 기록되는 비동기 프로미스 예외, 디스크립터 경고, 그리고 파이썬 이벤트 루프 중단 오류의 조치법을 소개합니다.

봇이 완전히 뻗지는 않으나 실시간 콘솔 창에 다량의 경고 메세지(Warning) 또는 거절 스택 로그가 기록되는 경우, 미래의 치명적인 중단 사고로 이어질 수 있으므로 선제적인 예방 조치 조율이 요구됩니다.


1. Node.js 비동기 미처리 거부 (Unhandled Promise Rejection)

비동기 함수(async/await 또는 .then())를 활용하는 과정에서 API 통신 단절이나 권한 부족으로 통신 실패 시 에러 예외 처리를 누락했을 때 기록되는 대표적인 경고입니다.

  • 증상: UnhandledPromiseRejectionWarning: Unhandled promise rejection... 또는 DeprecationWarning: Unhandled promise rejections are deprecated. 출력.
  • 자가 해결책: 비동기 API 명령 실행 단에 반드시 try-catch 스크립트 블록이나 예외 캐싱 콜백인 .catch() 구문을 결합하십시오:
// 올바른 비동기 예외 캐싱 예시
try {
  await message.reply('명령 처리 중...');
} catch (error) {
  console.error('Log: 메시지 발송 실패:', error.message);
}

2. Python 이벤트 루프 차단 및 Closed Loop 에러

파이썬의 비동기 비즈니스 프레임워크(asyncio) 기반인 discord.py 라이브러리 구동 도중 프로세스 정지 단계에서 비동기 소켓 세션이 미처 수거되지 못하고 끊겼을 때 발생하는 현상입니다.

  • 증상: RuntimeError: Event loop is closed 경고 출력.
  • 원인: 파이썬 3.8 이상 윈도우/리눅스 환경의 기본 루프 핸들러 정책 호환성 때문에 가동 종료 단계에서 잔여 태스크를 회수하는 도중 프로세스가 루프를 강제로 닫으면서 터집니다.
  • 해결 방법: 봇 가동 종료 단계에서 유발되는 단순 세션 마감 오류로, 실제 봇 서비스 실시간 가동 중에는 성능상 악영향을 유도하지 않는 경미한 경고이므로 안심하고 넘어가셔도 안전합니다.

3. 디프리케이션 경고 (DeprecationWarning)

  • 원인: 라이브러리가 최신 스펙으로 갱신되면서 더 이상 미래 버전에서 지원하지 않는 구식 메소드를 실행하고 있음을 알리는 시그널입니다.
  • 대처 가이드:
    • Node.js: 구식 new MessageEmbed() 양식은 v14 기준 제거되었으므로 최신 규격인 new EmbedBuilder() 형식으로 모두 전환하여 코드를 보강해야 합니다.
    • Python: bot.logout() 명령이 완전히 제거되었으므로 대신 await bot.close() 비동기 마감 자원 회수 함수를 적용해 종료 로직을 디자인해야 합니다.