Pseu d'eau
Pseu d'eau

Reputation: 11

Error: Cannot read property send of undefined?

Hey, i have a problem when i want to send a message to a specific user id specified in args and then i have an error, i show you it:


The code:

client.on('message', message => {
            const messageArray = message.content.split(" ");
            let cmd = messageArray[0];
            let args = messageArray.slice(1);
            if (cmd == prefix + 'reserve'){
                if(message.author.id != owner) return;
                message.delete()
                const User = client.fetchUser(args);
                message.User.send("**Votre commande a été réservé avec succès par " + message.author.username + ", si votre commande a été reserver 2 fois ou vous n'avez même pas commander, merci de nous contacter en nous informant le nom du deuxième vendeur.**");
                message.author.send("***Succès !***\n**Vous avez bien reservé la commande " + args + " de " + User.username + ".**\n**Une fois que vous avez le stuff nécessaire faites ?ready " + iddumek + ".**");
                var reserver_embed = new Discord.RichEmbed()
                    .setAuthor("  BackGround | Market  ")
                    .setTimestamp(message.createdAt)
                        .setColor("RANDOM")
                        .addBlankField()
                        .addField("**Commande de " + message.author.username + "**", '**Articles: \n' + args + ' rubis.**\n**La commande a été reservé avec succès par ' + message.author.username + ' merci de ne pas la reservé sous peine de sanction.**')
                client.channels.get(`680899995016232970`).sendEmbed(reserver_embed);
                }       
                });

The error:

TypeError: Cannot read property 'send' of undefined
    at Client.<anonymous> (c:\Users\pc\Documents\Bots Discord\BackGround Market\index.js:79:30)
    at Client.emit (events.js:205:15)
    at MessageCreateHandler.handle (c:\Users\pc\Documents\Bots Discord\BackGround Market\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)
    at WebSocketPacketManager.handle (c:\Users\pc\Documents\Bots Discord\BackGround Market\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:105:65)
    at WebSocketConnection.onPacket (c:\Users\pc\Documents\Bots Discord\BackGround Market\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (c:\Users\pc\Documents\Bots Discord\BackGround Market\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17)
    at WebSocket.onMessage (c:\Users\pc\Documents\Bots Discord\BackGround Market\node_modules\discord.js\node_modules\ws\lib\event-target.js:120:16)
    at WebSocket.emit (events.js:200:13)
    at Receiver.receiverOnMessage (c:\Users\pc\Documents\Bots Discord\BackGround Market\node_modules\discord.js\node_modules\ws\lib\websocket.js:789:20)
    at Receiver.emit (events.js:200:13)
index.js:79

Am sorry for the english error, i'm french.
Thank's for all helps !

Upvotes: 0

Views: 446

Answers (1)

Tin Nguyen
Tin Nguyen

Reputation: 5330

https://discord.js.org/#/docs/main/stable/class/Message

message.User.send("...");
message.author.send("...");

See the documentation of discord.js. The message object has the attribute author but it does not have an attribute for User. This is why you are getting an undefined error.

You previously did

const User = client.fetchUser(args);

so you probably meant to write:

User.send("...");

https://discord.js.org/#/docs/main/stable/class/Client?scrollTo=fetchUser

fetchUser expects an id so you'll need to provide that id when summoning the bot via some chat command.

Upvotes: 1

Related Questions