我正在尝试为discord bot编写一段代码,该代码将在键入/ gif {text}时显示名为giphy的网站的最高搜索结果。为此,我已经完成了指向相应链接(搜索结果)的部分。现在,我想从第一个结果(单击时打开的结果)中提取a-href(链接),并将其分配给变量,我可以根据要求显示该变量。另外,我不想发送网址,而是使用{files: []} part
的{{1}}
我不知道从哪里开始使用discord.js从其他网页中提取内容
我还考虑过添加一个.send
,但是我不知道如何提取一段文本并分配给一个变量
HTML中有一种方法(JavaSript DOM?),但它使用i框架。
view-source:
显然,以上代码在不和谐频道中显示了一个文本文件。我希望它显示作为第一个结果的gif,而不显示链接。
答案 0 :(得分: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 :(得分:0)
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})
});
}
});