vk-io icon indicating copy to clipboard operation
vk-io copied to clipboard

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

Open ilovevkapi opened this issue 3 years ago • 4 comments
trafficstars

При обработке ошибки в методе 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. Пожалуйста, помогите это сделать.

ilovevkapi avatar Jun 17 '22 17:06 ilovevkapi

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

Antonzlo avatar Jun 17 '22 18:06 Antonzlo

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

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

ilovevkapi avatar Jun 17 '22 20:06 ilovevkapi

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

Antonzlo avatar Jun 17 '22 20:06 Antonzlo

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

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]
    });
}

negezor avatar Jun 18 '22 12:06 negezor