0

我正在为我的 Discord 机器人使用 Javascript 来调用 Giphy Random API Endpoint。但问题是当我试图让机器人在 Discord 聊天中显示 gif 时,它什么也没显示。它只是一个空白,它甚至不显示 gif URL。

我知道它正在获取 gif URL,因为它显示在日志中:

GET URL BROOOOO: https://giphy.com/gifs/animated-top-icons-dAkW9Z1YuihG0

但它只是不会在 Discord 中呈现它,如此处所示。它是空白的。

我很困惑,因为这是与内置 Discord Giphy 搜索功能相同的 URL。(如果您键入/giphy <search-terms-here>,它将嵌入您选择的 gif,该 gif 遵循与我尝试使用的相同的 gif URL。

我一定是忽略了一些小事或犯了一个简单的错误。

这是调用 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;
            }
        }
    }
});
4

1 回答 1

0

randomGiphy是一个异步函数,所以你需要像这样等待它:

const gif_url = await randomGiphy();
message.reply(gif_url);
于 2019-08-18T16:48:02.047 回答