Python – 使用 PRAW 制作 Reddit 机器人
Reddit 是一个基于人们兴趣的社区网络。这些社区中的每一个都称为 subreddit。用户可以订阅多个 subreddit 来发布、评论和与他们互动。
Reddit 机器人是自动响应用户帖子或以特定时间间隔自动发布内容的东西。这可能取决于用户发布的内容。它可以由某些关键短语触发,也取决于有关其内容的各种 subreddit。
为了实现 Reddit 机器人,我们将使用Python Reddit API Wrapper (PRAW)。它允许我们登录到 Reddit API 以直接与网站的后端交互。关于这个库的更多信息可以在这里找到——PRAW—— Python Reddit API Wrapper。
我们的机器人会告诉给定单词的相似单词。我们将使用enchant
模块的suggest()
方法来查找相似的单词。
算法 :
- 导入模块 praw 并附魔。
- 使用有效参数创建一个授权的 Reddit 实例。
- 选择机器人所在的 subreddit。
- 选择一个将触发该 subreddit 中的机器人的单词。
- 检查 subreddit 中的每个评论是否有触发短语。
- 找到触发短语后,从评论中提取单词并使用
enchant
模块找到其相似的单词。 - 用类似的话回复评论。
# 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)
触发机器人:
机器人用类似的话回复: