2

我一直在尝试制作一个在 reddit 标题中搜索特定关键字的机器人,如果该关键字为真,它将在该线程中评论某些内容。一切正常,只是我有一个问题,运行大约 4 小时后,它一直在搜索,但由于某种原因它停止评论,不知道为什么。然后我重新启动它,它工作正常。

它似乎每天太平洋标准时间下午 3 点左右发生,它不断打印它正在搜索但即使有包含关键字的帖子也不会发表评论。这是 reddit 为阻止机器人所做的事情,还是我的代码有问题。

在我在我的 3 个 subreddit 函数之外使用 reddit praw 语句之前,但我想测试我是否在每次搜索后继续重新连接到 prawl 是否会阻止问题。

在某种程度上,我的 reddit 机器人在某个点后停止评论,有什么办法可以解决这个问题,或者它是永久性的。

    #!/usr/bin/python
import praw
import pdb
import re
import os
import threading
import time

sub1_array = ['Title']
sub1_array = ['Comment']   

def sub1():

    reddit = praw.Reddit('bot1')

    if not os.path.isfile("posts_replied_to.txt"):
        posts_replied_to = []
        
    else:
        with open("posts_replied_to.txt", "r") as f:
            posts_replied_to = f.read()
            posts_replied_to = posts_replied_to.split("\n")
            posts_replied_to = list(filter(None, posts_replied_to))

    subreddit = reddit.subreddit('sub1')
    print("Checking sub1")
    for submission in subreddit.new(limit=20):
        i = 0

        while i <= (len(sub1_array) - 1):

        # If we haven't replied to this post before
            if submission.id not in posts_replied_to:
        
            # Do a case insensitive search
                if re.search(sub1_array[i], submission.title, re.IGNORECASE):
                    # Reply to the post
                    submission.reply(link_array[i])
                    print("Bot replying to match: ", submission.title)
                    del sub1_array[i]
                    del sub1_array[i]
                    posts_replied_to.append(submission.id)
                    time.sleep(100)

                else:
                    i += 1
            else:
                i += 1
    with open("posts_replied_to.txt", "w") as f:
        for post_id in posts_replied_to:
            f.write(post_id + "\n")
sub2_array = ['Title']
sub2_link = ['Comment]

                
def sub2():
    reddit = praw.Reddit('bot1')


    if not os.path.isfile("posts_replied_to.txt"):
        posts_replied_to = []
        
    else:
        with open("posts_replied_to.txt", "r") as f:
            posts_replied_to = f.read()
            posts_replied_to = posts_replied_to.split("\n")
            posts_replied_to = list(filter(None, posts_replied_to))
    subreddit = reddit.subreddit('sub2')
    print("Checking Streams NBA")
    for submission in subreddit.new(limit=20):
        #print(submission.title)
        i = 0

    
        while i <= (len(sub2_array) - 1):

        # If we haven't replied to this post before
            if submission.id not in posts_replied_to:
        
            # Do a case insensitive search
                if re.search(sub2_array[i], submission.title, re.IGNORECASE):
                    # Reply to the post
                    submission.reply(sub2_link[i])
                    print("Bot replying to match: ", submission.title)
                    del sub2_array[i]
                    del sub2_array[i]
                    posts_replied_to.append(submission.id)
                    time.sleep(100)

                else:
                    i += 1
            else:
                i += 1
    with open("posts_replied_to.txt", "w") as f:
        for post_id in posts_replied_to:
            f.write(post_id + "\n")

sub3_array = ['Title']
sub3_link = ['Comment]
def ncaa():
    reddit = praw.Reddit('bot1')

    if not os.path.isfile("posts_replied_to.txt"):
        posts_replied_to = []
        
    else:
        with open("posts_replied_to.txt", "r") as f:
            posts_replied_to = f.read()
            posts_replied_to = posts_replied_to.split("\n")
            posts_replied_to = list(filter(None, posts_replied_to))
    subreddit = reddit.subreddit('sub3')
    print("Checking sub3")
    for submission in subreddit.new(limit=20):
        #print(submission.title)
        i = 0

    
        while i <= (len(sub3_array) - 1):

        # If we haven't replied to this post before
            if submission.id not in posts_replied_to:
        
            # Do a case insensitive search
                if re.search(sub3_array[i], submission.title, re.IGNORECASE):
                    # Reply to the post
                    submission.reply(sub3_link[i])
                    print("Bot replying to match: ", submission.title)
                    del sub3_array[i]
                    del sub3_array[i]
                    posts_replied_to.append(submission.id)
                    time.sleep(100)

                else:
                    i += 1
            else:
                i += 1
    with open("posts_replied_to.txt", "w") as f:
        for post_id in posts_replied_to:
            f.write(post_id + "\n")
                
                
def should_reset_timer():
  pass    

                
def main():
  sub1()
  sub2()
  sub3()
  timer = 0
  while True:
    time.sleep(1)
    timer+=1
    if should_reset_timer():
      timer = 0
    if timer == 1*30:
      sub1()
      sub2()
      sub3()
      timer = 0
  # Store the current id into our list

# Write our updated list back to the file


main()

4

0 回答 0