Giphy API 总是给出相同的 gif (discord.js)
Giphy API always gives the same gifs (discord.js)
这可能不合适,但我正在制作一个不和谐的机器人,并且在这个过程中我想制作一个“gif”命令。我选择了 Giphy api,因为它似乎是最简单的一个。但每次我要求机器人获取热门动图时,它都会给我相同的动图。 (附示例)
Here you can see he bot sending the same gif 2 times
这是此命令所需的代码:
if (message.content.startsWith(`${prefix}gif`)) {
giphy.trending('gifs', {limit:100})
.then((response) => {
var totalResponses = response.data.length;
var responseIndex = Math.floor((Math.random() * 10) + 1) % totalResponses;
var responseFinal = response.data[responseIndex];
message.channel.send("Here is a gif for you!\n", {
files: [responseFinal.images.fixed_height.url]
}).catch(() => {
message.channel.send('There was an API error, please try later.')
})
})
}
如有任何答案,我们将不胜感激。
我从未使用过 giphy API,但您只是想从数组中获取随机索引,这只需通过以下操作即可完成:
var totalResponses = response.data.length;
var responseIndex = Math.floor(Math.random() * totalResponses);
var responseFinal = response.data[responseIndex];
message.channel.send("Here is a gif for you!\n", {
files: [responseFinal.images.fixed_height.url]
}).catch(() => {
message.channel.send('There was an API error, please try later.')
})
totalResponses
是数组的长度,我们需要从中得到一个随机数。这是在 responseIndex
中完成的。所以现在 responseIndex
中存储了一个从 0 到 totalResponses
的随机数(这正是我们想要的,因为数组总是从 0 开始,所以 0 可能是一个可能的索引)。然后在 responseFinal
中,我们将数组的值存储在 responseIndex
.
的随机索引处
这可能不合适,但我正在制作一个不和谐的机器人,并且在这个过程中我想制作一个“gif”命令。我选择了 Giphy api,因为它似乎是最简单的一个。但每次我要求机器人获取热门动图时,它都会给我相同的动图。 (附示例) Here you can see he bot sending the same gif 2 times
这是此命令所需的代码:
if (message.content.startsWith(`${prefix}gif`)) {
giphy.trending('gifs', {limit:100})
.then((response) => {
var totalResponses = response.data.length;
var responseIndex = Math.floor((Math.random() * 10) + 1) % totalResponses;
var responseFinal = response.data[responseIndex];
message.channel.send("Here is a gif for you!\n", {
files: [responseFinal.images.fixed_height.url]
}).catch(() => {
message.channel.send('There was an API error, please try later.')
})
})
}
如有任何答案,我们将不胜感激。
我从未使用过 giphy API,但您只是想从数组中获取随机索引,这只需通过以下操作即可完成:
var totalResponses = response.data.length;
var responseIndex = Math.floor(Math.random() * totalResponses);
var responseFinal = response.data[responseIndex];
message.channel.send("Here is a gif for you!\n", {
files: [responseFinal.images.fixed_height.url]
}).catch(() => {
message.channel.send('There was an API error, please try later.')
})
totalResponses
是数组的长度,我们需要从中得到一个随机数。这是在 responseIndex
中完成的。所以现在 responseIndex
中存储了一个从 0 到 totalResponses
的随机数(这正是我们想要的,因为数组总是从 0 开始,所以 0 可能是一个可能的索引)。然后在 responseFinal
中,我们将数组的值存储在 responseIndex
.