无法使用 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,制作机器人的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法读取未定义的“获取”函数(discord.js)
Discord.js 和带有 GET 请求的 http 监听器
试图获取 guildMember.presence.status 的 discord.js 导致“无法读取未定义的属性(读取 'status')”