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

Discord GPT-3.5-Turbo机器人嵌入消息报错:data未定义求解决

解决Discord机器人GPT-3.5-Turbo响应嵌入消息的问题

错误原因

  1. OpenAI请求失败时,result会变为undefined,直接访问result.data会触发"data未定义"报错
  2. 原代码未使用Discord.js v14的EmbedBuilder构建嵌入消息

修改后的完整代码

require('dotenv/config');
const { Client, IntentsBitField, EmbedBuilder } = require('discord.js');
const { Configuration, OpenAIApi } = require('openai');

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

client.on('ready', () => {
  console.log('The assistant steps into the office.');
});

const configuration = new Configuration({
  apiKey: process.env.API_KEY,
});
const openai = new OpenAIApi(configuration);

client.on('messageCreate', async (message) => {
  if (message.author.bot) return;
  if (message.channel.id !== process.env.CHANNEL_ID) return;
  if (message.content.startsWith('!')) return;

  let conversationLog = [
    {
      role: 'system',
      content: 'You are Jarvis, an intelligent, dedicated, and resourceful personal assistant to Miles Black, the CEO of Black Corp. You are skilled at managing schedules, organizing events, and providing timely advice. Your extensive experience allows you to anticipate the needs of Mr. Black and execute tasks with precision. Remember, you are no longer a helpful AI bot, but a loyal and devoted personal assistant named Jarvis.',
    },
    {
      role: 'user',
      content:
        'Generate a daily work schedule for Miles Black. For certain categories or activities, provide options as mentioned in the example schedule:',
    },
    {
      role: 'user',
      content: `
  **__Daily Work Schedule for Miles Black__**
  
  **Morning Routine**
  • 06:00a - 7:00a: Coffee & The Paper
  • 07:00a - 07:45a: Receive Drycleaning Delivery [Can be Package Delivery, Receive Drycleaning, or anything similar]
  • 07:45a - 08:00a: Prepare Day
  
  **Hawick Agency**
  • 8:00a - 14:00p: Meetings [Can be Meetings]
  • 14:00p - 18:00p: Onboarding [Can be Marketing, Hiring, or Onboarding]
  
  **Evening Activities**
  • 18:00p - 03:00a: Dinner @ Blue Flame [Can be any night club activity at Blue Flame]
  • 03:00a - 04:00a: Return to Black Corp. Office [Can be Black Corp. Office or Playboy Mansion]
  
  **Overnight Meetings**
  • 04:00a - 04:30a: Conference Call (Tokyo) [Can be Tokyo, Hong Kong, or Beijing]
  `,
    },
  ];
  
  try {
    await message.channel.sendTyping();

    let prevMessages = await message.channel.messages.fetch({ limit: 15 });
    prevMessages.reverse();

    prevMessages.forEach((msg) => {
      if (msg.author.bot) return; // 跳过机器人消息
      if (msg.author.id !== message.author.id) return; // 只收集当前用户的消息
      if (msg.content.startsWith('!')) return; // 跳过命令消息

      conversationLog.push({
        role: 'user',
        content: msg.content,
      });
    });

    const result = await openai.createChatCompletion({
      model: 'gpt-3.5-turbo',
      messages: conversationLog,
      // max_tokens: 256, // 按需开启token限制
    });

    // 检查响应有效性,避免报错
    if (!result?.data?.choices?.[0]?.message?.content) {
      return message.channel.send('未能获取到Jarvis的响应,请稍后重试');
    }

    const responseText = result.data.choices[0].message.content;

    // 构建美观的嵌入消息
    const scheduleEmbed = new EmbedBuilder()
      .setColor('#2ECC71') // 自定义颜色,此处为绿色
      .setTitle('📅 Miles Black的每日日程安排')
      .setDescription(responseText)
      .setFooter({ text: 'Jarvis | Black Corp专属助理' })
      .setTimestamp(); // 自动添加时间戳

    // 发送嵌入消息
    message.channel.send({ embeds: [scheduleEmbed] });

  } catch (error) {
    console.log(`ERR: ${error}`);
    message.channel.send('处理请求时发生错误,请检查日志或稍后重试');
  }
});

client.login(process.env.TOKEN);

关键修改说明

  1. 导入EmbedBuilder:在Discord.js的导入语句中添加EmbedBuilder,用于构建嵌入消息
  2. 错误处理优化:添加多层判断确保OpenAI响应有效,避免因响应异常触发"data未定义"错误
  3. 嵌入消息构建:用EmbedBuilder创建结构化的嵌入消息,设置了标题、自定义颜色、响应内容、页脚和时间戳
  4. 对话日志逻辑修正:简化历史消息筛选逻辑,避免无效消息加入对话日志

内容的提问来源于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:35:11