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

Discord Bot调用GPT-3.5-turbo遇404错误求助

修复Discord Bot调用OpenAI API的404错误

核心排查方向及解决步骤

1. 确认API端点正确性

GPT-3.5-turbo必须使用聊天补全端点,旧的文本补全端点(/v1/completions)仅适用于text-davinci-003等模型,误用会直接返回404:

  • 正确端点:https://api.openai.com/v1/chat/completions

如果使用Axios,务必确保请求URL指向上述端点;如果用OpenAI官方npm包,需保证安装的是v4及以上版本(v3版本的端点映射已过时)。

2. 规范请求结构(代码示例)

Axios 正确调用示例

const axios = require('axios');
require('dotenv').config();

async function getGptResponse(userMessage) {
  try {
    const response = await axios.post(
      'https://api.openai.com/v1/chat/completions',
      {
        model: 'gpt-3.5-turbo',
        messages: [{ role: 'user', content: userMessage }],
        temperature: 0.7
      },
      {
        headers: {
          'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
          'Content-Type': 'application/json'
        }
      }
    );
    return response.data.choices[0].message.content.trim();
  } catch (error) {
    console.error('API请求错误:', error.response?.data || error.message);
    throw error;
  }
}

OpenAI 官方npm包(v4)正确示例

const OpenAI = require('openai');
require('dotenv').config();

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

async function getGptResponse(userMessage) {
  try {
    const completion = await openai.chat.completions.create({
      model: 'gpt-3.5-turbo',
      messages: [{ role: 'user', content: userMessage }],
    });
    return completion.choices[0].message.content.trim();
  } catch (error) {
    console.error('API请求错误:', error.response?.data || error.message);
    throw error;
  }
}

3. 验证环境变量加载

即使你确认配置正确,也要在代码启动时打印验证:

console.log('OpenAI API Key:', process.env.OPENAI_API_KEY ? '已加载' : '未加载');

如果显示“未加载”,检查:

  • 是否在代码最顶部调用了dotenv.config()(CommonJS)或import 'dotenv/config'(ESM)
  • .env文件是否放在项目根目录,且文件名正确(不能有空格或后缀)
  • 环境变量名是否拼写正确(比如OPENAI_API_KEY而非OPENAI_KEY)

4. 排查账号权限与额度

404错误偶尔也会伪装成权限问题:

  • 登录OpenAI后台,确认你的API Key已启用,且拥有chat.completions端点的访问权限
  • 检查账号是否有剩余额度(免费额度过期或耗尽后,也会触发非预期的错误码)

Discord Bot 集成示例(含点赞/点踩反馈)

const { Client, GatewayIntentBits, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
require('dotenv').config();

const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent] });

client.on('messageCreate', async (message) => {
  if (message.author.bot) return;

  try {
    const gptResponse = await getGptResponse(message.content);
    const reply = await message.reply(gptResponse);

    // 添加点赞/点踩按钮
    const row = new ActionRowBuilder()
      .addComponents(
        new ButtonBuilder()
          .setCustomId('like')
          .setLabel('👍')
          .setStyle(ButtonStyle.Success),
        new ButtonBuilder()
          .setCustomId('dislike')
          .setLabel('👎')
          .setStyle(ButtonStyle.Danger)
      );

    await reply.edit({ components: [row] });

    // 处理按钮点击事件
    const filter = i => i.customId === 'like' || i.customId === 'dislike';
    const collector = reply.createMessageComponentCollector({ filter, time: 60000 });

    collector.on('collect', async i => {
      await i.deferUpdate();
      // 这里可以将反馈存入数据库或日志,用于后续优化
      console.log(`用户 ${message.author.tag} 对回复的反馈: ${i.customId}`);
    });
  } catch (error) {
    await message.reply('抱歉,暂时无法生成回复,请稍后再试。');
  }
});

client.login(process.env.DISCORD_BOT_TOKEN);

内容的提问来源于stack exchange,提问作者Edward Rieck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:27:17