无法使用 discord.js 获取带有 giphy 的 gif,制作机器人

Posted

技术标签:

【中文标题】无法使用 discord.js 获取带有 giphy 的 gif,制作机器人【英文标题】:Cannot get gifs with giphy using discord.js, making a bot 【发布时间】:2020-07-19 02:15:47 【问题描述】:
if (command === 'fetar') 
    var deadline = new Date("apr 19, 2020 00:00:00").getTime();
    var currentDate = new Date().getTime();
    var remainingTime = deadline - currentDate;

    var days = Math.floor(remainingTime / (1000 * 60 * 60 * 24)); 
    var hours = Math.floor((remainingTime %(1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
    var minutes = Math.floor((remainingTime % (1000 * 60 * 60)) / (1000 * 60)); 
    var seconds = Math.floor((remainingTime % (1000 * 60)) / 1000);

    giphy.search('gifs', "q": "food")
        .then((response) => 
            console.log(response);
            var totalResponses = response.data.length;
            var responseIndex = Math.floor((Math.random() * 10) + 1) % totalResponses;
            var responseFinal = response.data[responseIndex];
            message.channel.send('???? **E N D   O F   L E N T** ????');
            message.channel.send(`**$days** days, **$hours** hrs, **$minutes** mins, **$seconds** secs`, 
                files: [responseFinal.images.fixed_height.url])
        )
        .catch (() => 
            console.log('Ya messed up again...')
        )


尝试使用此代码但无济于事,它直接进入我的错误捕获并且不生成 gif。我试图通过控制台记录导致此问题的步骤,但没有显示任何内容。

【问题讨论】:

你能记录你得到的错误吗? 没有错误,我刚刚得到了上面显示的问题,所以控制台只是说“你又搞砸了......” .catch ((e) => console.log(e) )我想你可以用那个 status: 403, error: null, statusText: 'Forbidden' 作为旁注,为什么要对时间戳进行一些复杂的划分,而不是仅使用 Date 类的内置属性?前hours = new Date().getHours() 【参考方案1】:

根据giphy's docs 403 状态表示,您可能没有使用 API 密钥

您无权提出请求;这很可能表明您的 API 密钥存在问题。

如果您没有使用 API 密钥,您可以通过关注 this guide 获取它

【讨论】:

我使用的是 SDK 版本,而不是常规 API 版本,您认为这可能是问题所在吗? 其实我只是使用了常规的 API 密钥,它仍然给了我同样的错误,所以我很确定我的密钥是正确的并且初始化正确。 您是否检查过 API 密钥是否正确?你可以在这里查看:developers.giphy.com/dashboard【参考方案2】:

我很荒谬,哈哈,我的 API 密钥是从配置文件中提取的,但是当我初始化 giphy 客户端时,我将密钥称为字符串“giphyAPIToken”,而不是变量 giphyAPIToken 哈哈。如果您有同样的问题并且您的代码是正确的,请检查您的 API 密钥!

【讨论】:

以上是关于无法使用 discord.js 获取带有 giphy 的 gif,制作机器人的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 无法读取未定义的属性“获取”

TypeError:无法读取未定义的“获取”函数(discord.js)

带有斜杠命令的 Discord.js 语音通道

无法获取特定频道 - Discord.js v11.6.4

Discord.js 和带有 GET 请求的 http 监听器

试图获取 guildMember.presence.status 的 discord.js 导致“无法读取未定义的属性(读取 'status')”