我正在为Discord机器人使用Javascript来调用Giphy Random API端点。但是问题是当我尝试让该机器人在Discord聊天中显示gif时,它什么也没显示。它只是一个空白,甚至不显示gif URL。
我知道它正在获取gif URL,因为它显示在日志中:
GET URL BROOOOO: https://giphy.com/gifs/animated-top-icons-dAkW9Z1YuihG0
但是它只是不会在Discord中呈现,如here所示。它是空白。
我很困惑,因为这是与内置Discord Giphy搜索功能相同的URL。 (如果您输入/giphy <search-terms-here>
,它将嵌入您选择的gif,该gif的URL与我要使用的gif相同。
我必须忽略一些小事或犯一个容易犯的错误。
这是调用Giphy的函数:
// Function that randomly gets a gif via Giphy Random API Endpoint
const randomGiphy = async () => {
try {
const response = await fetch(`https://api.giphy.com/v1/gifs/random?api_key=${process.env.GIPHY_API}&tag=&rating=G`,
{
method: 'GET',
headers: {
'Accept': 'application/json'
},
});
const myJson = await response.json();
console.log('json');
console.log(myJson);
console.log('data');
console.log(myJson['data']);
console.log('data url');
console.log(myJson['data']['url']);
console.log(`GET URL BROOOOO: ${myJson['data']['url']}`);
return myJson['data']['url']; // GIF URL OBTAINED HERE
}
catch {
console.log("couldnt fetch a gif bruh.");
}
}
调用Giphy API函数的代码:(这是!gif
命令)
// Will recognize commands to generate various quotes
client.on('message', async message => {
if (message.content === 'ping') {
message.reply('pong');
}
else if (message.content === '!dadjoke') {
var dadJoke = await getDadJoke();
message.reply(dadJoke);
}
else if (message.content === '!happy') {
message.reply('');
}
else if (message.content === '!encourageme') {
message.reply(getProductivityQuote());
}
else if (message.content === '!love') {
message.reply('');
var request = "https://webhook.site/836ecfe2-a79f-41df-b5a8-64850105850d";
try {
const response = await fetch(request,
{
method: 'GET',
headers: {
'Accept': 'application/json'
},
});
const myJson = await response.json();
}
catch {
console.log("couldnt make call to webhook");
}
}
else if (message.content === '!gif') {
message.reply('getting gif...');
var gif_url = randomGiphy();
message.reply(randomGiphy());
}
else if (detectBadWords === true ) {
for (var i = 0; i < forbiddenWords.length; i++) {
if (message.content.toLowerCase().includes(forbiddenWords[i])) {
if (message.author.id === client.user.id) return;
message.reply('Stop cursing or I\'m going to suck your bootyflakes!');
// message.delete();
break;
}
}
}
});
答案 0 :(得分:0)
randomGiphy
是一个异步函数,因此您需要像这样等待它:
const gif_url = await randomGiphy();
message.reply(gif_url);