@Gera01
Unity, С# и больше ничего.

Как словить server side error?

Здравствуй. Есть код для инвока действия с апи (клик на кнопку сообщения бота в данном случае) через клиент gramjs:
Код
const result = await client.invoke(
          new Api.messages.GetBotCallbackAnswer({
            peer: botName,
            msgId: cargosChooserMessage.id,
            data: buttons[buttons.length - 1].data,
          }),
        );


При ее запуске - она срабатывает, сообщение ответа отправляется в телеграмм переписку, но выкидывает ошибку и код стопориться.
Ошибка""
/Users/gera/Documents/GitHub/cargotech-js-parser/src/node_modules/telegram/errors/index.js:28
return new RPCBaseErrors_1.RPCError(rpcError.errorMessage, request, rpcError.errorCode);
^

RPCError: 400: BOT_RESPONSE_TIMEOUT (caused by messages.GetBotCallbackAnswer)
at RPCMessageToError (/Users/gera/Documents/GitHub/cargotech-js-parser/src/node_modules/telegram/errors/index.js:28:12)
at MTProtoSender._handleRPCResult (/Users/gera/Documents/GitHub/cargotech-js-parser/src/node_modules/telegram/network/MTProtoSender.js:537:58)
at MTProtoSender._processMessage (/Users/gera/Documents/GitHub/cargotech-js-parser/src/node_modules/telegram/network/MTProtoSender.js:467:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async MTProtoSender._recvLoop (/Users/gera/Documents/GitHub/cargotech-js-parser/src/node_modules/telegram/network/MTProtoSender.js:418:17) {
code: 400,
errorMessage: 'BOT_RESPONSE_TIMEOUT'
}


Ошибка server side и ее не получается словить не с помощью
try catch

try {
        const result = await client.invoke(
          new Api.messages.GetBotCallbackAnswer({
            peer: botName,
            msgId: cargosChooserMessage.id,
            data: buttons[buttons.length - 1].data,
          }),
        );
        log(result);
        // If the request is successful, break the loop
        break;
      } catch (error) {
        if (
          error.code === 400 &&
          error.errorMessage === 'BOT_RESPONSE_TIMEOUT'
        ) {
          console.error('Bot response timeout. Retrying...');
        } else {
          console.error('An error occurred:', error);
          // Handle the error
          break;
        }
      }


Не с помощью .catch((error) => {})
const result = await client
        .invoke(
          new Api.messages.GetBotCallbackAnswer({
            peer: botName,
            msgId: cargosChooserMessage.id,
            data: buttons[buttons.length - 1].data,
          }),
        )
        .catch((error) => {
          log(error);
        });


Ошибка - кастомная, из апи телеграмм, так что пробовал ее словить и с помощью библиотеки и ее типов. Но ничего из перечисленного не ловит ошибку
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы