ดังนั้นบอทของคุณจึงโดนรหัสข้อผิดพลาดขีดจำกัดอัตรา
การจำกัดอัตรา API
หากเกินขีดจำกัดอัตรา (ปัจจุบันคือ 50 คำขอต่อวินาที) API จะส่งคืนรหัสตอบกลับ HTTP 429 ขีดจำกัดสำหรับคำขอที่ไม่ถูกต้องในปัจจุบันคือ 10,000 ต่อ 10 นาที อย่างไรก็ตาม หากบอทของคุณถูกแบน CloudFlare จาก API ชั่วคราว เป็นไปได้มากว่าจะไม่ใช่ปัญหาการจำกัดอัตราทั่วโลก และมีแนวโน้มว่าข้อผิดพลาดที่ไม่ได้รับการจัดการอย่างเหมาะสมจะพุ่งสูงขึ้น
สิ่งแรกที่เราต้องการทราบคือ ภายใต้สถานการณ์เพียงเล็กน้อย เราเพิ่มขีดจำกัดอัตราทั่วโลกสำหรับแอปพลิเคชัน ข่าวดีก็คือมีวิธีแก้ไขปัญหาเฉพาะหน้าที่เราสนับสนุนให้นักพัฒนาพิจารณาเมื่อสร้างแอปของตน
เรายังต้องการพูดถึงว่าจุดสิ้นสุดการโต้ตอบไม่ได้ผูกกับขีดจำกัดอัตรา ดังนั้นการโยกย้ายฟังก์ชันการทำงานไปยังคำสั่งของแอปพลิเคชันหากเป็นไปได้อาจเป็นอีกวิธีหนึ่ง ดูเอกสารของเราที่นี่ หรือเอกสารประกอบสำหรับไลบรารีที่คุณเลือก
การจำกัดอัตราเกตเวย์
ในการส่งข้อมูลไปยัง/จาก Discord แอปพลิเคชันของคุณจะเชื่อมต่อกับ websocket การแบ่งกลุ่มย่อย (Sharding) เป็นแนวทางปฏิบัติที่ดีที่สุดสำหรับแอปพลิเคชันโดยเฉพาะอย่างยิ่งเมื่อพวกเขายังคงเติบโตและขยายขนาดบน Discord เป็นวิธีที่แน่นอนในการทำงานไม่ทั่วๆ ไป.. แต่อยู่ในขีดจำกัดอัตรา API ของเรา การแบ่งกลุ่มย่อยใช้เปิด websockets หลายอันเพื่อให้สามารถแลกเปลี่ยนข้อมูลในการเชื่อมต่อทั้งหมดเหล่านี้แทนที่จะโอเวอร์โหลดอย่างใดอย่างหนึ่ง
shard_id = (guild_id >> 22) % num_shards
การรับส่งข้อมูลจากกิลด์/เซิร์ฟเวอร์จะถูกส่งไปยังชาร์ด (เว็บซ็อกเก็ตแบบเปิด) และคำขอของพวกเขาจะทำงานคู่ขนานกันเพื่อให้อยู่ภายใต้ขีดจำกัดอัตราทั่วโลก คิดว่าการแบ่งกลุ่มย่อยเป็นการแบ่งบอทของคุณออกเป็นหลายอินสแตนซ์ มันถูกควบคุมโดยผู้ใช้ทั้งหมดและทำให้ไลบรารีที่คุณเลือกง่ายขึ้นเท่านั้น!
ในส่วนที่เกี่ยวกับการแบ่งกลุ่มย่อยบอทขนาดใหญ่และขีดจำกัดอัตราทั่วโลกที่เพิ่มขึ้น บริการเหล่านี้สามารถนำเสนอได้เฉพาะบอทที่ทำงานในเซิร์ฟเวอร์ 150,000 เซิร์ฟเวอร์ขึ้นไปเท่านั้น คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของคำขอเหล่านี้ได้ในเอกสารประกอบของเรา: https://discord.com/developers/docs/topics/gateway#sharding-for-very-large-bots
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับวิธีการปรับแต่งและกำหนดค่าชาร์ดได้ที่นี่