그래서 여러분의 봇이 속도 제한 오류 코드를 수신하고 있군요.
API 속도 제한
속도 제한(현재 초당 50개의 요청) 내용을 초과하면, API는 HTTP 429 응답 코드를 반환합니다. 유효하지 않은 요청에 대한 제한은 현재 10분당 10,000개입니다. 그러나, 봇이 일시적으로 CloudFlare를 API에서 금지할 경우, 글로벌 속도 제한 문제가 아닐 가능성이 높으며, 제대로 처리되지 않은 오류가 급증할 가능성이 높습니다.
저희가 주목하고 싶은 첫 번째 소식은, 아주 적은 상황 속에서, 애플리케이션의 글로벌 속도 제한 범위를 높인다는 것입니다. 좋은 소식은 개발자가 앱을 만들 때, 그들이 검토할 수 있도록 하는 해결 방법이 있다는 것입니다.
또한, 인터랙션 엔드 포인트가 속도 제한에 구속되지 않는다는 것을 말씀드리고자 합니다. 따라서, 가능한 경우, 기능을 애플리케이션 명령으로 바꾸는 것도 다른 방법이 될 수 있습니다. 여기에 나와 있는 문서나 선택하신 라이브러리에 대한 문서를 확인해 주세요.
게이트웨이 속도 제한
Discord와 데이터를 주고받기 위해서는, 어플리케이션이 웹 소켓에 연결됩니다. 샤딩(Sharding)은 일반적으로 애플리케이션에 있어서는 가장 좋은 사례인데, 이는 특히 애플리케이션이 디스코드에서 계속 성장하고 확장되고 있기 때문입니다. 이게 확실히 효과가 있는 방법이긴 하지만요.. 단, API 속도 제한 이내일 경우입니다. 샤딩은 하나의 연결을 오버로딩하는 대신, 여러 개의 웹 소켓을 열어 이러한 모든 연결을 통해 데이터를 교환할 수 있도록 합니다.
shard_id = (guild_id >> 22) % num_shards
길드/서버로부터의 트래픽은 샤드(오픈 웹 소켓)로 라우팅되며, 글로벌 속도 제한 하에 두기 위해 요청이 서로 병렬로 실행됩니다. 샤딩은 자신의 봇을 여러 갈래로 분할하는 것으로 생각해 주세요. 사용자가 완전히 제어할 수 있으며, 선택한 라이브러리에 의해서만 더 단순해질 수 있습니다!
대규모 봇 샤딩과 증가된 글로벌 속도 제한과 관련하여, 저희는 150,000대 이상의 서버에서 운영되는 봇에게만 이러한 서비스를 제공할 수 있습니다. 다음 문서에서 이러한 요청의 작동 방식에 대해 자세히 알아볼 수 있습니다: https://discord.com/developers/docs/topics/gateway#sharding-for-very-large-bots
여기에서 샤드를 미세하게 조정하고 구성하는 방법에 대한 자세한 내용을 읽을 수 있습니다.