es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Discord JS TypeError: No se pueden leer propiedades indefinidas (leyendo ‘roles’)

Estoy creando un evento que verifica una base de datos de “monogodatabase” en un intervalo establecido para ver si hay claves expiradas y luego eliminar un rol de ese miembro.

const mongoose = require("mongoose")
const { Discord, GuildMemberRoleManager, GuildMember, Guild, Client, Message } = require("discord.js");
const { Database } = require("../../Structures/config.json");
const { count, key } = require("../../Structures/Schemas/keys");
const keys = require('../../Structures/Schemas/keys');

module.exports = {
    name: "ready",
    permission: "ADMINISTRATOR",
    /**
     * @param {Message} oldMessage
    * @param {GuildMemberRoleManager} 
    * @param {GuildMember} member
    * @param {Guild} guild
    * @param {Client} client
    */
    async execute(client, member, guild) {
        setInterval(() => {
            keys.count({ redeemed: true }, async function(err, results) {
                console.log(results)
                console.log("Número de claves:", results);
                const counts = results;
                const keyfind = await keys.findOne({ redeemed: true });
                for (let i = 0; i < counts; i++) {
                    keys.findOne({ redeemed: true }, 'redeemedAt expiryAt userid', async function(err, keys) {
                        if (err) return handleError(err);
                        const currentTime = new Date(Date.now())
                        const expirationDate = keys.expiryAt;
                        const timeout = currentTime - expirationDate;
                        const role = guild.roles.cache.get('924064535663480922');
                        const member = await guild.members.fetch(keys.userid);
                        console.log(timeout)
                        if (timeout < -1) {
                            await keys.then(keyfind.delete());
                            member.roles.remove(role);
                        }
                    })
                }
            });

        }, 3500);
    }
}

Sigo recibiendo este error cada vez que se ejecuta el evento: “TypeError: No se pueden leer las propiedades de indefinido (leyendo ‘roles’)”.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el parámetro guild está indefinido en la función execute. Asegúrate de pasar el parámetro guild correctamente al llamar a la función execute. Además, asegúrate de que el bot tenga los permisos necesarios para acceder al guild y a los roles de sus miembros.

Comments are closed.