[英]Discord.js - TypeError: Cannot read properties of undefined (reading 'set')
[英]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.