الأخطاء
كل نوع خطأ يمكن أن تعيده الواجهة، مع سببه وحله.
صيغة الخطأ
كل خطأ JSON فيه type، وأحيانًا حقول أخرى:
{ "type": "MissingPermission", "permission": "ManageMessages" }
{ "type": "FailedValidation", "error": "content: length must be between 0 and 2000" }
{ "type": "FileTooLarge", "max": 20000000 }افحص type ولا تعتمد على النص أبدًا. الأنواع ثابتة: لا يُعاد تسميتها ولا تُحذف. قد تظهر أنواع جديدة في السيرفرات الأحدث، فعامل النوع المجهول كفشل عام.
ماذا تفعل بالخطأ
| الحالة | المعنى | ما تفعله |
|---|---|---|
400, 422 | الطلب خاطئ | صحّحه. سيفشل الطلب نفسه مجددًا |
401 | الرمز خاطئ | أوقف البوت وتحقق من الرمز |
403 | لا يحق للبوت هذا | أخبر الشخص. لا تُعد المحاولة |
404 | غير موجود | انسه |
409 | تعارض | اجلب الحالة الحالية |
429 | طلبات كثيرة | انظر حدود المعدل |
5xx | فشل من جهتنا | أعد المحاولة بمهلة متزايدة، من ثلاث إلى خمس مرات |
الأخطاء الصادرة من سيرفر الويب نفسه (لا رمز، أو مسار مجهول، أو جسم ليس JSON) هي JSON أيضًا. تحقق من الحالة قبل تحليل الجسم، فقد يجيب وسيط بينكما بصفحة HTML.
هل البوت في ذلك السيرفر؟
لا يرى البوت إلا السيرفرات التي ثُبّت فيها. أما السيرفر الذي ليس فيه، فتختلف الإجابات بحسب المسار:
| الطلب | الجواب |
|---|---|
GET /servers/{target} | 404 NotFound |
GET /channels/{target} لإحدى قنواته | 404 NotFound |
POST /channels/{target}/messages لإحدى قنواته | 403 MissingPermission |
لذلك قد يعني 403 MissingPermission حين يكتب بوتك في قناة أعطاه أحدهم معرّفها أن البوت غير مثبّت هناك. اسأل GET /channels/{target}: يعني 404 NotFound أن البوت ليس في ذلك السيرفر (أو أن القناة غير موجودة)، فثبّت البوت أولًا برابط الدعوة من بوابة المطورين. ويعني 403 MissingPermission هناك أن البوت في السيرفر لكنه لا يرى القناة: القناة الخاصة تحتاج إلى رؤية القناة لأحد أدوار البوت.
أخطاء قد تصل البوت
| Type | HTTP | السبب | الحل |
|---|---|---|---|
UnknownUser | 404 | المستخدم غير موجود أو لا يستطيع البوت رؤيته. | تحقق من المعرّف. ربما حذف الشخص حسابه. |
DirectMessagesRestricted | 403 | ترفض إعدادات خصوصية الشخص هذه الرسالة الخاصة. | لا تُعد المحاولة. راسله في قناة السيرفر. |
DirectMessagesPaused | 403 | أوقف السيرفر الرسائل الخاصة بين أعضائه. | لا تُعد المحاولة. يرفع المشرف الإيقاف. |
BlockedByOther | 403 | حظر الشخص البوت. | لا تُعد المحاولة. |
OfficialAccount | 403 | لا يمكن الرد على حساب زرزور الرسمي، ولا التفاعل مع رسائله، ولا تثبيتها، ولا الإبلاغ عنه. | لا تُعد المحاولة. |
UnknownChannel | 404 | القناة غير موجودة أو لا يراها البوت. | تحقق من المعرّف ومن أن البوت يملك صلاحية رؤية القناة. |
UnknownMessage | 404 | الرسالة غير موجودة، أو ليست في هذه القناة. | اعتبرها محذوفة. |
UnknownAttachment | 400 | معرّف ملف في الطلب غير موجود أو استُخدم من قبل. | ارفع الملف مجددًا. كل رفع يُستخدم مرة واحدة. |
CannotDeleteMessage | 403 | لا يمكن حذف الرسالة، مثل رسالة لم ينشئها هذا التفاعل. | احذف ما كتبه البوت فقط، أو اطلب صلاحية إدارة الرسائل. |
CannotEditMessage | 403 | لا يعدّل البوت إلا رسائله. | أرسل رسالة جديدة. |
CannotJoinCall | 400 | القناة لا تقبل المكالمات. | استخدم قناة صوتية. |
TooManyAttachments | 400 | في الرسالة ملفات أكثر من max. | أرسل الملفات في عدة رسائل. |
TooManyEmbeds | 400 | في الرسالة تضمينات أكثر من max. | أرسل تضمينات أقل. |
TooManyReplies | 400 | ترد الرسالة على رسائل أكثر من max. | رد على رسائل أقل. |
TooManyChannels | 400 | بلغ السيرفر حد القنوات max. | احذف قناة أولًا. |
TooManyChannelWebhooks | 400 | بلغت القناة حدها من الويب هوك. | احذف ويب هوك في هذه القناة. |
TooManyServerWebhooks | 400 | بلغ السيرفر حده من الويب هوك. | احذف ويب هوك في هذا السيرفر. |
RateLimited | 429 | أرسل ويب هوك أكثر مما ينبغي. يحمل الجسم retry_after بالميلي ثانية. | انتظر هذه المدة ثم أرسل مجددًا. |
ForumThreadRequired | 400 | نشر ويب هوك في منتدى دون موضوع. | أرسل thread_id، أو thread_name لبدء موضوع. |
ThreadsDisabled | 403 | أوقف السيرفر المواضيع. يبقى الموجود متاحًا للقراءة. | لا تُعد المحاولة. السيرفر وحده يمكنه إعادة تشغيلها. |
ForumsDisabled | 403 | أوقف السيرفر المنتديات. يبقى الموجود متاحًا للقراءة. | لا تُعد المحاولة. السيرفر وحده يمكنه إعادة تشغيلها. |
PluginsDisabled | 403 | الإضافات موقوفة في هذا السيرفر. لا يستجيب أي مسار للإضافات ما دامت موقوفة. | لا تُعد المحاولة. لا تعود الإضافات إلا عندما يشغّلها السيرفر. |
EmptyMessage | 422 | الرسالة بلا محتوى أو تضمينات أو مرفقات أو مكوّنات. | أرسل شيئًا. |
PayloadTooLarge | 422 | تتجاوز الرسالة حدًا للحجم. | اختصر النص أو التضمينات. |
AlreadyPinned | 400 | الرسالة مثبتة من قبل. | تجاهل الخطأ. |
NotPinned | 400 | الرسالة غير مثبتة. | تجاهل الخطأ. |
InSlowmode | 429 | في القناة وضع بطيء وكتب البوت مبكرًا. يحمل الجسم retry_after. | انتظر، أو امنح البوت صلاحية تجاوز الوضع البطيء. هذا رفض وليس حد معدل. |
UnknownServer | 404 | السيرفر غير موجود أو البوت ليس فيه. | تحقق من المعرّف. انسَ السيرفر عند وصول ServerDelete. |
InvalidRole | 404 | الدور غير موجود في هذا السيرفر. | اجلب الأدوار مجددًا. |
Banned | 403 | هذا المستخدم محظور من السيرفر. | يرفع المشرف الحظر أولًا. |
AlreadyInServer | 409 | البوت موجود في هذا السيرفر. | لا شيء لتفعله. |
CannotTimeoutYourself | 400 | هدف المهلة هو البوت نفسه. | اختر عضوًا آخر. |
TooManyEmoji | 400 | بلغ السيرفر حد الرموز التعبيرية max. | احذف رمزًا أولًا. |
TooManyRoles | 400 | بلغ السيرفر حد الأدوار max. | احذف دورًا أولًا. |
UnknownApplication | 404 | التطبيق غير موجود. | تحقق من المعرّف: معرّف التطبيق هو معرّف مستخدم البوت. |
ApplicationNotInstalled | 403 | استخدم أحدهم بوتًا غير موجود في هذا السيرفر. | ثبّت البوت في السيرفر. |
ApplicationOffline | 503 | عُلّق البوت أو أُوقف، فلا يصله شيء. | يتواصل مالكه مع دعم زرزور. |
SignedDeliveryRejected | 400 | فشل عنوان تفاعلات HTTP في الاختبار، ويبيّن reason السبب. | انظر صفحة التفاعلات عبر HTTP. |
UnknownCommand | 404 | معرّف الأمر غير معروف أو حُذف الأمر. | اجلب قائمة الأوامر. |
CommandAlreadyExists | 409 | يوجد أمر بهذا الاسم والنوع في هذا النطاق. | استخدم PUT لاستبدال القائمة، أو عدّل الأمر. |
TooManyCommands | 400 | بلغت الحد max من الأوامر من هذا النوع في النطاق الواحد. | احذف أوامر أولًا. |
UnknownInteraction | 404 | معرّف التفاعل أو رمزه خاطئ. | استخدم القيم الواردة في InteractionCreate كما هي. |
InteractionExpired | 410 | انتهت الثواني الثلاث للرد، أو الدقائق الخمس عشرة للرمز. | رد أسرع. استخدم DeferredMessage للعمل البطيء. |
InteractionAlreadyAcknowledged | 409 | لهذا التفاعل رده الأول من قبل. | أرسل رسالة متابعة، أو عدّل الرد الأصلي. |
TooManyFollowups | 400 | بلغت الحد max من رسائل المتابعة لتفاعل واحد. | عدّل رسالة، أو أرسل رسالة عادية. |
IsBot | 400 | هذا المسار للأشخاص. تُرفض البوتات. | افعل ذلك بطريقة أخرى. يبيّن المرجع ما تستطيع البوتات استخدامه. |
BotIsPrivate | 403 | لا يثبّت البوت الخاص إلا مالكه. | سجّل الدخول بحساب المالك، أو اجعل البوت عامًا. |
MissingPermission | 403 | ينقص البوت الصلاحية المذكورة في permission. | امنح البوت الصلاحية، أو أخبر الشخص. |
MissingUserPermission | 403 | ينقص الشخص الذي يعمل البوت باسمه الصلاحية المذكورة في permission. | أخبر الشخص. |
MissingIntent | 403 | يتطلب المسار أو الاتصال نية الاتصال المذكورة في intent. | فعّلها في بوابة المطورين واطلبها عند الاتصال. |
MasqueradeNameTaken | 400 | اسم التنكر يقلّد عضوًا آخر. | اختر اسمًا آخر. |
BotNeedsVerification | 403 | يتوقف البوت غير الموثق عند 100 سيرفر. | اطلب التوثيق. |
VerificationRequired | 403 | يرفض مستوى التحقق في السيرفر هذا العضو الآن، ويبيّن requirement السبب. | انتظر، أو اسأل مشرفي السيرفر. |
AutoModBlocked | 403 | رفضت قاعدة الإشراف الآلي rule الرسالة. | غيّر النص. لا تُعد النص نفسه. |
RulesNotAccepted | 403 | لم يقبل العضو قواعد السيرفر. | أخبره بأن يقبل القواعد. |
InvitesPaused | 403 | أوقف السيرفر الدعوات. | لا تُعد المحاولة. يرفع المشرف الإيقاف. |
NotElevated | 403 | الهدف في مرتبة البوت أو أعلى، أو الدور أعلى من أعلى أدوار البوت. | ارفع دور البوت. |
NotPrivileged | 403 | مرتبة البوت أدنى من أن تسمح بهذا التغيير. | ارفع دور البوت. |
CannotGiveMissingPermissions | 403 | حاول البوت منح صلاحية لا يملكها. | امنح البوت هذه الصلاحية أولًا. |
NotOwner | 403 | لا يفعل هذا إلا المالك. | اسأل المالك. |
IsElevated | 403 | مرتبة الهدف أعلى من أن يسمح بهذا. | اختر هدفًا أدنى. |
InternalError | 500 | حدث خطأ في السيرفر. | انتظر وأعد المحاولة بمهلة متزايدة. بلّغ عنه إن استمر. |
InvalidOperation | 400 | الطلب غير صالح في هذه الحالة، مثل Modal ردًا على نموذج. | راجع قواعد هذا المسار. |
InvalidCredentials | 401 | الرمز أو كلمة المرور أو التذكرة خاطئة. | تحقق منها. |
InvalidProperty | 400 | تركيبة الحقول غير مسموحة هنا. | راجع جسم الطلب. |
InvalidSession | 401 | الرمز مفقود أو خاطئ، أو عُلّق البوت. | توقف وتحقق من الرمز. لا تفيد إعادة المحاولة. |
NotAuthenticated | 401 | يتطلب المسار رمزًا ولم يصله. | أرسل x-bot-token. |
DuplicateNonce | 409 | استُخدم nonce نفسه لطلب مختلف. | استخدم قيمة جديدة لكل رسالة جديدة. |
NotFound | 404 | المسار أو الكائن غير موجود. | تحقق من المسار والمعرّفات. |
NoEffect | 400 | الطلب لا يغيّر شيئًا. | تجاهل الخطأ. |
FailedValidation | 400 | يخالف الجسم حدًا أو قاعدة، ويذكر fields كل حقل مع قاعدته، ويبيّن error أيها. | صحّح الجسم. لا تُعد الطلب نفسه. |
LiveKitUnavailable | 400 | الصوت غير متاح على هذا السيرفر. | حاول لاحقًا. |
NotAVoiceChannel | 400 | القناة ليست قناة صوتية. | استخدم قناة صوتية. |
AlreadyConnected | 400 | البوت متصل بهذه القناة الصوتية من قبل. | اقطع الاتصال أولًا. |
NotConnected | 400 | العضو ليس في قناة صوتية. | راجع حالات الصوت أولًا. |
UnknownNode | 400 | عقدة الصوت غير موجودة. | خذ اسمًا من features.livekit.nodes في GET /. |
FeatureDisabled | 400 | الميزة المذكورة في feature معطلة على هذا السيرفر. | لا تُعد المحاولة. تفعّلها السيرفرات المستضافة ذاتيًا في إعداداتها. |
HeaderTooLarge | 400 | ترويسة كبيرة جدًا، مثل سبب سجل التدقيق. | اختصرها. |
ProxyError | 400 | تعذر على وسيط الروابط أو الوسائط جلب العنوان. | تحقق من أن العنوان عام. |
FileTooSmall | 422 | الملف المرفوع فارغ. | أرسل ملفًا له محتوى. |
FileTooLarge | 422 | الملف أكبر من حد وسمه max. | أرسل ملفًا أصغر. |
FileTypeNotAllowed | 400 | هذا الوسم يقبل الصور فقط. | أرسل صورة، أو استخدم attachments. |
ImageProcessingFailed | 500 | تعذرت قراءة الصورة. | أرسل صورة صالحة. |
NoEmbedData | 400 | لا بيانات معاينة للرابط. | تجاهل الخطأ. |
MissingHeaders | 400 | ترويسة مطلوبة مفقودة. | أرسل x-bot-token، وcontent-type مع الجسم. |
OperationFailed | 500 | تعذر إتمام العملية. | أعد المحاولة مرة واحدة لاحقًا. |
IncorrectData | 400 | البيانات المخزنة لا تطابق، ويذكرها with. | اجلب الكائن مجددًا. |
DatabaseError | 500 | فشل طلب قاعدة البيانات في السيرفر. | انتظر وأعد المحاولة بمهلة متزايدة. |
VosoUnavailable | 400 | خدمة الصوت القديمة غير متاحة. | استخدم صوت LiveKit. |
RenderFail | 500 | تعذر على السيرفر إنشاء قالب. | حاول لاحقًا. |
LabelMe | 500 | خطأ سيرفر غير مصنف. | حاول لاحقًا. بلّغ عنه إن استمر. |
ContactSupport | 400 | يطلب السيرفر أن يتواصل شخص مع الدعم، ويبيّن msg السبب. | اعرض الرسالة على المالك. |
InvalidFlagValue | 400 | علامة بقيمة لا يعرفها السيرفر. | راجع العلامات. |
TooManySounds | 400 | لوحة أصوات السيرفر ممتلئة. | احذف صوتًا أولًا. max هو الحد. |
SoundAlreadyAdded | 409 | هذا الصوت من المكتبة موجود في لوحة أصوات السيرفر من قبل. | لا حاجة إلى فعل شيء. |
SoundLibraryUnavailable | 503 | مكتبة الأصوات غير جاهزة بعد. | حاول مجددًا بعد دقيقة. |
TooManySpeakers | 400 | بلغت المنصّة الحد الأقصى من المتحدثين. | أعد أحد المتحدثين إلى الجمهور أولًا. max هو الحد. |
PollEnded | 409 | انتهى الاستطلاع: لا تصويت بعد الآن، ولا يمكن إنهاؤه مرة أخرى. | لا تُعد المحاولة. |
أخطاء مسارات الحساب
نادرًا ما تراها البوتات. وهي تخص مسارات الأشخاص، مثل تسجيل الدخول.
| Type | HTTP | السبب | الحل |
|---|---|---|---|
AlreadyOnboarded | 403 | للحساب اسم مستخدم من قبل. | يستخدمه التطبيق فقط. |
AgeNotDeclared | 403 | لم يصرّح الحساب بعمره. | للأشخاص فقط: أكمله في التطبيق. |
UsernameTaken | 409 | اسم المستخدم مأخوذ. | اختر اسمًا آخر. |
InvalidUsername | 400 | في اسم المستخدم أحرف غير مسموحة. | استخدم الحروف والأرقام و. و- و_. |
DiscriminatorChangeRatelimited | 429 | تغيرت علامة الاسم قبل وقت قصير. | انتظر. |
AlreadyFriends | 409 | المستخدمان صديقان من قبل. | لا أصدقاء للبوتات. |
AlreadySentRequest | 409 | طلب الصداقة قيد الانتظار. | لا أصدقاء للبوتات. |
Blocked | 409 | المستخدم محظور. | للأشخاص فقط. |
NotFriends | 403 | يتطلب هذا صداقة. | لا أصدقاء للبوتات. |
GroupInvitesRestricted | 403 | يرفض الشخص دعوات المجموعات. | للأشخاص فقط. |
TooManyPendingFriendRequests | 400 | طلبات صداقة كثيرة قيد الانتظار. | للأشخاص فقط. |
CannotRemoveYourself | 400 | لا يستطيع مالك المجموعة إزالة نفسه. | للأشخاص فقط. |
GroupTooLarge | 403 | المجموعة ممتلئة. | للأشخاص فقط. |
AlreadyInGroup | 409 | المستخدم في المجموعة من قبل. | للأشخاص فقط. |
NotInGroup | 404 | المستخدم ليس في المجموعة. | للأشخاص فقط. |
CantCreateServers | 403 | لا يستطيع هذا الحساب إنشاء سيرفرات، ولا تستطيع البوتات ذلك أبدًا. | أنشئ السيرفر بحساب شخص. |
TooManyServers | 400 | بلغ الحساب حد السيرفرات. | غادر سيرفرًا أولًا. |
VanityUnavailable | 403 | لا يمكن لهذا السيرفر الحصول على عنوان مخصص. | للأشخاص فقط. |
VanityTaken | 409 | العنوان المخصص مأخوذ. | اختر عنوانًا آخر. |
VanityReserved | 400 | العنوان المخصص محجوز. | اختر عنوانًا آخر. |
VanityPaused | 410 | العنوان المخصص موقوف. | اسأل الدعم. |
TooManyCommunityItems | 400 | بلغ المنشئ حد العناصر. | ليس للبوتات. |
MissingPlatformPermission | 403 | يتطلب هذا صلاحية من فريق زرزور. | ليس للبوتات. |
ProfileTextFiltered | 422 | أوقف مرشح المنصة هذا النص. | غيّر النص، أو اطلب مراجعته عبر الدعم. |
CommunityItemConflict | 409 | تغير عنصر المعرض في الأثناء. | ليس للبوتات. |
TooManyReports | 429 | بلاغات كثيرة في وقت قصير. | انتظر. |
SafetyCaseConflict | 409 | تغيرت حالة الأمان في الأثناء. | ليس للبوتات. |
TooManySupercharges | 400 | بلغت حد الأجنحة. | ليس للبوتات. |
TooManyBotCreations | 429 | أنشأ الحساب 7 بوتات خلال آخر 7 أيام. | انتظر حتى resets_at ثم أنشئ البوت. |
PromotionSlotsFull | 409 | كل أماكن الترويج مأخوذة. | ليس للبوتات. |
NotOnDiscover | 400 | السيرفر ليس في «اكتشف». | ليس للبوتات. |
ReachedMaximumBots | 400 | بلغ الحساب حد البوتات. | احذف بوتًا قديمًا أولًا. |
IsNotBot | 400 | هذا المسار للبوتات. | أرسل x-bot-token. |
CannotReportYourself | 400 | لا يستطيع الشخص الإبلاغ عن نفسه. | ليس للبوتات. |
CaptchaFailed | 400 | فشل اختبار التحقق. | للأشخاص فقط. |
BlockedByShield | 400 | رفض درع التسجيل الطلب. | للأشخاص فقط. |
UnverifiedAccount | 403 | البريد الإلكتروني للحساب غير موثق. | وثّق البريد. |
EmailFailed | 500 | تعذر إرسال البريد. | حاول لاحقًا. |
InvalidToken | 401 | الرابط أو الرمز خاطئ أو منتهٍ. | اطلب رمزًا جديدًا. |
MissingInvite | 400 | يتطلب هذا السيرفر دعوة للتسجيل. | للأشخاص فقط. |
InvalidInvite | 400 | الدعوة خاطئة. | اطلب دعوة جديدة. |
CompromisedPassword | 400 | كلمة المرور في قائمة كلمات مسرّبة. | اختر كلمة أخرى. |
ShortPassword | 400 | كلمة المرور قصيرة جدًا. | اختر كلمة أطول. |
LockedOut | 403 | محاولات دخول فاشلة كثيرة. | انتظر. |
TotpAlreadyEnabled | 400 | تطبيق المصادقة مفعّل من قبل. | للأشخاص فقط. |
DisallowedMFAMethod | 400 | هذا التحقق غير مسموح هنا. | للأشخاص فقط. |
AgeRequirementNotMet | 403 | عمر الحساب لا يسمح بهذا. | للأشخاص فقط. |
AgeChangeNotAllowed | 403 | لا يمكن تغيير العمر. | للأشخاص فقط. |
AgeRestricted | 403 | المحتوى مقيد بالعمر. | للأشخاص فقط. |
TooManyServerEvents | 400 | بلغ السيرفر الحد الأقصى من الفعاليات المجدولة. | للأشخاص فقط. |
ForwardMatureContent | 403 | رسالة من قناة للبالغين لا تُعاد توجيهها إلا إلى قناة أخرى للبالغين. | للأشخاص فقط: لا تستطيع البوتات إعادة التوجيه. |
أخطاء OAuth2
يتبع POST /oauth2/token معيار OAuth2 ويجيب بالحقلين error وerror_description بدل type. انظر OAuth2.