client.on('ready', () => { arrayID = ['DISCORD_ID']; guild.members.fetch(arrayID[0]).then(member => { return guild.roles.fetch('ROLE_ID'); }).then(role => { return member.roles.add(role); }).catch((err) => { }); });Con ese código recibo el error: el gremio no está definido por eso lo probé con
client.guild.members.fetch(arrayID[0]).then(member => {Pero luego recibo el error: No se pueden leer las propiedades de undefined (leyendo 'miembros')
El problema es que no has definido la variable de tu guild , por eso recibiste el error "el gremio no está definido" . La otra es porque client no tiene una propiedad de guild .
No olvides que tu bot puede estar en diferentes guild . Puedes obtener estos gremios usando client.guilds . Devuelve un GuildManager y su cache devuelve una colección.
Si conoce la identificación de su gremio, puede obtener el gremio de esta manera:
let guild = client.guilds.cache.get('YOUR_GUILD_ID') Si su bot está solo en un solo gremio, puede tomar el first() en esta colección:
let guild = client.guilds.cache.first() Una vez que se define el guild , el resto de su código debería funcionar, aunque debe registrar el error en su bloque catch . Ah, y el member no estará disponible en su segundo then , por lo que también debe arreglar eso.
Podría usar async/await para hacerlo más legible:
client.on('ready', async () => { let arrayID = ['DISCORD_ID']; let roleID = '928938568624263178'; let guild = client.guilds.cache.get('GUILD_ID'); try { let member = await guild.members.fetch(arrayID[0]); let role = await guild.roles.fetch(roleID); if (!member) return console.log(`Can't find member with ID "${arrayID[0]}"`); if (!role) return console.log(`Can't find role with ID "${roleID}"`); member.roles.add(role); } catch (err) { console.log(err); } });