2016-10-11 11 views
2

私は現在、DMリスナーのためにpythonでtweepyパッケージを利用しています。私は彼らのメッセージを受け取ったときに送信者に返信したいと思います。私は、次があります。Tweepyを使った自動ダイレクトメッセージ応答

class StdOutListener(StreamListener): 
    def __init__(self): 
     self.tweetCount = 0 

    def on_connect(self): 
     print("Connection established!!") 

    def on_disconnect(self, notice): 
     print("Connection lost!! : ", notice) 

    def on_data(self, status): 
     status = str(status) 
     try: 
      json_acceptable_string = status.replace('\\','') 
      #string to dict 
      status=json.loads(json_acceptable_string) 
      if 'direct_message' in status.keys(): 
       print '\n' 
       print status[u'direct_message'][u'sender_screen_name'] +' sent: '+ status[u'direct_message'][u'text'] 
       message=str(status[u'direct_message'][u'text']) 
       api.send_direct_message(screen_name=str(status[u'direct_message'][u'sender_screen_name']),text='Out of office now - will respond to you asap') 
       print 'auto response submitted' 
      else: 
       #not direct message flow 
       pass 
     except: 
      #not important flows - couldn't convert to json/not correct flow in stream 
      pass 
     return True 

def main(): 
    global api 
    try: 
     auth = OAuthHandler(consumer_key, consumer_secret) 
     auth.secure = True 
     auth.set_access_token(access_token, access_token_secret) 
     api = API(auth) 
     print(api.me().name) 
     stream = Stream(auth, StdOutListener()) 
     stream.userstream() 

    except BaseException as e: 
     print("Error in main()", e) 

if __name__ == '__main__': 
    main() 

を何らかの理由で、私は、ユーザーのprint文を参照し、彼らが送信されことができますが、それはそれがハングsend_direct_message方法になったとき。 奇妙なことに、私が自分自身にメッセージを送ると、私はそれがループするにつれて激しいメッセージを受け取ります。これはon_data()のためですか?この作業を他の送信者にどうすればできますか?

UPDATE:解決されたトークンを修正し、条件を追加して送信者を確認します。本質的にブラックリストに載っています。

答えて

1

UPDATE:解決済み - トークンを再生成し、条件付きで送信者を確認します。本質的にブラックリストに載っています。

+0

ありがとうございました。将来の読者の場合は、「権限」タブの下で、アプリケーションのメッセージをダイレクトにアクセスできるようにしてください。その後、コンシューマトークンとアクセストークンの両方を再生成して、変更を有効にします。古いトークンでは401エラーが発生し、権限を変更せずに変更するだけでは機能しません。 – 7h3rAm

関連する問題