首页 > 解决方案 > Discord.js 消息未定义

问题描述

我正在尝试制作我的第一个机器人,但由于某种原因,我收到了这个错误。我对此很陌生,所以请不要有毒<3

const Discord = require('discord.js');
const client = new Discord.Client();

client.once('ready', () => {
    console.log('Ready!');
});

client.login('token');
//reading
client.on('message', message => {
    console.log(message.content);
});
//youtube channel command
if (message.content === '!yt'&&'!youtube') {
    message.channel.send('yt channel');
}
//--------------------

错误

ReferenceError: message is not defined
    at Object.<anonymous> (C:\Users\NoVirusesAllowed\Desktop\Discord Bot\index.js:14:1)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)

    at internal/main/run_main_module.js:17:47 

标签: javascriptbotsdiscord

解决方案


message不是定义它的函数的一部分。因为该变量是在本地定义的,所以其他函数将无法访问它。

您可能希望将if语句移动到client.on()块内,因为这将在每条消息上执行。

使用您当前的代码,该if语句尝试在脚本开始时执行一次,并且不知道它指的是什么消息。

编辑:我还修改了if语句中的条件。以前,如果消息是且不为零,则条件将'!yt'成功'!youtube'。如果任一消息等于'!yt'or '!youtube',您可能希望条件成功,这可以使用 OR 运算符完成||

const Discord = require('discord.js');
const client = new Discord.Client();

client.once('ready', () => {
    console.log('Ready!');
});

client.login('token');
//reading
client.on('message', message => {
    console.log(message.content);

    //youtube channel command
    if (message.content == '!yt' || message.content == '!youtube') {
        message.channel.send('yt channel');
    }
});
//--------------------

推荐阅读