negezor/vk-io

Не получается обработать ошибку

ilovevkapi opened this issue · 4 comments

При обработке ошибки в методе messages.removeChatUser , ничего не происходит.
Часть кода (Node.Js):

try {
    vk.api.messages.removeChatUser({
        chat_id : reqbody["object"]["message"]["peer_id"] - 2000000000,
        member_id : reqbody["object"]["message"]["reply_message"]["from_id"]
    });
} catch(e) {
    vk.api.messages.send({
        random_id : Date.now(),
        peer_id : reqbody["object"]["message"]["peer_id"],
        message : "Ошибка"
    });
}

Здесь, в основном могут возникнуть две ошибки - Такого участника нет в беседе, или же Отказано в доступе. Если ошибки не возникает, код работает без проблем. Но при ошибке, часть кода внутри "catch (e)" не выполняется.

В документации библиотеки "Vk-Io" я не смог найти, как ловить ошибки API. Пожалуйста, помогите это сделать.

Это ошибка промисов, вам надо сделать vk.api.call(...).catch(e=>{})

Это ошибка промисов, вам надо сделать vk.api.call(...).catch(e=>{})

Спасибо большое, теперь код работает, но как определить, какая именно ошибка произошла?

Например .catch(e=>{ if(e.code == 15) message.send("Access denied")
Все коды ошибок смотрите в документации вк

Вы всегда должны обрабатывать ошибки, достаточно будет пробрасывать их вверх.

try {
    await vk.api.messages.removeChatUser({
        chat_id : reqbody.object.message.peer_id - 2000000000,
        member_id : reqbody.object.message.reply_message.from_id
    });
} catch(e) {
    // Коды ошибок в сообщение
    const error_messages = {
        15: "Отказано в доступе",
        935: "Такого участника нет в беседе"
    };

    await vk.api.messages.send({
        random_id : Date.now(),
        peer_id : reqbody.object.message.peer_id,
        // from APIError
        message : error_messages[e.code]
    });
}