使用 Tweepy 检索单个直接消息并等待人们发送消息

问题描述

在这里遇到了一个问题,我很快就获得了 Twitter 速率限制,而我没有快速获得新的 DM

这是代码,请帮帮我。

def getDM():

           last_seen_id = retrieve_last_seen_id(FILE_NAME)
           last_dms = api.list_direct_messages(1)

           for messages in last_dms:
               last_seen_id = messages.id #messages.message_create['sender_id']
               store_last_seen_id(last_seen_id,FILE_NAME)
               print("ID is : " + str(messages.id) + " || " + " Messaged : " + 
               str(messages.message_create['message_data']['text']))
               api.destroy_direct_message(messages.id)

解决方法

一种方法是实现一个每 60 秒获取一次 DM 的线程,如果您尝试更频繁,则会超出限制

class TwitterThread():
   def start(self):
      self.interval = 60  # interval

      thread = threading.Thread(target=self.run,args=())
      thread.daemon = True  # Daemonize thread
      logging.info(f'TwitterThread runs every {self.interval} seconds')
      thread.start()

   def run(self):
      while True:
         try:
            last_dms = api.list_direct_messages(1)
            for messages in last_dms:
               # process DM

               api.destroy_direct_message(messages.id)

         except Exception as e:
            logging.exception(e)

        time.sleep(self.interval)  # sleep to wait 60 sec