首页 > 解决方案 > Tweepy MyStreamListener 即使在这个人没有发推文时也会被调用?

问题描述

我正在使用 StreamListener 制作一个 Tweepy 程序,该程序等待帐户发送推文,将推文保存为 txt 文件,替换字符,然后发送更新 txt 文件。

当我将帐户设置为我自己的@Bobwont 时,它工作正常。等待@Bobwont 发送推文,将推文保存为 txt 文件,替换字符并发送文本。

当我将帐户设置为@Zackfox 时,它似乎从他的个人资料中提取推文,而不是等待他发推文。我不知道该怎么解释。我已经发布了我的代码和终端进程。

如果您需要更多信息,请告诉我。

zabkfox.py:

class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        if hasattr(status, 'retweeted_status'):
            print('retweet')
        else:
        #print data
            with open('tweet.txt','w') as tf:
                tf.write(status.text)

            with open('tweet.txt','r') as tf:
                contents = tf.read()
                newcontents = contents.replace('c','\U0001F171\uFE0F')

            print(newcontents)
            api.update_status(newcontents)

        return True

    def on_error(self, status):
        print(status.text)

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStream.filter(follow=['1700626069'])

终端:

Documents/zabkfox/zabkfox.py 
this is my twitter bot
retweet
retweet
@za️kfox I liked this and then unliked this.  I had a good ️hu️kle. This is why I'm on twitter.
retweet
@za️kfox @bluefa️ebleedem Songs wa️k af
retweet
retweet
retweet
retweet

似乎只在他回复的推文中这样做。但无论如何,它不应该拉他的推文。它应该等他发推文。

标签: pythontwittertweepy

解决方案


找到了一个修复:

原来它正在收集其他人回复他的推文。我只是添加了这个 elif 语句来解决它:

class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):

    if hasattr(status, 'retweeted_status'):
        print('retweet')

    elif hasattr(status, 'in_reply_to_user_id'):
        print('reply')

    else:
    #print data
        with open('tweet.txt','w') as tf:
            tf.write(status.text)

        with open('tweet.txt','r') as tf:
            contents = tf.read()
            newcontents = contents.replace('c','\U0001F171\uFE0F')

        print(newcontents)
        api.update_status(newcontents)

    return True

推荐阅读