const { Client, Intents } = require("discord.js"); const client = new Client({ intents: ["DIRECT_MESSAGES", "GUILDS", "GUILD_MEMBERS"], presence: { status: "online", activities: [{ name: "markets", type: "WATCHING" }] }, }); client.on('ready', () => { console.log(`Launched as a bot: ${client.user.tag}!`); }); client.on('guildMemberAdd', member => { function roleAdd() { member.roles.add(member.guild.roles.cache.get(process.env.SERVER_ROLE_ID)); } roleAdd(); }); client.login(process.env.DJS_TOKEN); Chicos, escribí este código pero no funciona. No estoy recibiendo ningún error. Quiero que agregue un rol cada vez que un usuario se una a mi servidor. el estado del bot está funcionando. Creo que el problema está en la parte de guildMemberAdd .
No estoy muy seguro de por qué está utilizando el enfoque de funciones anidadas para esto. Si desea que el evento llame a la función, mueva la función fuera del evento y luego cree GuildMember en un parámetro.
O descarte el evento por completo y deje el método simple #<GuildMemberRoleManager>.add solo.
Sugiero lo último ya que asumo que la declaración de la función anidada no funcionará.
Si desea utilizar la función de agregar automáticamente para su servidor, pruebe el método más fácil para agregar la función, de la misma manera que le da la función a un miembro.
Cuando asigna un rol a un miembro específico, debe verse así:
const role = message.guild.roles.cache.find(role => role.id === process.env.SERVER_ROLE_ID) const target = message.mentions.members.first() || await message.guild.members.cache.get(args[0]) Si un bot otorga un rol higher than the bot or equal to bot . Obtendrá un error como Permisos faltantes . Para evitar esto, debe colocar un código para devolverlo.
if(!target.moderatable) return message.reply("I can't mute this person!")Este comando es de la misma manera para el rol de asignación automática, solo se agregaron/editaron/eliminaron unas pocas líneas de código.
client.on('guildMemberAdd', member => { function roleAdd() { member.roles.add(member.guild.roles.cache.get(process.env.SERVER_ROLE_ID)); } roleAdd(); }); - function roleAdd() {} + let role = member.guild.roles.cache.find(role => role.id == process.env.SERVER_ROLE_ID) + member.roles.add(role).catch() La línea .catch() es para evitar que se produzca un error y apagar el bot.
client.on('guildMemberAdd', member => { let role = member.guild.roles.cache.find(role => role.id == process.env.SERVER_ROLE_ID) member.roles.add(role).catch() });