Основы
Ошибки
Как выглядит отказ
Все отказы API выглядят одинаково.
{"code": 50027, "message": "Неверный ключ вебхука"}code — это номер причины. Номера те же, что у Discord, поэтому код, который уже разбирает ошибки Discord, подойдёт и для Glitch. По этому полю программа решает, что делать дальше.
message — это пояснение для человека на языке запроса (см. Как устроено API). Его удобно писать в журнал, но разбирать его программой не нужно, текст может меняться.
Ошибки в полях
Если в запросе неверны поля, к отказу добавляется объект errors. Он повторяет устройство запроса и показывает, что не так с каждым полем.
{
"code": 50035,
"message": "Неверные данные",
"errors": {
"content": {
"_errors": [{"code": "STRING_TYPE", "message": "Неверные данные"}]
}
}
}Здесь поле content пришло не строкой. Ошибки во вложенных объектах описываются так же, по пути до поля. Например, ошибка в заголовке второй карточки будет в errors.embeds.1.title.
HTTP-статусы
| Статус | Что значит | Что делать |
|---|---|---|
200 OK | Готово, в ответе объект | |
204 No Content | Готово, тела нет | |
400 Bad Request | Запрос неверный | Посмотреть code и errors, исправить запрос. Повторять без изменений бесполезно |
401 Unauthorized | Нет входа или ключ неверный | Проверить ключ или адрес вебхука |
403 Forbidden | Нет доступа или права | Проверить права в сообществе |
404 Not Found | Объекта нет или адрес неверный | Объект мог быть удалён |
405 Method Not Allowed | Этот адрес не принимает такой метод | Проверить метод запроса |
413 Content Too Large | Запрос больше 30 МБ | Уменьшить файлы или отправить их несколькими сообщениями |
429 Too Many Requests | Слишком часто | Подождать retry_after секунд и повторить, см. Пределы частоты |
500 Internal Server Error | Ошибка на нашей стороне | Повторить чуть позже. Если повторяется, напишите нам |
502 Bad Gateway | Сервер API недоступен, например перезапускается | Повторить через несколько секунд |
Коды ошибок
| Код | Что случилось |
|---|---|
0 | Отказ без отдельного кода. Причину подскажут статус и message |
10008 | Сообщения нет. Оно удалено или отправлено не этим вебхуком |
10015 | Вебхука нет. Скорее всего, его удалили в настройках канала |
30007 | В канале уже 15 вебхуков, больше создать нельзя |
40001 | Нет входа. Ключ не передан или недействителен |
40005 | Запрос больше 30 МБ |
50001 | Нет доступа. Места не существует, или у вызывающего нет к нему доступа |
50006 | Сообщение пустое. В нём нет ни текста, ни файлов, ни карточек |
50007 | Нельзя написать этому человеку, он заблокирован или заблокировал вас |
50013 | Не хватает права на это действие |
50027 | Неверный ключ вебхука |
50035 | Неверные поля запроса или параметр, которого нет в Glitch. Подробности в errors или message |
Отказ 50001 одинаков и для места, которого нет, и для места, куда вам нельзя. Так сделано нарочно, чтобы по разнице ответов нельзя было перебирать чужие номера.
Что делать программе
- Ключ неверный (
50027) или вебхука нет (10015). Повторять бесполезно. Сообщите человеку, что адрес вебхука нужно заменить. - Неверный запрос (
400). Это ошибка в программе. Запишитеmessageиerrorsв журнал. - Слишком часто (
429). Подождитеretry_afterсекунд и повторите. - Ошибка сервера (
500). Повторите через несколько секунд, каждый раз выжидая дольше. Учтите, что сообщение при такой ошибке могло уже появиться в канале.