Discourse AI no respeta el grupo "todos"

Parece que este es el mismo problema conocido que causa problemas con las plantillas.
everyone-group-unable-to-see-private-templates

En este caso, aparecen las opciones del bot de IA, pero el bot simplemente nunca responde.

1 me gusta

¡Gracias por buscar problemas anteriores! :sunglasses: :+1:

Creo que lo mismo aplica aquí:

No puedes dar acceso a los usuarios anónimos al chatbot, por lo que usar trust_level_0 es una solución efectiva para tu caso de uso. :slight_smile:

8 Me gusta

@Roman Al revisar el código en Discourse, creo que esto funciona ahora.

¿Es hora de cerrar esto y eliminar el código de compatibilidad hacia atrás?

Es un poco complicado. Originalmente agregué la opción everyone porque queríamos permitir que los usuarios anónimos vieran los gists. Cada característica tiene sus propias reglas, así que no creo que establecer los grupos permitidos de una Persona en eso haga que la característica esté disponible para todos.

Esto sigue siendo un problema. Si “Grupos permitidos para el bot de IA” está configurado en everyone, el bot no responde.

Creo que el error está aquí

return false if (SiteSetting.ai_bot_allowed_groups_map & post.user.group_ids).blank?

Si la configuración es everyone, esto devuelve false, ya que 0 no está en post.user.group_ids

El patrón correcto es !user.in_any_groups?(SiteSetting.ai_bot_allowed_groups_map)

que tiene un caso especial para everyone:

  def in_any_groups?(group_ids)
    group_ids.include?(Group::AUTO_GROUPS[:everyone]) ||
      (is_system_user? && (Group.auto_groups_between(:admins, :trust_level_4) & group_ids).any?) ||
      (group_ids & belonging_to_group_ids).any?
  end
3 Me gusta