Quería comprobar si un usuario tiene un rol o no, con un simple
let author = message.author.id let guild = await client.guilds.fetch("guild") let member = await guild.members.fetch(author) member.roles.cache.has("role") Sin embargo, a veces devuelve false a pesar de que le acabo de dar un rol a ese miembro. Y sigue siendo true después de que elimino su rol. Volverá a funcionar solo después de que reinicie el bot.
¿Se trata de un error o necesito volver a almacenar en caché el miembro como un todo? Si es así, ¿cómo haría para hacer esto para que sea rápido?
Parece un problema de caché al que te enfrentas...
Realmente no he desarrollado usando discord api, sin embargo, al leer su documentación, tengo la impresión de que debería usar:
await guild.members.fetch({ user: author/id, force: true });El indicador de fuerza especifica que no se use la memoria caché en la consulta; más aquí . Obviamente, al deshabilitar el caché, es posible que experimente una degradación del rendimiento.
Además, la documentación especifica el objeto message.member que podría estar haciendo esto por usted, ahorrándole una consulta o dos.