I think QoL tools for moderators need to become more of a Fediverse priority. This burns people out. Key moderators of communities quit and communities become abandoned.

Ideas :

  • Automatic removal option to remove posts and/or comments for specific keywords. This would be most useful for automatically removing posts and comments when people slur. Piefed already has a keyword filter for visibility. This could be expanded to community settings. Have it also fire-off a report to the moderators when someone triggers it.
  • Automatic URL removal. Allow communities to blacklist specific urls. Useful for politics or news communities that want to negate sources known for misinformation.
  • Automatic removal for repeat URL posting. Very useful for politics or news communities to prevent double-posting.
  • Make it so a community can set itself up to only accept text posts, video posts, or image posts. This should prevent tedious janitorial cleanup for communities that only allow links, or text posts (the most common two).
  • Post Delay Restrictions. Some communities, perhaps not many, might be interested in posting cooldowns for users. So you can only post 1 post every hour, or 2 posts every hour - or whatever the chosen limit is. This would help negate spammers and over-enthusiastic posters flooding a topical community.
  • Post Formatting Requirements. This one could be trickier and more effort than most of the others, but setting conditions for the formatting of new posts would be useful.

Now, not all communities would make use or have any need to make use of all of these - but many would to varying degrees - and it would help them.

I think going down this road is important to prevent moderators burning out over the drudgery of moderating communities.

  • Nutomic@lemmy.ml
    link
    fedilink
    English
    arrow-up
    2
    ·
    24 hours ago

    To get new posts and comments for all known communities you only need to make regular requests to /api/v3/post/list?limit=50&sort=New&type_=All and /api/v3/comment/list?limit=50&sort=New&type_=All. Its not necessary to make separate requests for each community. The default rate limit allows 180 read requests per minute so you can comfortably poll this every second (in practice every 30s or so should be enough). If you miss an item (ie post or comment id was skipped) just load the following page.

    The plugin system in 1.0 would be another option. It will still take some time until that is released, but there shouldnt be any reliability issues.

    Youre right that federation solves these problems, but instead you get another problem of writing all this federation code and making sure it is compatible with different platforms. Lemmy’s federation code has around 12k lines so that is a lot. It seems much simpler to use the API for Lemmy, Piefed etc and write abstractions for common functionality.

    Anyway this is my opinion. Its your project so in the end its your decision how to implement it.

    • asudox@lemmy.asudox.dev
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      14 hours ago

      Yep. I did use those endpoints with the ModeratorView (The bot doesn’t need posts or comments from communities it doesn’t moderate) on my first attempt. I went with the federation approach at last because of future scalability issues. Though that is probably an exaggeration. If the default rate limit is 180 read requests per minute, that would be more than enough, honestly. The scale at which the scalability issues I mentioned would appear at about more than 4500 comments/posts per minute. Frankly, I think we’ll never reach that in the near future. So actually the rate limiting issue is practically not an issue for the foreseeable future.

      The plugin system would work. The fetching problem would disappear.

      Though I don’t think the federation code would be huge. I am not trying to make it compatible with all platforms. For example I’ll write the required Lemmy ActivityPub structs to send moderation related activities and actors. The Group’s instance would handle distributing the activities, so even though this project might not federate with Piefed for example, it would still receive the activities the bot sends to the Group’s inbox through the instance’s software, Lemmy.

      If someone wanted to get the bot to work on another Ap platform that supports groups, they would have to write the necessary Ap actors, activities, and a bit of glue code, and that would be it… or at least that’s how I’m planning it.

      I guess I’ll try to work with the plugin system if I can’t achieve what I want and keep it simple. It would at least be a learning experience, if nothing else. Thank you for the info.

      • Nutomic@lemmy.ml
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        14 hours ago

        With 4500 posts per minute you will probably get a lot of other scaling issues too, like with your database or the processing of incoming and outgoing activities. In any case its a good way to learn how Activitypub works. Is the code open source? Dont see it on your codeberg.

        Using the plugin system you basically just need a way to get notified about each new post and comment, right? I expect that will be one of the major use cases for plugins. We will likely provide various official plugins, eg push notifications for Android and iOS. The same thing should also work for you.Version 1.0 will let you subscribe to communities to get notifications for all new posts and comments (code).

        • asudox@lemmy.asudox.dev
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          13 hours ago

          I haven’t released the source code yet. The private repo at the moment is very messy in general so I am just waiting until I get a somewhat working pre-alpha done with the design that I am still experimenting with finalized. There’s still a ton of work to be done since I just started 2 weeks ago.