RESUELTO: las categorías/canales se configuraron como privados, por lo que no se podían cambiar incluso con los permisos correctos. Mi solución fue decirle al usuario cuáles y agregar el rol con los permisos manualmente. Agregué un mensaje que decía que solo pueden otorgar permisos de administrador al bot y lo hará por ellos. Con suerte, esto ayuda a cualquiera que se encuentre con esto en el futuro.
Estoy tratando de cambiar los permisos de múltiples categorías y canales usando el siguiente código:
role = get(guild.roles, name="Fun") for channel in guild.channels: overwrites = channel.overwrites_for(role) overwrites.view_channel = False await channel.set_permissions(role, overwrite=overwrites)Obtuve el siguiente error:
await channel.set_permissions(role, overwrite=overwrites) discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing PermissionsFuncionará si le doy al bot el permiso de administrador. Sin embargo, no funcionará si le doy al bot todos los demás permisos, el bot está en la parte superior de los roles y tiene todos los permisos de categoría. ¿Qué me estoy perdiendo? Estoy usando Novus (bifurcación de discord.py, así que es más o menos lo mismo).
Editar: Le he preguntado a la gente en los servidores de discord de los desarrolladores de discord.py, Novus y discord y tampoco pueden ayudarme. Con la excepción del servidor de desarrolladores de Discord, simplemente no respondieron mi pregunta.
Edición 2: Pude hacerlo funcionar cuando agregué manualmente el rol del bot a la categoría y habilité view_channel. Sin embargo, esto no funcionará porque eso significa que el propietario del servidor tiene que hacerlo manualmente para cada categoría y canal, lo cual es realmente un inconveniente.
Así es simplemente como funciona Discord, si un canal es privado y el bot no tiene permisos de administrador o una función que tenga permisos para ver el canal, no puede verlo.
Puede crear una nueva categoría a la que el bot pueda acceder de esta manera:
role = await guild.create_role(name="Fun") category = await guild.create_category("category_name") await category.set_permissions(role, read_messages=True, send_messages=True, connect=True, speak=True) await category.set_permissions(ctx.guild.me, read_messages=True, send_messages=True, speak=True)