Python – Making a Reddit bot with PRAW

Reddit is a network of communities based on people’s interests. Each of these communities is called a subreddit. Users can subscribe to multiple subreddits to post, comment and interact with them.
A Reddit bot is something that automatically responds to a user’s post or automatically posts things at certain intervals. This could depend on what content the users post. It can be triggered by certain key phrases and also depends on various subreddits regarding their content.
In order to implement a Reddit bot, we will use the Python Reddit API Wrapper (PRAW). It allows us to login to the Reddit API to directly interact with the backend of the website. More information about this library can be found here – PRAW – Python Reddit API Wrapper.

Our bot will tell the similar words for a given word. We will use the enchant module’s suggest() method to find the similar words.

Algorithm :

  1. Import the modules praw and enchant.
  2. Create an authorized Reddit instance with valid parameters.
  3. Choose the subreddit where the bot is to be live on.
  4. Choose a word that will trigger the bot in that subreddit.
  5. Inspect every comment in the subreddit for the trigger phrase.
  6. On finding the trigger phrase, extract the word from the comment and find its similar words using the enchant module.
  7. Reply to the comment with the similar words.
filter_none

edit
close

play_arrow

link
brightness_4
code

# import the modules
import praw
import enchant
  
# initialize with appropriate values
client_id = ""
client_secret = ""
username = ""
password = ""
user_agent = ""
  
# creating an authorized reddit instance
reddit = praw.Reddit(client_id = client_id, 
                     client_secret = client_secret, 
                     username = username, 
                     password = password,
                     user_agent = user_agent) 
  
# the subreddit where the bot is to be live on
target_sub = "GRE"
subreddit = reddit.subreddit(target_sub)
  
# phrase to trigger the bot
trigger_phrase = "! GfGBot"
  
# enchant dictionary
d = enchant.Dict("en_US")
  
# check every comment in the subreddit
for comment in subreddit.stream.comments():
  
    # check the trigger_phrase in each comment
    if trigger_phrase in comment.body:
  
        # extract the word from the comment
        word = comment.body.replace(trigger_phrase, "")
  
        # initialize the reply text
        reply_text = ""
          
        # find the similar words
        similar_words = d.suggest(word)
        for similar in similar_words:
            reply_text += similar + " "
  
        # comment the similar words
        comment.reply(reply_text)

chevron_right


Triggering the bot :

The bot replying with the similar words :

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.