on_direct_message永远不会在消息到达时调用。我已经使用python3.7和最新的tweepy库。在推特帐户中,它工作正常,但无法与正在使用的代码段一起使用。但是该代码段可以很好地监听推文。
twitter_stream=Stream(auth,StdOutListener())
print('Stream created...')
twitter_stream.filter(follow=[user.id_str], is_async=True)
NB:读取,写入和直接发送消息的权限。并且所有访问参数都是正确的
StdOutListener是:
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 ):
print("Entered on_data()")
print(status, flush = True)
return True
def on_direct_message( self, status ):
print("Entered on_direct_message()")
try:
print(status, flush = True)
return True
except BaseException as e:
print("Failed on_direct_message()", str(e))
def on_error( self, status ):
print(status)
Twitter流API中不支持直接消息(直接消息是User Streams API的一部分,该流已于2018年删除,并由Account Activity API取代。
要实时接收直接消息,您将需要为Account Activity API实现一个webhook处理程序。您可以尝试twitivity库,或查看this Python sample app。 Tweepy没有对此API的内置支持。