首页 > 解决方案 > Discord 欢迎消息:无法读取未定义的属性“MessageEmbed”

问题描述

我正在尝试嵌入基本的欢迎信息。这是我main.js减去登录令牌:

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

const prefix = 'm.';
const fs = require('fs');

client.commands = new Discord.Collection();
client.events = new Discord.Collection();

const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
    const event = require(`./events/${file}`);
    if (event.once) {
        client.once(event.name, (...args) => event.execute(...args));
    } else {
        client.on(event.name, (...args) => event.execute(...args));
    }
}

这是welcome.js减去 的定义channelId

module.exports = {
    name: 'guildMemberAdd', 
    execute(member, Discord) {

        console.log('login');

        const message = `Welcome <@${member.id}> !`;
        const channel = member.guild.channels.cache.get(channelId);

        const joinEmbed = new Discord.MessageEmbed()
            .setTitle(`New member!`)
            .setDescription(message)
            .setColor("#fab9c7");
        
        channel.send({ joinEmbed });
     },
};

这是完整的错误消息:

        const joinEmbed = new Discord.MessageEmbed()
                                      ^

TypeError: Cannot read property 'MessageEmbed' of undefined
    at Object.execute (C:\Users\Al\Desktop\MaikaBot\events\welcome.js:11:39)
    at Client.<anonymous> (C:\Users\Al\Desktop\MaikaBot\main.js:17:44)
    at Client.emit (events.js:400:28)
    at Object.module.exports [as GUILD_MEMBER_ADD] (C:\Users\Al\Desktop\MaikaBot\node_modules\discord.js\src\client\websocket\handlers\GUILD_MEMBER_ADD.js:16:14)
    at WebSocketManager.handlePacket (C:\Users\Al\Desktop\MaikaBot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:\Users\Al\Desktop\MaikaBot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:\Users\Al\Desktop\MaikaBot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (C:\Users\Al\Desktop\MaikaBot\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:400:28)
    at Receiver.receiverOnMessage (C:\Users\Al\Desktop\MaikaBot\node_modules\ws\lib\websocket.js:970:20)

抱歉,如果这真的很基本,我对 javascript 还不是很满意。我似乎无法理解模块语法。

标签: javascriptdiscorddiscord.js

解决方案


Discord在您的模块中未定义。这是因为guildMemberAdd事件的回调函数只有一个参数,即GuildMember.

只需在你的模块中引入 discord.js,或者在调用时传入 Discordexecute


推荐阅读