How to achieve the campaigner badge

AI-generated summary

The discussion revolves around the requirements for achieving the “Campaigner” badge on Discourse forums. Initially, the badge required inviting 3 members (defined as users with trust level 2) to join the forum. However, some users, such as watchmanmonitor and codinghorror, felt that this was too difficult to achieve.

Sam clarified the definition of a member and provided a SQL query to illustrate how the badge is awarded. However, watchmanmonitor pointed out that this definition may not be suitable for all forums, particularly those where members cannot invite other members.

After some discussion, sam agreed to lower the requirement to trust level 1, making it easier for users to achieve the badge. The change was implemented in a GitHub commit. Additionally, riking suggested changing the text for the “Champion” badge to indicate that it requires inviting a certain number of active members with trust level 2.

I’ve got 4 people invited here on meta

and 8 people on my hosted discourse (/users/allen/invited)

and so I would think I’d have this badge (as would more than just @sam

https://meta.discourse.org/badges/26/campaigner

Would someone check it out?

Yeah that does seem like a bug @sam.

The definition is 3 members, not 3 users

They got to be tl1

On my hosted site, I have invited 11 members and they are all TL1

What’s the difference between members & users?

Sorry I meant TL2

    SELECT u.id user_id, current_timestamp granted_at
    FROM users u
    WHERE u.id IN (
      SELECT invited_by_id
      FROM invites i
      JOIN users u2 ON u2.id = i.user_id
      WHERE i.deleted_at IS NULL AND u2.active AND u2.trust_level >= 2 AND not u2.blocked
      GROUP BY invited_by_id
      HAVING COUNT(*) > 3
    ) AND u.active AND NOT u.blocked AND u.id > 0 AND
      (:backfill OR u.id IN (:user_ids) )

Its meant to be a reasonably hard to get badge

https://meta.discourse.org/t/what-do-user-trust-levels-do/4924/5?u=sam

Member is defined as TL2 throughout Discourse.

I guess that’s fine for meta, but it means that badge won’t work for my forums, where we don’t let members invite members.

In that case, you should disable the badge.

I think this is far too hard to get. This reads more like the gold level criteria.

I can bump it down to tl1 if you wish

Yeah that would be better, we want to encourage invites. Gold level of this can use TL2.

Done

https://github.com/discourse/discourse/commit/1db92e6027837f6a6db1dcffc281f4af97391f86

Change the text for “Champion” to be “Invited {n} active members” to indicate it’s stricter than the previous level. (It still means TL2, and it’s kinda weird terminology-wise, but whatever. Anyone have a better idea?)