无法使用机器人在Discord聊天中显示Giphy GIF

时间:2019-08-14 20:35:57

标签: javascript discord discord.js giphy giphy-api

我正在为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;
            }
        }
    }
});

1 个答案:

答案 0 :(得分:0)

randomGiphy是一个异步函数,因此您需要像这样等待它:

const gif_url = await randomGiphy();
message.reply(gif_url);