【读源码警告】论坛会员等级进度精确评估 & 如何保级白金

【update】有幸协助更新大佬(待修复)(Colab_Activities_Checker)【非官方,民科开发,仅用于预估用】论坛归档文件分析器 + 部分徽章进度追踪 统计工具中登录天数的计算,现已包括真正算入白金升级的天数。


【update】评论区指出此前已有类似的讨论,指北


tldr

  • 首先通过 (待修复)(Colab_Activities_Checker)【非官方,民科开发,仅用于预估用】论坛归档文件分析器 + 部分徽章进度追踪 得到用户基础数据。
    这之中仍缺失某些关键数据:

    1. 被举报的次数:通过查看系统私信获得 - 每次被举报都将收到系统私信。
    2. 帖子阅读数量:通过论坛自带汇总链接查看
  • 将数据对比以下标准:

    1. 当前账号未被封禁或禁言,且过去六个月内没有封禁或禁言记录
    2. 过去一百天内,有五十天登录并至少阅读一个回复
    3. 过去一百天内,回复了十个以上他人创建的帖子
    4. 过去一百天内,阅读了五百个以上帖子,和两万个以上回复
    5. 被举报的回复数量不超过五个,且被不同用户举报的数量也不超过五人
    6. 过去一百天内,送出三十次以上点赞,收到二十次以上点赞
    7. 过去一百天内,收到的点赞来自五个以上不同用户,且分布在七天及以上

正文

在许多已有的讨论中大家都非常关心怎么升到白金/如何保级。

相关帖子 - 包括会员等级判定,保级,“为什么我没有升级”

关于本论坛的会员等级体系
如何成为白金会员
白金会员还挺难保持的
论坛账户的统计信息多久更新一次呢
为何会员等级不变呢?努力了51天。。。不升白金也不升金

楼主对升级进度有一些不解,但对比官方文档未得到答案。通过调查楼主发现官方文档中的描述与代码实现有些出入。这篇帖子希望可以一站式回答:

  • 为什么我还没升白金
  • 怎么才能升回白金

无聊的读代码时间

相信大家都已经读过管理员贴出的关于会员等级的标准

代码实现:vs_button:文档:

  1. (最容易踩坑的点)文档未提及访问天数需至少阅读一个回复(这天的登录需要阅读了至少一个回复才会被计入50天当中):
一段无聊的代码
  def days_visited
    @user.user_visits.where("visited_at > ? and posts_read > 0", time_period.days.ago).count
  end
  1. 文档未提及点赞需来自五个不同用户
    要求:
两段无聊的代码
num_likes_received_users >= min_likes_received_users
  def min_likes_received_users
    (min_likes_received.to_f / 4.0).ceil
  end
  • min_likes_received = 20 : (20.to_f / 4.0).ceil5.0.ceil5
    因此点赞最少来自五个不同用户。
  1. 文档未提及点赞需分布在七天
    要求:
又是两段无聊的代码
num_likes_received_days >= min_likes_received_days
  def min_likes_received_days
    # Since min_likes_received / 3 can be greater than the number of days in time_period,
    # cap this result to be less than time_period.
    [(min_likes_received.to_f / 3.0).ceil, (0.75 * time_period.to_f).ceil].min
  end

易证 :yaoming: 代入最少需要20个赞和100天的滑动窗口可知点赞的分布最少为七天。

白金保级

白金保级比金卡会员升级要略微容易一些,因为系统给了一个相对宽限的乘数(0.9)。这里挖个坑,就不详细说了,如果观众感兴趣可以多聊聊。

怎么还有代码?
  def requirements_lost?
    return false if trust_level_locked
    return false if SiteSetting.default_trust_level > 2

    @user.suspended? || @user.silenced? || penalty_counts.total > 0 ||
      days_visited < min_days_visited * LOW_WATER_MARK ||
      num_topics_replied_to < min_topics_replied_to * LOW_WATER_MARK ||
      topics_viewed < min_topics_viewed * LOW_WATER_MARK ||
      posts_read < min_posts_read * LOW_WATER_MARK || num_flagged_posts > max_flagged_posts ||
      num_flagged_by_users > max_flagged_by_users ||
      topics_viewed_all_time < min_topics_viewed_all_time ||
      posts_read_all_time < min_posts_read_all_time ||
      num_likes_given < min_likes_given * LOW_WATER_MARK ||
      num_likes_received < min_likes_received * LOW_WATER_MARK ||
      num_likes_received_users < min_likes_received_users * LOW_WATER_MARK ||
      num_likes_received_days < min_likes_received_days * LOW_WATER_MARK
  end

论坛白金等级的会员刷新:

50 个赞

来猜这个贴多久会被关 :yaoming:

3 个赞

:yaoming: 不让说的吗。。。要不我自己关了吧

神贴留名

2 个赞

我们不知道管理员的红线在哪,是不是灵活的红线,所以也可以留着测试测试

与其被关,不如加到原帖里去,lz这么讲的很清晰

帮lz翻译一下保级,除了看帖和升级要求一致,其他要求都变为原本的90%

7 个赞

为了增强可读性将大部分代码隐藏。原版行文已尽可能使用中文。

太牛了zszs

1 个赞

你难道以为大家不知道怎么才能升白金吗?他们只是懒得发帖罢了,然后只能在这些贴子里装傻求赞

1 个赞

截图收藏了

1 个赞

:doge:小二也來學習一下。

感觉知道升级/保级的逻辑也挺好啊

1 个赞

一直不知道会员有什么用

看破不说破吧 :yaoming:

而且原帖已经提到,只有集中一天获得的赞是不够的。

楼主还是觉得按照代码实现的要求多看帖多回复,有助于成长为一个合格的泥潭用户。

比如爬爬这个楼大概就差不多了 :doge:

厉害厉害!泥潭真是卧虎藏龙

1 个赞

我在原帖里回过了,得出的结论和lz不能说很相似只能说一模一样 :yaoming:,不过原帖确实楼太高了不好找

9 个赞

LZ不得了 :troll:

1 个赞

你进admin退?表面上永不违规
:yaoming:

:troll:
所以我没白金是因为我很少给人点赞吗

1 个赞

ruby看上去和乱码一样,有perl的潜质

1 个赞