【问题标题】:praw reddit bot responding multiple timespraw reddit bot 多次响应
【发布时间】:2020-07-29 00:52:46
【问题描述】:

我正在尝试用 praw 制作一个 reddit 机器人,但它会多次回复相同的评论。

这是我的代码:

keyphrases = ["test","test2","test3"]

for comment in subreddit.stream.comments(skip_existing=True):
    for keyphrase in keyphrases:
        if keyphrase in comment.body:
            try:
                comment.reply("hi")
            except:
                print("to frequent")

【问题讨论】:

  • 我有两个建议给你。首先,尝试print(ids)。您会注意到所有 ID 都以换行符结尾。如果评论的 ID 为 abc123,当从带有 .readlines() 的文件中读取时,它将显示为 abc123\n。你可以试着去掉这个空白,或者更好……
  • 您实际上不需要任何这些文件内容,因为 PRAW 可以为您处理这些。如果你这样做for comment in subreddit.stream.comments(skip_existing=True),那么 PRAW 只会给你自循环开始以来发布的 cmets,这意味着你永远不会得到重复。然后你不需要对文本文件做任何事情。顺便说一句,您可以查看the documentation 了解更多信息。我希望这会有所帮助!
  • @jarhill0 虽然 skip_existing 有帮助,但机器人仍然(很少)开始一遍又一遍地响应相同的评论,只有在我关闭脚本时才会停止,我更新了帖子以显示我当前的代码。

标签: python-3.x praw


【解决方案1】:

考虑当评论中有多个关键词时会发生什么。根据这段代码,我们将检查第一个关键词,然后回复,然后在循环的下一次迭代中,我们将检查第二个关键词,然后再次回复,依此类推。

如果即使评论中有多个关键字也只想要一个回复,您可以在找到第一个关键字匹配时break跳出循环:

for keyphrase in keyphrases:
    if keyphrase in comment.body:
        try:
            comment.reply("hi")
            break
        except:
            print("too frequent")

break keyword 退出循环,不再执行任何迭代。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2017-07-20
    • 2020-09-20
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多