Skip to content

JoryAnderson/PIBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CircleCI

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).

Features

  • (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)
  • (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

Suggestions

  • (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.

Preventing PIBot from being banned Reddit-wide

  • (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.

Todo

  1. 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
  2. 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
  3. 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
  4. See: "Preventing PIBot from being banned Reddit-wide"
  5. Release (Pull Request)
  6. Work on To do, report errors to GitHub, fix those as well

About

An open-source personal information identifier for Reddit.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages