#javascript #discord #discord.js
#javascript #Discord #discord.js
Вопрос:
Этот код написан в discord.js и предназначен для поиска чего-либо, введенного с помощью команды?search ______, он выдаст желаемый результат, затем выдаст новую ошибку (‘undefined не является допустимым объектом uri или options.’) и прекратит работу, спасибо.
client.on("message", (message) => {
if (message.content.startsWith("?search")) {
var search = {
url: "http://results.dogpile.com/serp?qc=imagesamp;q=" (message.content.replace('?search ', '')),
method: "GET",
headers: {
"Accept": "text/html",
"User-Agent": "Chrome"
}
};
};
request(search, function(error, response, responseBody) {
if (error) {
return;
}
$ = cheerio.load(responseBody);
var links = $(".image a.link");
var urls = new Array(links.length).fill(0).map((v, i) => links.eq(i).attr("href"));
console.log(urls);
if (!urls.length) {
return;
}
const embed = new MessageEmbed();
embed.setTitle("Search incommminggggg");
embed.setColor("#00ffff");
embed.setImage( urls[Math.floor(Math.random() * urls.length)]);
message.channel.send(embed);
});
});
Ответ №1:
Код отсутствует там, где выдается ошибка, но я предполагаю, что он находится в этой строке:
request(search, function(error, response, responseBody) {...});
Причина довольно проста search
undefined
. Это происходит, когда ваш оператор if не соответствует.
if (message.content.startsWith("?search")) {
var search = {...};
};
Если a message
не начинается с "?search"
, то search
переменная никогда не устанавливается и будет undefined
.
Убедитесь search
, что он установлен в любом случае:
if (message.content.startsWith("?search")) {
var search = {...};
} else {
var search = {...};
};
Или, если вам не нужно ничего делать, если сообщение не начинается с "?search"
, вы можете использовать защитное предложение для досрочного завершения обратного вызова.
if (!message.content.startsWith("?search")) return;
var search = {...};
Комментарии:
1. @samleews, убедившись
search
, что он установлен. Я обновил ответ.