运行Discord Bot时出现'bot is not defined'错误,寻求技术帮助
问题原因及修复方案
核心问题
- 事件绑定错误:你把消息处理逻辑绑定到了
ready事件上,ready事件触发时传入的参数是Discord客户端实例,不是消息对象,导致message.author等调用报错,进而引发程序崩溃。 - 变量名混淆:报错提示
bot is not defined,但你的代码里用的是client,如果代码其他地方误写了bot而非client也会触发这个错误(当前提供的代码里未出现,但需注意变量名统一)。
修复后的完整代码
require('dotenv').config(); const { Client, IntentsBitField, EmbedBuilder } = require('discord.js'); const prefix = "!"; const client = new Client({ intents: [ IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMembers, IntentsBitField.Flags.GuildMessages, IntentsBitField.Flags.MessageContent, ], }); client.on('ready', (c) => { console.log(`✅ ${c.user.tag} is online.`); }); // 替换为messageCreate事件处理消息 client.on('messageCreate', (message) => { if (message.author.bot) { return; } let content = message.content; if (content === "!roll") { const exampleEmbed = new EmbedBuilder() .setColor(0x0099FF) .setTitle('Some title') .setAuthor({ name: 'Some name', iconURL: 'https://i.imgur.com/AfFp7pu.png' }) .setDescription('Some description here') .setThumbnail('https://i.imgur.com/AfFp7pu.png') .addFields( { name: 'Regular field title', value: 'Some value here' }, { name: '\u200B', value: '\u200B' }, { name: 'Inline field title', value: 'Some value here', inline: true }, { name: 'Inline field title', value: 'Some value here', inline: true }, ) .addFields({ name: 'Inline field title', value: 'Some value here', inline: true }) .setImage('https://i.imgur.com/AfFp7pu.png') .setTimestamp() .setFooter({ text: 'Some footer text here', iconURL: 'https://i.imgur.com/AfFp7pu.png' }); message.reply({ embeds: [exampleEmbed] }); } }); client.login(process.env.TOKEN);
关键修复点
- 将第二个
client.on('ready')改为client.on('messageCreate'),这是Discord.js中处理用户消息的正确事件。 - 确保代码中所有客户端实例的变量名统一为
client,避免因误写bot导致未定义错误。
内容的提问来源于stack exchange,提问作者elis
相关产品推荐
相关产品推荐

