• Scrubbles@poptalk.scrubbles.tech
    link
    fedilink
    English
    arrow-up
    5
    ·
    2 days ago

    I’m having issues where people on All downvote the shit out of our posts, but subscribers upvote. So everything has negative votes, but my subscribers aren’t getting the community they want. Anyone else see this or have ideas?

    • Blaze (he/him)@feddit.orgOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      2 days ago

      If people downvote all content without contributing at all (and I insist all content, not just one or two downvotes), I would consider banning them.

      If they comment or upvote, that’s a different story.

      • threelonmusketeers@sh.itjust.worksM
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        1 day ago

        What is the procedure for banning a user if their only interactions with a community are downvotes, and they never post or comment? The default Lemmy interface doesn’t make this easy…

      • Scrubbles@poptalk.scrubbles.tech
        link
        fedilink
        English
        arrow-up
        3
        ·
        2 days ago

        Yeah I have, it’s just a lot of banning - and I know I have a very very niche thing, I just wish there was a way to prevent voting unless you explicitely join the community

        • jetA
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 day ago

          Similar problem, automating the identification of bad actors helps a lot.

            • jetA
              link
              fedilink
              English
              arrow-up
              3
              ·
              1 day ago

              Scrubbles @poptalk.scrubbles.tech

              I used the api to collect all the votes on posts and comments, then I flag anyone who crosses a threshold

              If you have your own instance you could do it with a sql query instead.

              • Scrubbles@poptalk.scrubbles.tech
                link
                fedilink
                English
                arrow-up
                3
                ·
                1 day ago

                I do have my own instance and have done it with SQL, automated would be a bit nicer. If you have any source code you’ve written that you wouldn’t mind sharing it would be a helpful jumping off point. I’d probably need to tweak it but I wouldn’t have to start from scratch

                • Admiral Patrick@dubvee.org
                  link
                  fedilink
                  English
                  arrow-up
                  2
                  ·
                  edit-2
                  1 day ago

                  The only thing I have that I’d not be mortified to share (only mildly embarrassed) is a very heavy, probably quite inefficient SQL script to grab the vote aggregates for a community grouped by actor id.

                  Input: Local Community ID

                  Output:

                  • Actor ID
                  • Publish/create date of the actor
                  • Number of post upvotes given in the community
                  • Number of post downvotes given in the community
                  • Number of comment upvotes given in the community
                  • Number of comment downvotes given in the community
                  • Number of posts in the community
                  • Number of comments in the community

                  If you want the SQL, send me a DM or reply and I can DM it to you. For the action / scoring logic, you’ll probably be better off writing your own since my scripts are a bit of a mess. The basic flow, though, is:

                  The output from the SQL is fed into other scripts which compute a “participation ratio” for each given actor id. That’s just a fancy way of saying if they have no/few posts/comments in the community, give out X downvotes for every upvote given (if any), the number of interactions is above a minimum threshold, and their account is older than a minimum defined number of days, it’ll add those actor_ids to a queue file.

                  The thresholds are quite generous, though they can be tightened if needed. One thing to note is that downvotes received in the community is not factored in; just the number of submissions to the community (if any).

                  The queue file is then processed to ban those users from that community with a preset reason.

                  That runs via cron about once a day on a list of community IDs in a config file. I usually check the modlog every morning to review any bans that happen overnight (if any). Previously, I would manually review and issue any bans by hand using the list of actor IDs it generated (which has since became the queue file).

                  The scripts are a bunch of Bash scripts that I’ve put together over a long period of time for various purposes, and many are daisy-chained together. I’ve been meaning to re-write it in Python now that I have a better idea of what I want it to do, but I just haven’t gotten around to it yet.

                  I will say that the script doesn’t have to take action on a per-community basis that often. Most of the bans issued are to accounts that just downvote everything (which are detected by another, similar script). When those “mass downvote” accounts are banned, they’re also banned from each local community (I don’t enforce that to any communities I mod elsewhere).

                • jetA
                  link
                  fedilink
                  English
                  arrow-up
                  2
                  ·
                  1 day ago

                  @ptz@dubvee.org

                  PTZ has mentioned he might have a SQL based solution

                  I just use the api scripts now, which are really really slow.