Heroku Meme API出现应用错误,Discord.js机器人调用失败求助
解决Heroku Meme API无响应问题
大概率是这个第三方部署在Heroku的meme API实例出问题了——免费Heroku应用会因长时间休眠、资源配额耗尽或开发者停止维护而崩溃,直接访问显示应用错误就是明证。给你几个可行的解决方向:
1. 切换至稳定的替代Meme接口
放弃这个挂掉的API,改用更可靠的来源,比如直接调用Reddit的公开接口获取meme。示例代码如下:
// Discord.js v14 示例代码 const { EmbedBuilder } = require('discord.js'); async function getMeme() { try { const response = await fetch('https://www.reddit.com/r/memes/.json?limit=20'); const data = await response.json(); const memes = data.data.children.filter(post => !post.data.stickied && post.data.post_hint === 'image'); const randomMeme = memes[Math.floor(Math.random() * memes.length)]; const embed = new EmbedBuilder() .setTitle(randomMeme.data.title) .setImage(randomMeme.data.url) .setFooter({ text: `r/memes | 👍 ${randomMeme.data.ups}` }); return embed; } catch (error) { console.error('获取meme失败:', error); return '暂时无法获取meme,请稍后再试'; } } // 在命令中调用 interaction.reply({ embeds: [await getMeme()] });
2. 自行部署同款Meme API
如果偏好原API的返回格式,可以自己把开源的Meme API部署到Heroku或其他平台:
- 找到原API的开源仓库,fork到自己的GitHub账户
- 登录Heroku,创建新应用,关联你的GitHub仓库
- 点击部署按钮完成上线,之后用你自己的Heroku应用URL替换原来的
https://meme-api.herokuapp.com/gimme
3. 给机器人增加错误处理
临时加个错误捕获逻辑,避免请求失败导致机器人崩溃,同时给用户友好提示:
// 原请求代码修改 async function fetchMeme() { try { const res = await fetch('https://meme-api.herokuapp.com/gimme'); if (!res.ok) throw new Error('API请求失败'); return await res.json(); } catch (err) { console.log('Meme API无响应:', err); return { error: '暂时无法获取meme,请稍后再试' }; } }
内容的提问来源于stack exchange,提问作者MrFiend
相关产品推荐
相关产品推荐

