Discourse AI не учитывает группу "everyone"

Это всё ещё проблема. Если «Разрешённые группы для бота ИИ» установлено в everyone, бот не отвечает.

Я думаю, что ошибка находится здесь:

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

Если настройка равна everyone, то это возвращает false, так как 0 отсутствует в post.user.group_ids.

Правильный паттерн — !user.in_any_groups?(SiteSetting.ai_bot_allowed_groups_map),

который содержит специальный случай для 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 лайков