Pensé que este código estaba funcionando, pero ahora parece haberse detenido. Intenté darle al bot más permisos (por ejemplo, administrador), pero aún no tuve suerte. No hay ningún error y realmente no puedo decir por qué esto no funcionará.
Básicamente, estoy tratando de leer los permisos en el rol de todos y asignarlos explícitamente a mi nuevo role_object. (En última instancia, para eliminar los permisos del rol de todos).
A los efectos de la prueba @everyone solo tiene permiso para expulsar miembros (0b10) y el nuevo rol no tiene permisos (0b0).
Espero ver:
2n Permissions { bitfield: 0n } Permissions { bitfield: 2n }Pero yo veo:
2n Permissions { bitfield: 0n } Permissions { bitfield: 0n }Cuando corro:
const role_object = await interaction.guild.roles.fetch(verify_role); const normal_perms = interaction.guild.roles.everyone.permissions; console.log(normal_perms.bitfield); console.log(role_object.permissions); await role_object.permissions.add(normal_perms.bitfield); console.log(role_object.permissions);¡Gracias por cualquier ayuda!
Bueno, en primer lugar, la propiedad Role#permissions es de solo lectura según los documentos . Llamar a permissions.add() en realidad no modifica el contenido del objeto de permisos en absoluto, como ha visto. Pero, de hecho, tampoco consulta la API para modificar los permisos del rol, por lo que incluso si estuviera modificando el contenido del objeto de permisos, aún no establecería los permisos del rol. Estás usando el método equivocado. Lo que estás buscando es Role#setPermissions() . Esto puede aceptar el campo de bits BigInt como argumento, lo que le permite configurar fácilmente los permisos del rol. Aquí hay un ejemplo, basado en el mismo código que proporcionó:
const role_object = await interaction.guild.roles.fetch(verify_role); const normal_perms = interaction.guild.roles.everyone.permissions; console.log(normal_perms.bitfield); console.log(role_object.permissions); await role_object.setPermissions(normal_perms.bitfield); console.log(role_object.permissions);Y con eso, tus expectativas se hacen realidad. Probé este código con mi propio bot y gremio, y este fue mi resultado (tenga en cuenta que mi rol de todos tiene permisos diferentes a los suyos, de ahí el valor diferente del campo de bits):
969693056576n Permissions { bitfield: 0n } Permissions { bitfield: 969693056576n }