【问题标题】:How can i make a request to a website to get dog pictures for my discord bot?我如何向网站发出请求以获取我的不和谐机器人的狗图片?
【发布时间】:2020-07-09 20:38:18
【问题描述】:

我正在发出一个请求狗图片的命令。到目前为止,我的代码很奇怪,因为我不完全理解 HTTP 请求。有人能指出我正确的方向吗?

const request = require('request');

    request.get('https://cdn.pixabay.com/photo/2016/11/26/23/45/dog-1861839__340.jpg', {

    }, function(error, response, body) {
        if(!error && response.statusCode == 200) {
            message.channel.send(response.request.uri.href);
        } else {
            console.log(error);
        }
    })

谢谢提前

ps:试图从https://pixabay.com/images/search/dog/这个链接请求

【问题讨论】:

    标签: node.js http bots discord discord.js


    【解决方案1】:

    使用https://www.npmjs.com/package/pixabay-api

    var pixabay = require("pixabay-api")
    var Discord = require("discord.js")
    var key = "your api key"//get key here: https://pixabay.com/api/docs/#api_search_images
    

    有一个callack:

    pixabay.searchImages(key, 'puppy').then((r) => {
           //create embed
            message.reply(new Discord.MessageEmbed()
                .setTitle("Random Puppy")
                //get random puppy image from response
                .setImage(r.hits[Math.floor(Math.random() * r.hits.length)].largeImageURL))
    })
    

    异步:

    var r = await pixabay.searchImages(key, 'puppy')
    message.reply(new Discord.MessageEmbed()
         .setTitle("Random Puppy")
         .setImage(r.hits[Math.floor(Math.random() * r.hits.length)].largeImageURL))
    

    【讨论】:

      【解决方案2】:

      如果您已经有图片链接,则无需进行 HTTP 请求。 您只需要在嵌入消息中显示图像。

      const Discord = require("discord.js");
      
      var embed = new Discord.RichEmbed()
      .setTitle("Dog picture")
      .setDescription("Here is a picture of a dog")
      .setImage("https://cdn.pixabay.com/photo/2016/11/26/23/45/dog-1861839__340.jpg")
      message.channel.send(embed)
      

      如果您不想使用嵌入,您仍然可以仅通过简单的消息发布图片。

      message.channel.send("Here is a picture of a dog!", {
          file: "https://cdn.pixabay.com/photo/2016/11/26/23/45/dog-1861839__340.jpg" // Or replace with FileOptions object
      });
      

      编辑:

      如果你想得到一张随机的狗图片,找一个 web API。我找到了this 一个。 所以现在,您将端点链接放在您的请求上并解析结果。

      const request = require('request');
      //Send the request to the API website.
      request.get('https://dog.ceo/api/breeds/image/random', {
      
      }, function(error, response, body) {
          if(!error && response.statusCode == 200) {
            var parsedData = JSON.parse(body); //Parse the json data.
            var embed = new Discord.RichEmbed()
            .setTitle("Dog picture")
            .setDescription("Here is a picture of a dog")
            .setImage(parsedData.message)
            .setColor("AQUA")
            message.channel.send(embed);
          } else {
              console.log(error);
          }
      })
      

      【讨论】:

      • 抱歉,我不太清楚。我想每次都要求一张随机的狗照片 :) 不只是同一张
      • @Proto for random,尝试使用随机请求的 API,例如 dog.ceo/dog-api
      • 我已经实现了@balexandre 所说的^^。
      猜你喜欢
      • 2021-04-24
      • 2021-06-24
      • 2021-06-04
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2022-09-28
      • 2020-12-12
      相关资源
      最近更新 更多