{"id":21877346,"url":"https://github.com/nodebb-community/nodebb-plugin-reputation-rules","last_synced_at":"2025-04-15T02:43:46.236Z","repository":{"id":25771043,"uuid":"29209311","full_name":"NodeBB-Community/nodebb-plugin-reputation-rules","owner":"NodeBB-Community","description":"reputation rules to prevent abuse and make it more reliable","archived":false,"fork":false,"pushed_at":"2025-02-19T13:00:54.000Z","size":394,"stargazers_count":8,"open_issues_count":0,"forks_count":9,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-11T06:07:33.710Z","etag":null,"topics":["nodebb"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NodeBB-Community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-01-13T20:24:36.000Z","updated_at":"2025-02-19T13:00:42.000Z","dependencies_parsed_at":"2023-07-16T05:36:42.762Z","dependency_job_id":null,"html_url":"https://github.com/NodeBB-Community/nodebb-plugin-reputation-rules","commit_stats":null,"previous_names":["nodebb-community/nodebb-plugin-reputation-rules","exo-do/nodebb-plugin-reputation-rules"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NodeBB-Community%2Fnodebb-plugin-reputation-rules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NodeBB-Community%2Fnodebb-plugin-reputation-rules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NodeBB-Community%2Fnodebb-plugin-reputation-rules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NodeBB-Community%2Fnodebb-plugin-reputation-rules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NodeBB-Community","download_url":"https://codeload.github.com/NodeBB-Community/nodebb-plugin-reputation-rules/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351382,"owners_count":21089270,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nodebb"],"created_at":"2024-11-28T08:08:58.206Z","updated_at":"2025-04-15T02:43:46.219Z","avatar_url":"https://github.com/NodeBB-Community.png","language":"JavaScript","readme":"![](https://packages.nodebb.org/api/v1/plugins/nodebb-plugin-reputation-rules/compatibility.png)\n[![npm version](https://badge.fury.io/js/nodebb-plugin-reputation-rules.svg?nocache=1)](https://badge.fury.io/js/nodebb-plugin-reputation-rules)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/f8c657b57e2d4664b91b9431b1138acb)](https://www.codacy.com/gh/exo-do/nodebb-plugin-reputation-rules/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=exo-do/nodebb-plugin-reputation-rules\u0026amp;utm_campaign=Badge_Grade)\n\n# Reputation Rules Plugin for NodeBB\n\n\u003e Rules to prevent abuse of the reputation system and reward most valuable users.\n\n![Screenshot](https://raw.githubusercontent.com/exo-do/nodebb-plugin-reputation-rules/master/reputation-rules-acp.png)\n\n## Rules\n\n### Rule #1\n**Upvoting** In order to upvote, the user must have  \n- `{MIN_POSTS_TO_UPVOTE}` posts or more\n- at least `{MIN_DAYS_TO_UPVOTE}` days since registration\n\n### Rule #2\n**Downvoting** In order to downvote, the user must have  \n- `{MIN_POSTS_TO_DOWNVOTE}` posts or more\n- at least `{MIN_DAYS_TO_DOWNVOTE}` since registration\n- `{MIN_REPUTATION_TO_DOWNVOTE}` reputation or more\n\n### Rule #3\nDownvoting costs `{DOWNVOTE_PENALIZATION}` reputation (user who votes loses some reputation)\n\n### Rule #4\nOne user can't vote (up or down) more than `X` times a day, being `X = reputation/10`. With a minimum of 5 and a max of 50\n\n### Rule #4.1\nOne user can't downvote more than 5 times a day. Zero to disable this maximum\n\n### Rule #5\nReputation can be disabled in certain subforums\n\n### Rule #6\nA user cannot vote the same person twice in a month\n\n### Rule #7\nA user cannot vote more than 5 messages in the same thread\n\n### Rule #8\nUpvotes give extra reputation depending on the user who is voting:  \n- extra reputation = `floor(votersReputation * 5%)` (you can change this percentage in the ACP)\n\nDownvotes decrease extra reputation depending on the user who is voting:  \n- extra reputation = `floor(votersReputation * 5%)` (you can change this percentage in the ACP)\n\n### Rule #9\nUndoing votes:  \n- undoing an upvote should remove extra reputation awarded when upvote was given (extra rep should not be recalculated)\n- undoing a downvote should remove penalization to voter and give the extra reputation the author lost when he got the downvote\n\n### Rule #10\nUpvotes and downvotes should have a maximum weight, configurable. So that rule **#8** doesn't make vote points tend to infinity.\n\n### Rule #11\nOptional: you can limit upvotes and downvotes to recent posts. In other words, if a message is too old, users won't be able to vote it.\nYou can configure what \"too old\" means for you, for example 30 days, 90 days, or 0 if you want to disable this feature and allow votes in old posts.  \n**Note** unvotes are always allowed.\n\n## Changelog\n\nv1.2.3\n\n- Added some tests and coverage\n- Added more information to error messages when voting\n\nv1.2.2\n\n- Big refactor mainly to use async/await instead of callbacks\n\nv1.2.1\n\n- Fix typos on \"weigh\"\n- Add a section for Rule 4 on the settings panel. It is not configurable but it is a rule that is being applied\n- Added explanations for most of the settings so they are easier to understand\n\nv1.2.0\n\n- Updated compatibility to 1.18.2\n- Removed the \"Reload\" button in the ACP as this is no longer needed\n- Added debug logs to track down any errors\n- Fix: vote max weight was being used as a min, instead of a max\n \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodebb-community%2Fnodebb-plugin-reputation-rules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodebb-community%2Fnodebb-plugin-reputation-rules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodebb-community%2Fnodebb-plugin-reputation-rules/lists"}