#javascript #node.js #discord.js
#javascript #node.js #discord.js
Вопрос:
Я пытаюсь создать фрагмент кода для discord bot, который будет отображать лучший результат с веб-сайта под названием giphy при вводе / gif {text}. Для этого я уже выполнил ту часть, где он переходит по соответствующей ссылке (результаты поиска). Теперь я хочу извлечь a-href (ссылку) из первого результата (того, который открывается при нажатии на него) и присвоить его переменной, которую я могу отобразить по запросу. Кроме того, я хочу отправлять не URL, а вложение, используя {files: []} part
из .send
Я не имею ни малейшего представления, с чего начать извлечение с какой-либо другой веб-страницы, используя discord.js Я также думал о добавлении view-source:
, но я не знаю, как извлечь фрагмент текста и присвоить переменной Есть способ в HTML (JavaSript DOM?), Но он использует i-фреймы.
else if (message.content.search("/gif") == 0) {
let msg = message.content;
let gif1 = msg.split("/gif")[1].trim()
let gif2 = gif1.replace(" ", "-");
let gif = "https://giphy.com/search/" gif2;
message.channel.send("Most relevant result for" " " gif1, {files: [gif]} )
}
По-видимому, приведенный выше код отображает текстовый файл в канале discord. Я хочу, чтобы он отображал gif, который является первым результатом, без отображения ссылки.
Ответ №1:
Я бы рекомендовал использовать giphy-api
: с его помощью вы можете сделать:
var giphyApi = require("giphy-api")();
giphyApi.search({
q: 'pokemon',
rating: 'g'
}, function (err, res) {
console.log(res.data[0].images.original.url)
});
И это будет console.log: https://media3.giphy.com/media/iBANmdIlMNJVC/giphy-preview.gif?cid=e1bb72ff5ca0b1d72f66564d45c6925c
Что означает, что вы можете сделать:
var giphyApi = require("giphy-api")();
giphyApi.search({
q: 'pokemon',
rating: 'g'
}, function (err, res) {
message.channel.send('Gif:', new Discord.Attachment(res.data[0].images.original.url , 'gif.gif'))
});
Комментарии:
1. Я пытаюсь использовать их функцию giphy.random(), но она не работает с этим кодом, говорится
cannot read property "images" of undefined
. Является ли res.data[0] здесь неопределенным? Не могли бы вы мне помочь, пожалуйста? @PLASMA chicken2. Для случайного его
res.data.images.original.url
3. почему веб-сайт не показывает все правильные команды? 🙁 Я видел giphy.random там
4. Ах, так что не использование индекса в основном приводит к случайности там, я не прочитал должным образом.
Ответ №2:
client.on('message', async message => {
if(message.content.includes("!gif")){
const args = message.content.slice().trim().split(/ /g);
const command = args.shift().toLowerCase();
let converts = args.join(" ");
if(converts ==""){converts = "random"}
giphyApi.search({
q: converts,
rating: 'g'
}, function (err, res) {
let embed = new Discord.RichEmbed()
.setColor(0x00ae86)
.setTitle(`🎬 Result for ${converts}`)
.setImage((res.data[0].images.original.url))
message.channel.send({embed:embed})
});
}
});
Комментарии:
1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшило бы долгосрочную ценность ответа. Он также должен быть правильно отформатирован, чтобы упростить чтение.