繁体   English   中英

discord.js - 发送嵌入 - 类型错误:无法读取未定义的属性(读取“执行”)

[英]discord.js - Sending an Embed - TypeError: Cannot read properties of undefined (reading 'execute')

我正在把我的头骨砸在桌子上试图弄清楚这一点。 如果有人有任何帮助或建议,我会很高兴。 我目前只是试图推出一个非常简单的测试嵌入,但运气为 0。 我对 JS 很陌生,对 discord API 也很陌生。 任何愿意帮助我的专业人士将不胜感激!

编辑:输入“~stoplight”是我试图填充嵌入的操作。

这是主要的“bot.js”脚本

const Discord = require('discord.js');

const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES"] });

const prefix = '~';

const fs = require('fs');

client.commands = new Discord.Collection();

const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for(const file of commandFiles){
    const command = require(`./commands/${file}`);
    client.commands.set(command.name, command);
}

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

//these require a ~ prefix

client.on('messageCreate', messageCreate => {
    if(!messageCreate.content.startsWith(prefix) || messageCreate.author.bot) return;
    
    const args = messageCreate.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();
    
    if(command === 'ping'){
        client.commands.get('ping').execute(messageCreate, args);
    }
    
    else if(command === 'stoplight'){
        client.commands.get('stoplight').execute(messageCreate, args, Discord);
    }
}); 

这是我试图推出的超级简单的测试嵌入。 它是一个名为“stoplight.js”的单独文件

module.exports = {
    name: 'test name',
    description: 'test desc',
    
    execute(messageCreate, args, Discord) {
    
        const Embed = new Discord.MessageEmbed()
            .setColor('#0099ff')
            .setTitle('Test Title')
            .setDescription('Test desc.');
    
        channel.send(Embed);
    
    }
}

最后,这是我不断收到的错误......

C:\Users\CueQ\Desktop\Discord Bot\bot.js:34
                client.commands.get('stoplight').execute(messageCreate, args, Discord);
                                                ^

TypeError: Cannot read properties of undefined (reading 'execute')
    at Client.<anonymous> (C:\Users\CueQ\Desktop\Discord Bot\bot.js:34:35)
    at Client.emit (node:events:539:35)
    at MessageCreateAction.handle (C:\Users\CueQ\Desktop\Discord Bot\node_modules\discord.js\src\client\actions\MessageCreate.js:26:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\CueQ\Desktop\Discord Bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\CueQ\Desktop\Discord Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:351:31)
    at WebSocketShard.onPacket (C:\Users\CueQ\Desktop\Discord Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:\Users\CueQ\Desktop\Discord Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (C:\Users\CueQ\Desktop\Discord Bot\node_modules\discord.js\node_modules\ws\lib\event-target.js:199:18)
    at WebSocket.emit (node:events:527:28)
    at Receiver.receiverOnMessage (C:\Users\CueQ\Desktop\Discord Bot\node_modules\discord.js\node_modules\ws\lib\websocket.js:1160:20)

在服务器上键入“~stoplight”后出现错误。 "~ping" 很有效。 所以我很茫然......提前谢谢~

好的,这是一系列问题,但我到了那里。 感谢 Ewong 让我走上了正确的道路。

问题 1: command.name是一个测试名称。 把它换成了stoplight

问题 2:拼写错误的description 经典的

问题 3: channel.send(Embed); spotlight.js中是旧语法。 将其更改为messageCreate.channel.send({ embeds: [Embed] });

bot.js代码保持不变,新的stoplight.js代码如下所示。

module.exports = {
    name: 'stoplight',
    description: 'test desc',
    
    execute(messageCreate, args, Discord) {
    
        const Embed = new Discord.MessageEmbed()
            .setColor('#0099ff')
            .setTitle('Test Title')
            .setDescription('Test desc.');
    
        messageCreate.channel.send({ embeds: [Embed] });
    
    }
}

谢谢大家的帮助~

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM