2017-08-30 53 views
0

所以我在寫一篇蟒蛇不和諧機器人,我想使後臺任務這將檢查版(Subreddit)的新提交,並張貼,如果有一定的天賦。但是,當我試圖啓動我的機器人,在它面前的工作完美,但它只是等待的東西,不啓動。我該怎麼辦?Discordpy,praw,阻斷

async def reddit_task(): 
     await bot.wait_until_ready() 
     start_time = time.time() 
     reddit = praw.Reddit(different keys) 
     subreddit = reddit.subreddit('certain subreddit') 
     for submission in subreddit.stream.submissions(): 
      if submission.created_utc > start_time: 
       if submission.link_flair_text == 'certain flair': 
        em = discord.Embed(title=submission.title+'\n'+submission.shortlink) 
        if len(submission.preview) > 1: 
          em.set_image(url=submission.preview['images'][0]['source']['url']) 
        await bot.send_message(discord.Object(id='my channel id'), embed=em) 

      else: 
       pass 

if __name__ == "__main__": 
    for extension in startup_extensions: 
     try: 
      bot.load_extension(extension) 
     except Exception as e: 
      exc = '{}: {}'.format(type(e).__name__, e) 
      print('Failed to load extension {}\n{}'.format(extension, exc)) 
    bot.loop.create_task(reddit_task()) 
    bot.run(config.bot_beta_token) 

回答

0

我就遇到了這個問題,以及因爲subreddit.stream.submissions()阻止for循環。所以,我解決它通過使用一個無限循環和subreddit.stream.submissions(pause_after=0)因此,如果沒有新的職位,然後再進行檢查等待60秒鐘,這兩點返回None

async def reddit_task(): 
    await client.wait_until_ready() 
    start_time = time.time() 

    reddit = praw.Reddit("<client_stuff>") 
    subreddit = reddit.subreddit("<some_subreddit>") 
    submissions = subreddit.stream.submissions(pause_after=0) 

    while not client.is_closed: 
     submission = next(submissions) 

     if submission is None: 
      # Wait 60 seconds for a new submission 
      await asyncio.sleep(60) 

     elif submission.created_utc > start_time: 
      <do_stuff_with_submission>