Reddit Bot在一段时间后停止评论

时间:2018-03-18 18:32:23

标签: python bots reddit jreddit redditkit

我一直在尝试制作一个搜索reddit标题中特定关键字的机器人,如果该关键字为true,则会在该线程中注释某些内容。一切正常,只有我有一个问题,运行大约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()
&#13;
&#13;
&#13;

0 个答案:

没有答案