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:解決されたトークンを修正し、条件を追加して送信者を確認します。本質的にブラックリストに載っています。
ありがとうございました。将来の読者の場合は、「権限」タブの下で、アプリケーションのメッセージをダイレクトにアクセスできるようにしてください。その後、コンシューマトークンとアクセストークンの両方を再生成して、変更を有効にします。古いトークンでは401エラーが発生し、権限を変更せずに変更するだけでは機能しません。 – 7h3rAm