PIBot (or PersonalInformationBot) is a handy reddit bot written in Python using Python's Reddit API Wrapper (PRAW). PIBot searches through a subreddit, whether that may be 'all' or a specific subreddit, and is able to find users sharing personal email addresses, as well as non 1-800 phone numbers.
In order to find emails and phone numbers, this program uses Regular Expressions to identify certain formats of phone numbers and popular email domains. As a result, the bot can detect multiple national phone number formats (albiet not all).
- (Done) Detect Emails using popular domains (gmail, hotmail, aol, yahoo, etc)
- (Done)Make sure it doesnt detect private email domains
- (Done) Match, then check if the domain list contains the domain of the email
- (Done) Use a list of popular domain names to avoid flagging private emails
- (Done) Use regexp and search for multiple formats of telephone number.
- (Done) FIND ONLY NON 1-800 NUMBERS!
- (Development) Report posts
- If it detects, give 5 minutes grace period before reporting,
check if post still is still flagged/exists before report.
- Comment.report(reason)
- If it detects, give 5 minutes grace period before reporting,
check if post still is still flagged/exists before report.
- (Development) Report, filter and footer!
- Make a footer for the bot, including an opt-out function
- Filter to prevent repeat reports (store matches in local file)
- Finds a moderator to report to
- (Development) Look for other popular email domains
- Move email domains to a config file, load into list
- (TBA) Only report phone number or email address once
- Move information into a local file, add to .gitignore, and encrypt the file
- (Development) Use a .txt file to keep a list of comment.id already replied to,
then when script is executed, read in existing comment.id
- This will prevent the bot from spamming users when the program is terminated.
- Move comment ID to a config file, store into file and load into list on start-up
- (Deprecated) Iff someone PMs the bot with a certain format followed by an email or number, the number is blacklisted from being detected. Use a link to help human.
- (TBA) Give mods the ability to blacklist the bot from their subreddits
- (TBA) Make sure PIBot only comments when asked, if at all.
- (Done) No comments! Interacts with mods via report msg / modmail.
- (Done) Only reports, making PIBot more for the mods than users.
- (TBA) Instead of replying to each comment, email the person explaining to them that their information has been compromised.
- Finish Report
- Check subreddit blacklist before reporting
- Find a moderator of the current subreddit: Subreddit.message(subject, message)
- Prepare a template, then have the bot send a message to the moderator (with footer)
- Filter match in local file to prevent spam
- Finish Opt-Out / Subreddit Blacklist
- Prepare a footer template, include a link to the PM page with 'User' field filled with 'PrivacyRobit'
- Moderator sends the name of the subreddit in the PM (without r/, /r/, etc.)
- Checks if the user is a moderator of the provided subreddit, then add subreddit name to a local file
- Finish Filter
- Check for a listed match before reporting
- Store (strip special characters from match for less false-negatives)
- Maintain a list of tuples (subreddit:match), store in a dictionary+local file storage or DB
- See: "Preventing PIBot from being banned Reddit-wide"
- Release (Pull Request)
- Work on To do, report errors to GitHub, fix those as well