Discourse AI ne respecte pas le groupe "tout le monde"

Il semble qu’il s’agisse du même problème connu qui cause des problèmes avec les modèles.
everyone-group-unable-to-see-private-templates

Dans ce cas, les options de l’ai-bot apparaissent, mais le bot ne répond tout simplement jamais.

2 « J'aime »

Merci d’avoir recherché les problèmes précédents ! :sunglasses: :+1:

Je pense que la même chose s’applique ici :

Vous ne pouvez pas donner accès aux utilisateurs anonymes au chatbot, donc utiliser trust_level_0 est une solution efficace pour votre cas d’utilisation. :slight_smile:

8 « J'aime »

@Roman en parcourant le code dans Discourse, je pense que cela fonctionne maintenant.

Est-il temps de clore cela et de supprimer le code de rétrocompatibilité ?

C’est un peu délicat. J’ai initialement ajouté l’option everyone parce que nous voulions permettre aux utilisateurs anonymes de voir les gists. Chaque fonctionnalité a ses propres règles, donc je ne pense pas que définir les groupes autorisés d’une Persona sur cette option rendra la fonctionnalité disponible pour tout le monde.

Ceci est toujours un problème. Si « Groupes autorisés pour le robot IA » est défini sur everyone, le robot ne répond pas.

Je pense que le bogue se situe ici

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

Si le paramètre est everyone, cela renvoie false, car 0 ne fait pas partie de post.user.group_ids.

Le modèle correct est !user.in_any_groups?(SiteSetting.ai_bot_allowed_groups_map)

ce qui a un cas spécial pour 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
5 « J'aime »