Search code examples
javascriptdiscord.js

Discord.js v14 Message Collector (Cannot define .id)


I'm having troubles my collector I'm doing, trying to fix the filter bit. Tried doing:

const filter = m => m.author.id === message.author.id

and

const filter = m => m.user.id === message.author.id

Code:

const { Message, Client, EmbedBuilder } = require('discord.js')

module.exports = {
    name: 'dm',
    description: 'DMs someone with a role or a user.',
    run: async (client, message, args) => {
        if(!message.member.roles.cache.has('insertroleid')) {
            const embed = new EmbedBuilder()
            .setColor('DarkRed')
            .setDescription('You cannot use this command yet as you aren\'t a Presidential Team member yet!')
            message.reply({ embeds: [ embed ] })
        }

        const filter = m => m.user.id === message.author.id

        const mcollector = message.channel.createMessageCollector({
            filter,
            time: 120000,
            max: 1,
            maxProcessed: 1,
            errors: ['time']
        })

        const startEmbed = new EmbedBuilder()
        .setColor(process.env.embed_color)
        .setDescription('Hello, please start proceeding pinging the role you want to send.')

        message.reply({ embeds: [ startEmbed ] })

        mcollector.on('collect', async mc1 => {
            mc1 = mc1.content

            console.log(mc1)
        })
    }
}

Error: node:events:505 throw er; // Unhandled 'error' event ^ TypeError: Cannot read properties of undefined (reading 'id')


Solution

  •  //collecting from a message command
     const msgFilter = m => m.author.id === message.author.id
     //collecting from a slash command
     const intFilter = m => m.author.id === interaction.user.id