|
I'm the sole active moderator of r/electricvehicles, and you wouldn't believe the amount of self-promotion spam that I have to deal with on that sub. It's gotten to the point that I've written a custom Python app to use the Reddit API to pull all of the analytics on any new post and present it to me in a digested form: How old is the account? How much organic-looking activity has the user done across other subreddits? What is the actual content? Has the user posted the same URL to multiple subreddits? Has the user's activity received user reports? Fortunately I have some faithfully diligent reporters on my sub who will flag newly posted suspected spam in a matter of minutes. If the post doesn't pass my sniff test, my script will remove the post, mute the user, and permanently ban the user with a single keystroke -- do not pass Go, do not collect $200. I can't just rely on user reports alone because a few of the members of the community are overzealous about what they'll report. I need a variety of metrics to make the call, and it's much easier to use the Reddit API to collect, process, and report those metrics than to try to click around in Reddit's horrible moderation UI to get the information I need to make a reasonable decision. Confession time: I started writing the script about 5 days ago, and since I'm waiting to start a new job, I've actually made this script into a bit of a hobby to kill the time. By now it's morphed into a multi-threaded Mutt-like Reddit moderation tool, where it displays all mod queue content via a curses interface that I navigate with VIM key bindings, and keystrokes issue commands onto an asynchronous queue that another thread consumes and acts upon via the PRAW package. For example, the keystroke to approve a submission will immediately delete the post from the curses view because I love wicked-fast and responsive UIs, but the deletion on the backend could take another couple of seconds, especially if I'm rapid-firing 5 or 6 approvals in a row, and I just let that happen on the queue. Maybe if I refactor so that Python experts' eyeballs won't bleed when they see my code (e.g., I'm manually grabbing and releasing locks on stuff that's shared between the curses interface code and the async queue code rather than using more elegant synchronization capabilities in Python) I might consider releasing some source. |
I emailed the mod for clarification as to what line I crossed because it seemed arbitrary. She never replied.
So be careful with your metrics. What happened to me was definitely not cool. And, I quit my paid advertising there to boot.