温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Reddit Bot which replies to comments
praw python python-3.x reddit

python - Reddit Bot回复评论

发布于 2020-05-30 17:13:07

使用PRAW库,当提及给定关键字时,reddit bot会在子线程中回复帖子标题。我想进行更改,以便在子主题(而非帖子)中的评论中提及时回复。

from urllib.parse import quote_plus

    import praw

    QUESTIONS = ["!hello"]
    REPLY_TEMPLATE = "world"


    def main():
        reddit = praw.Reddit(
            user_agent="xxx",
            client_id="xxx",
            client_secret="xxx",
            username="xxx",
            password="xxx",
        )

        subreddit = reddit.subreddit("sandboxtest")
        for submission in subreddit.stream.submissions():
            process_submission(submission)


    def process_submission(submission):
        # Ignore titles with more than 10 words as they probably are not simple
        # questions.
        if len(submission.title.split()) > 15:
            return

        normalized_title = submission.title.lower()
        for question_phrase in QUESTIONS:
            if question_phrase in normalized_title:
                url_title = quote_plus(submission.title)
                reply_text = REPLY_TEMPLATE.format(url_title)
                print("Replying to: {}".format(submission.title))
                submission.reply(reply_text)
                # A reply has been made so do not attempt to match other phrases.
                break


    if __name__ == "__main__":
        main()

查看更多

提问者
P.Sav
被浏览
12
Tin Nguyen 2020-03-16 15:59

如果您只想处理注释更改:

for submission in subreddit.stream.submissions():
  process_submission(submission)

至:

for comment in subreddit.stream.comments():
  process_comment(comment)

# def process_comment you have to write yourself

如果要处理评论和提交,请执行以下操作:

while True:
  for submission in subreddit.stream.submissions(pause_after=-1):
    process_submission(submission)
  for commentin subreddit.stream.comments(pause_after=-1):
    process_comment(comment)

一个例子process_comment()

def process_comment(comment):
  for question_phrase in QUESTIONS:
    if question_phrase in comment.body.lower():
      comment.reply("Hello")