-2

我正在尝试在我的 discord 机器人上执行此命令,它使用 giphy api 发送一个随机的 kirby gif。但是,我只希望它发送一个,但它发送多个。这是代码:

client.on('message', message => {
    if (message.content === 'k!gif')

    giphy.search('gifs', {"q": "kirby"})
    .then((response) => {
        var totalResponses = response.data.length
        var responseIndex = Math.floor((Math.random() * 10) + 1) % totalResponses;
        var responseFinal = response.data[responseIndex]

        message.channel.send("We stan kirby gifs", {
            files: [responseFinal.images.fixed_height.url]
        })
    }).catch(() => {
        message.channel.send('Kirby has run into a roadblock and was unable to complete his task.');
    })

})

感谢您提前提供帮助!

4

2 回答 2

1

正如@Giuiopime 强调的那样,您对该命令没有任何要求。所以每次发送消息时,都会执行当前代码并发送 gif。发送此消息后,机器人会捕获一条新消息,并且该过程会一次又一次地继续……

确保在 if 中附加当前代码,并验证玩家不是机器人。此代码可能有效。我没有测试过。

client.on('message', message => {
  if(message.author.bot) return;
  if (message.content === 'k!gif'){
    giphy.search('gifs', {"q": "kirby"}).then((response) => {
      
        var totalResponses = response.data.length
        var responseIndex = Math.floor((Math.random() * 10) + 1) % totalResponses;
        var responseFinal = response.data[responseIndex]

        message.channel.send("We stan kirby gifs", {
            files: [responseFinal.images.fixed_height.url]
        })
    }).catch(() => {
        message.channel.send('Kirby has run into a roadblock and was unable to complete his task.');
    })
  }
})
于 2020-07-20T13:50:31.587 回答
0

您在if (message.content === 'k!gif')没有打开任何花括号的情况下使用,所以您需要做的就是在 if 中包含所有代码。

于 2020-07-20T09:48:01.213 回答