Ошибка: максимум тем в первый день, спустя 4 дня после первой темы

Сообщение об ошибке гласило:

Вы достигли максимального количества тем, которое новый пользователь может создать в первый день. Пожалуйста, подождите 2 часа перед повторной публикацией.

Похоже, это контролируется настройкой «Максимум тем в первый день» — изменение этого параметра устранило ошибку.

Проблема в том, что у пользователя уже есть 8 предыдущих тем, первая из которых была создана 4 дня назад. Поэтому, на мой взгляд, эта настройка не должна на него влиять, поскольку она предназначена только для 24-часового периода после первого поста пользователя. Аккаунт, с которого была сделана публикация, имеет уровень TL0.

Описание опции:

Максимальное количество тем, которое пользователь может создать в 24-часовой период после создания своего первого поста.

Я бы предположил, что эта настройка на самом деле означает «Максимум постов в день для пользователей TL0».

Стоит также проверить, наблюдается ли аналогичная ситуация с настройкой «Максимум ответов в первый день».

Да, код, похоже, проверяет, является ли пользователь TL0, а не то, находится ли он на сайте в первые 24 часа. Если это так, возможно, следует изменить сообщение, которое отображается пользователю. Однако базовые требования для получения уровня TL1 довольно низкие. Я считаю, что в большинстве случаев рассматривать пользователей TL0 как новых пользователей правильно.

1 лайк

@simon Да, я экспериментирую с настройкой сложности для пользователей, чтобы достичь уровня TL1 и выше.

Если функциональность этих настроек останется неизменной (и, предположительно, то же самое касается максимального количества ответов в первый день), я думаю, было бы хорошо переименовать их, чтобы они соответствовали другим настройкам ‘newuser’. Также стоит обновить сообщение для пользователей, как вы упоминали, и описания настроек.

Например:
max topics in first day → newuser max topics per day
max replies in first day → newuser max replies per day

Это всё ещё не так, как должно быть? Этот код кажется мне неправильным: проверяет ли он, что первый пост пользователя был создан более суток назад?

 def new_user_posting_on_first_day?
    !staff? && trust_level < TrustLevel[2] &&
      (
        trust_level == TrustLevel[0] || self.first_post_created_at.nil? ||
          self.first_post_created_at >= 24.hours.ago
      )
  end

Хорошо, это было немного сложно разобраться, но, думаю, это исправит проблему:

По сути, мы изменили смысл new_user_posting_on_first_day? несколько лет назад, так что он перестал соответствовать описанию и сообщениям об ошибках. Это возвращает старое поведение и не рассматривает пользователей TL0 как новых пользователей постоянно для целей этой проверки.

3 лайка