You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:30:50