NODEJS Как мне выполнить действие, если статус ответа URL равен 404? - PullRequest
0 голосов
/ 29 мая 2020

Я создаю бота Discord, и я хочу создать команду, которая отправляет 3 случайных символа, а затем помещает эти символы в конец URL-адреса, чтобы проверить, существует ли он (в этом случае я использую учетные записи Steam для проверки наличия id взят), но мне нужно сделать так, чтобы при статусе ответа 404 он отправлял сообщение о том, что идентификатор не был взят.

var urlExists = require('url-exists');

      //3CHAR
   else if (message.content == "+3char") {     
     message.channel.send(getRandomString(3));


   var theURL = "https://steamcommunity.com/id/" + message.channel.lastmessage;

         urlExists("theURL");



      if (response.status != 404) {     
      return;

    }


    else {message.channel.send("`URL is not taken`");}


}

Это то, что у меня есть прямо сейчас, однако я получить ошибку «ответ не определен». Любое предложение будет с удовольствием оценено!

1 Ответ

0 голосов
/ 29 мая 2020

Вы столкнулись с проблемой async. Вам необходимо передать функцию обратного вызова на urlExists. Функция обратного вызова выполняется после завершения выполнения объекта urlExists.

https://www.npmjs.com/package/url-exists

var urlExists = require('url-exists');

urlExists('https://www.google.com', function(err, exists) {
  console.log(exists); // true
});

urlExists('https://www.fakeurl.notreal', function(err, exists) {
  console.log(exists); // false
});

В вашем случае вам нужно сделать что-то в строки:

var urlExists = require('url-exists');

var theURL = "https://steamcommunity.com/id/" + message.channel.lastmessage;

urlExists("theURL", (err, exists) => {
  if (err) {
    // handle error
  }

  if (exists) {
    message.channel.send("`URL is not taken`");
  } else {
    // do something when the URL does not exist
  }  
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...