Значки приглашения за приглашение самого себя

Это действительно системные бейджи, и их нельзя редактировать через интерфейс (хотя они видны). Эту строку нужно будет добавить через PR. :+1:

3 лайка

Не возражаешь, если я попробую сделать этот PR? Мне кажется, нужно просто изменить SQL в discourse/lib/badge_queries.rb, строки 156–167.

3 лайка

Здравствуйте. Через день после того, как мои бейджи были удалены, они внезапно вернулись. Кто-нибудь может решить эту проблему?

1 лайк

Они вернутся, так как запросы выполняются ежедневно, и вы всё ещё «соответствуете» критериям. :slight_smile: Нам пришлось бы удалять их вручную каждый день, пока баг не будет исправлен, что нереалистично.

Я проверил, и мы можем пометить это как pr-welcome :+1: (Вам нужно будет сделать всё три шага).

4 лайка

Понял, спасибо. Я должен быть в состоянии это сделать.

И я не вижу, зачем мне нужно выполнять пункт 3. Функция для ссылок-приглашений возвращает количество, если я правильно понял код функции.

3 лайка

Я не смотрел код, так что вы, возможно, правы. :slightly_smiling_face:

3 лайка
  def self.invite_badge(count, trust_level)
    <<~SQL
      SELECT u.id user_id, current_timestamp granted_at
      FROM users u
      WHERE u.id IN (
        SELECT invited_by_id
        FROM invites i
        JOIN invited_users iu ON iu.invite_id = i.id
        JOIN users u2 ON u2.id = iu.user_id
        WHERE i.deleted_at IS NULL AND u2.active AND u2.trust_level >= #{trust_level.to_i} AND u2.silenced_till IS NULL
        GROUP BY invited_by_id
        HAVING COUNT(*) >= #{count.to_i}
      ) AND u.active AND u.silenced_till IS NULL AND u.id > 0 AND
        (:backfill OR u.id IN (:user_ids) )
    SQL
  end

Вот оно. Похоже, это только первый случай. Просмотрел весь файл, и ничего другого, связанного с приглашениями, не нашёл.


Создал PR

5 лайков

Посмотрев на PR (и учтя, что PR — это не моя сильная сторона), складывается впечатление, что вы зафиксировали его только для версии Promoter, заменив #{count.to_i} на 1?

Мой пример выше был лишь концептом, и его нужно будет адаптировать под конкретные нужды. :+1:

(кстати, глядя на текст в этом onebox, я ‘JammyDodger’, а не ‘Jammy Dogger’… :slight_smile:)

8 лайков

Моя ошибка. Исправил ваше имя.

4 лайка

Спасибо за ваш вклад! Я принял ваш PR.

Также небольшое замечание: обычно мы требуем наличие тестов для изменений, но поскольку их не было, мы просто примем этот PR и добавим тесты позже.

Надеемся увидеть от вас ещё больше в будущем :hugs:

8 лайков

Эта тема была автоматически закрыта через 2 дня. Новые ответы больше не принимаются.