Crear un nuevo grupo que contenga a los usuarios del grupo de destino que tienen el nivel de confianza 3 es la única forma que se me ocurre para lograr esto. Discourse no tiene una regla Y que se pueda usar con los permisos de seguridad de categorías. Una pregunta similar ha surgido un par de veces sobre la creación de una regla de categoría que excluya a miembros de uno o más grupos.
Si el plugin Data Explorer está disponible en tu sitio, podrías usar una consulta de Data Explorer que devuelva una lista de todos los usuarios del grupo de destino que tienen el nivel de confianza 3. Si no estás tratando con un gran número de usuarios, deberías poder copiar/pegar los nombres de usuario que se devuelven de la consulta directamente en el formulario Añadir Usuarios de un grupo. Discourse parece manejar la adición de nombres de usuario que ya existen en un grupo en ese formulario, por lo que si ejecutas la consulta periódicamente, deberías poder seguir copiando los nombres de usuario que se devuelven en el formulario Añadir Usuarios del grupo. Ten en cuenta que no estoy seguro de cuál es el número máximo de nombres de usuario que se pueden pegar en el formulario. Acabo de probarlo con 80 usuarios y funciona sin problemas. Además, si intentas pegar una lista exacta de duplicados de usuarios en el formulario Añadir Usuarios, Discourse parece devolver un error. Sin embargo, el error se puede ignorar.
Aquí está la consulta con la que he probado esto. Necesitas proporcionar el nombre del grupo, por ejemplo ‘year_2’, antes de ejecutar la consulta.
--[params]
-- string :group_name
SELECT u.username
FROM group_users gu
JOIN groups g ON g.id = gu.group_id
JOIN users u ON u.id = gu.user_id
WHERE g.name = :group_name
AND u.trust_level = 3
Sería posible automatizar el proceso anterior ejecutando la consulta de Data Explorer a través de la API, y luego usando los resultados de la solicitud de la API para actualizar el grupo. Los detalles sobre eso están aquí: Ejecutar consultas de Data Explorer con la API de Discourse. Luego necesitarías actualizar los miembros del grupo a través de la API.
Sería interesante poder realizar algunos tipos de acciones directamente sobre los resultados de una consulta de Data Explorer. Por ejemplo, con una consulta que devuelva una lista de nombres de usuario, añadir todos los usuarios a un grupo sin tener que pasar por el paso de copiar y pegar.