1
votes

i'm new to programming and started making a discord bot by watching a few tutorials. I want the bot to DM the discord embed to the user who types "-buy" in a text channel. When running the code, the bot comes online and runs the "your bot name is online!" but no DM is sent. I would greatly appreciate any help. Thanks

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

const client = new Discord.Client();

const prefix = '-';

client.once('ready', () => {
    console.log('your bot name is online!');
});


client.on('message', message =>{
    if(message.author.client) return;

    const args = message.content.slice(prefix.length).trim().split(/ +/g);
    const command = args.shift().toLocaleLowerCase();
    if(command === 'buy'){
        const testEmbed = new Discord.MessageEmbed()
        .setColor(0x7f03fc)
        .setTitle('test embeddy')
        .setDescription('test description woo')
        .setFooter('this is the footer')
    try {
        message.author.send(testEmbed);
    }  catch {
        message.reply('Sorry I cannot message you! Check if your DMs are public!')
    }


    }


});

client.login('');

the token isn't the problem, i deleted it so i could upload here

1

1 Answers

0
votes

The message.author.client returns the bot client, and it doesn't return a boolean. So your bot is blocked from there. Try removing that code and write message.author.bot that returns a boolean if the message author is a bot user. It will work.