트러블슈팅 및 FAQ

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

봇 실행 중 콘솔에 표시되는 비동기 예외, 이벤트 루프 경고, 디프리케이션 경고의 원인과 해결법을 안내합니다.

봇이 완전히 종료되지는 않더라도 콘솔에 반복적인 경고(Warning) 메시지가 출력된다면 잠재적인 에러의 원인이 될 수 있으므로 확인해 주는 것이 좋습니다.


1. Node.js UnhandledPromiseRejection

비동기 함수(async/await 또는 .then())를 호출하는 과정에서 에러 핸들링을 누락했을 때 발생하는 대표적인 경고입니다.

  • 증상: UnhandledPromiseRejectionWarning: Unhandled promise rejection... 또는 DeprecationWarning: Unhandled promise rejections are deprecated. 출력
  • 해결 방법: 비동기 호출 부를 try-catch 블록으로 감싸거나 .catch() 콜백을 추가해 예외를 처리합니다.
// 올바른 비동기 예외 처리 예시
try {
  await message.reply('명령 처리 중...');
} catch (error) {
  console.error('Log: 메시지 발송 실패:', error.message);
}

2. Python Event Loop is Closed 경고

discord.py 기반 봇을 종료하는 과정에서 비동기 소켓 세션이 닫히기 전에 이벤트 루프가 먼저 종료될 때 나타납니다.

  • 증상: RuntimeError: Event loop is closed 출력
  • 원인 및 대처: 봇이 종료되는 시점에 리소스를 정리하면서 발생하는 경고로, 정상 구동 중에는 서비스 성능에 영향을 주지 않으므로 무시하셔도 무방합니다.

3. 라이브러리 지원 중단 경고 (DeprecationWarning)

라이브러리가 버전업되면서 더 이상 사용되지 않는 이전 메서드를 호출하고 있을 때 발생합니다.

  • Node.js: discord.js v14부터 new MessageEmbed()가 완전히 제거되었으므로 최신 규격인 new EmbedBuilder()를 사용해야 합니다.
  • Python: 이전의 bot.logout() 대신 await bot.close()를 사용하여 정상적으로 봇 리소스를 해제하도록 구현합니다.