Discord 속도 제한: 봇이 느려지는 이유
속도 제한은 봇이나 사용자가 짧은 시간에 보낼 수 있는 요청 수에 대한 Discord의 상한입니다. 봇이 상한을 넘으면 Discord는 HTTP 429 오류와 대기 시간을 응답하며, 봇은 다시 시도하기 전에 멈춰야 합니다.
한도가 적용되는 방식
봇이 하는 모든 행동은 Discord API에 보내는 요청입니다. 메시지 보내기, 역할 추가, 채널 편집 같은 것입니다. Discord는 요청을 버킷 단위로 세며, 보통 경로마다, 때로는 서버나 채널마다 셉니다. 봇에는 초당 약 50개 요청이라는 전역 상한도 있습니다.
응답에는 남은 요청 수와 버킷이 언제 초기화되는지 알려 주는 헤더가 들어 있습니다. 잘 짜인 봇은 이것을 읽고, 차단되기 전에 속도를 줄입니다. 그래도 넘으면, 429 응답에 몇 초를 기다려야 하는지 알려 주는 Retry-After 값이 들어 있습니다.
왜 알아차리게 되는가
- 많은 메시지를 지우거나 많은 역할을 바꾸는 것 같은 대량 동작은 의도적으로 늦춰집니다.
- 짧은 시간에 채널 이름이나 주제를 반복해서 바꾸면 채널마다 제한됩니다.
- 많은 반응을 추가하거나 메시지를 한꺼번에 보내면 짧은 멈춤이 생깁니다.
멤버에게 이것은 오류가 아니라 봇이 늦게 답하는 것처럼 보입니다. 시스템이 제 일을 하고 있는 것입니다.
더 심각한 경우: 일시적 차단
앱이 짧은 시간에 나쁜 요청을 너무 많이 보내면, 예를 들어 10분 안에 401, 403, 429 응답이 수천 개라면, Discord는 Cloudflare 계층에서 그 IP 주소를 한동안 차단할 수 있습니다. 공유 머신에서 호스팅되는 봇은 서버에 아무 문제가 없는데도 실패할 수 있습니다. 기다리는 것이 유일한 해결책입니다.
추가 계정이나 스크립트로 속도 제한을 우회하려고 하지 마세요. 그것은 플랫폼을 보호하기 위한 것이며, 우회하면 밴 위험이 있습니다.
서버 주인이 할 수 있는 것
- 큰 작업은 한꺼번에 돌리지 말고 나눠서 하세요.
- 타이머로 채널 이름을 바꾸는 일은 피하세요.
- 요청을 줄 세우고 한도를 존중하는 봇을 고르세요.
Noxyr와 속도 제한
Noxyr의 서버 로그는 채널마다 몇 초에 한 번, 한 번에 열 개까지만 게시되므로, 습격이나 큰 일괄 삭제가 로그 채널을 넘치게 하지 않습니다. 서버 로그 문서에 설명되어 있습니다. Noxyr 자체의 라이브 채팅 전송도 범람을 막기 위해 제한됩니다. 커스텀 봇에는 관련 규칙이 있습니다. 새 호스트로 옮길 때마다 새 Discord 로그인이 발생하므로, 옮기는 사이에 5분 대기가 있습니다. 커스텀 봇 호스팅을 보세요.
속도 제한은 대형 봇을 여러 연결로 나누도록 하기도 합니다. 샤딩을 보세요. 봇이 멈춘 것처럼 보인다면, 먼저 상태와 핑 페이지를 확인하세요.
자주 묻는 질문
Discord에서 HTTP 429는 무엇을 뜻하나요?
요청이 너무 많다는 뜻입니다. Discord는 봇에게 Retry-After 값의 시간만큼 기다렸다가 다시 시도하라고 알리는 것입니다.
속도 제한이 곧 밴인가요?
아니요. 짧은 멈춤입니다. 반복된 남용만 더 긴 일시 차단으로 이어질 수 있습니다.
큰 정리 작업 중에 봇이 왜 답이 느린가요?
대량 동작은 Discord가 속도를 제한하므로, 봇이 그것을 나눠서 해야 합니다.