#node.js #discord #discord.js
#node.js #Discord #discord.js
Вопрос:
этот следующий код раньше работал, но по какой-то причине он больше не работает, я понятия не имею, почему за этим кодом следует сообщение об ошибке
module.exports = {
name: 'stats',
description: "This list shows the stats of the lol players",
execute(message, args, Discord) {
const newEmbed = new Discord.MessageEmbed()
.setColor('#304281')
.setTitle('League of Legends Stats')
.setDescription('This is a list that shows you who has their stats coded into the bot, just copy and paste the command :)')
.addFields({name: 'X', value: 'Y'},)
.setImage('https://candid.technology/wp-content/uploads/2019/10/League-of-Legends-Wallpaper-5.jpg')
.setFooter('if the stats seem wrong just click on update :)');
message.channel.send(newEmbed)
}
}
(node:2540) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'MessageEmbed' of undefined
at Object.execute (C:UsersA_AlADesktopAegir2commandsstats.js:5:37)
at Client.<anonymous> (C:UsersA_AlADesktopAegir2main.js:138:42)
at Client.emit (events.js:315:20)
at MessageCreateAction.handle (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientactionsMessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:384:31)
at WebSocketShard.onPacket (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:301:10)
at WebSocket.onMessage (C:UsersA_AlADesktopAegir2node_moduleswslibevent-target.js:132:16)
at WebSocket.emit (events.js:315:20)
(node:2540) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
Комментарии:
1. Как вы вызываете
execute()
? Можете ли вы добавить его в свой вопрос?
Ответ №1:
Есть две причины, о которых я могу подумать, почему это может работать не так, как вы ожидали. Я предполагаю, что верно следующее:
- Код находится в отдельном файле, но функция execute вызывается в файле с именем «main.js «
- Предоставленный код является единственным кодом в файле
Discord не передается в функции должным образом
Когда вы вызываете функцию «выполнить» для события сообщения в main.js файл, скорее всего, вы передаете не все три переменные. Это приведет к тому, что Discord также не будет передан, поэтому в index.js файл, вот как должна выглядеть ваша функция выполнения
execute(message, args, Discord)
Это предоставит вашему коду надлежащие переменные для работы. Однако обратите внимание, что вам также потребуется обновить свой код в команде до того же самого, чтобы все переменные были переданы и получены правильно
Discord не определен
Судя по ошибке, я считаю, что это наиболее вероятная из двух моих причин. Я настоятельно рекомендую делать это, даже если это не ошибка, потому что это хорошая практика, если вы добавляете больше пакетов.
В моих предположениях я предполагаю, что вы не определяете Discord в верхней части кода. Следовательно, Discord не определен, и MessageEmbed не создается, потому что он не может получить пакет Discord. Добавьте это над modules.export
const { Discord } = require("discord.js");
Помните, как только вы это сделаете, вам не нужно переопределять клиента. Вы уже передали его в качестве аргумента в execute()
Комментарии:
1. Спасибо, чувак, это был диссонанс, который не был передан в функцию
2. Пожалуйста! Не забудьте поставить галочку, чтобы показать другим, что этот ответ вам помог