当前位置: 代码迷 >> python >> Tweepy的Twitter Bot-Python
  详细解决方案

Tweepy的Twitter Bot-Python

热度:82   发布时间:2023-06-19 09:24:30.0

我一直在开发一个Twitter Bot,该机器人在邮件中用“嗨___,我是爸爸!”回复“ im”的人。

我以前曾经让它工作,但是后来我的电脑死了,丢失了所有文件。

几年前,我写了原始的bot,但有一段时间没看过Tweepy了。

我很确定自己100%都知道了-并没有弹出错误,但该机器人无法正常工作,我也不知道为什么。

我可以正常登录,但是实际的回复部分出了点问题。

有人可以帮我吗?

import tweepy as tt
import time


#login credentials twitter account
consumer_key = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
consumer_secret = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
access_token = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
access_secret = '-NOT GOING TO PUT THE ACTUAL KEY IN-'

#login
auth = tt.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tt.API(auth)
search_results = api.search("r'\bi\'?m\s+(.*)',re.IGNORECASE,text", count=100)

user = api.me()
print(user.name)


#reply
for tweet in search_results:

# answer to the hashtag tweet
    if len(reply) > 0:
        c=message.content
        c=c.replace("im ","")
        answer="@"+user+" Hi " + c + ", I'm Dad!"
        print ("Reply:",answer)
# tweet and pause not to stress twitter
        twitter.update_status(status=answer,in_reply_to_status_id=id)
        time.sleep(300) #every 5 minutes

如果您希望继续使用r(egular)e(xpression)模块,则可能要import re但据我所知,并且根据其他有关stackoverflow的回答,Twitter不支持使用来搜索推文RE(目前)。 我可以证明这一点,因为我每周都收集推文,而重新搜索失败。

尝试使用api.update_status( ... )代替twitter.update_status( ... ) 请注意, update_status()api对象的方法。 另外,请注意,您的id未实例化或没有初始值。

这是我的Twitter收集脚本的一个片段,用于进一步的上下文,在我的实现中,我使用csvwriter将几行tweet保存在一个csv中。

for tweet in tweepy.Cursor(api.search, q='twitter').items():  
    csvWriter.writerow([tweet.text.encode('utf8'),
                        tweet.user.screen_name, tweet.created_at,
                        tweet.retweet_count, tweet.favorite_count,
                        tweet.user.location.encode('utf8')], tweet.user.id)

像您一样,几年前(以及最近)我也尝试使用RE,我可以确认Twitter搜索/查询尚不支持RE。 (很遗憾,我知道:/)。 但这就是数据/ tweet预处理的来源。

我想提出的另一点是,你不能检索回复鸣叫得到的总数(我假设你像我一样正在使用标准的API(没有溢价或企业)..看到这个了有关reply_count tweet功能的上下文。

对于您的情况,我建议使用以下代码“搜索”您想要的推文,我使用tweepy的光标执行api.search,然后输入q(uery)。 查询值基本上类似于Twitter的“搜索”栏。 尽管我的解决方案实际上不是您的解决方案,但是您可以根据需要从我的代码中进行学习。

import tweepy as tt
import time
import sys
reload(sys)
sys.setdefaultencoding('utf8')


#login credentials twitter account
consumer_key = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
consumer_secret = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
access_token = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
access_secret = '-NOT GOING TO PUT THE ACTUAL KEY IN-'

#login
auth = tt.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tt.API(auth)
search_query = "hi I'm Dad"
user = api.me()
print(user.name)

max_tweets = 100

for tweet in tweepy.Cursor(api.search, q=search_query).items(max_tweets):
    c=tweet.text.encode('utf8')
    c=c.replace("im ","")
    answer="@"+tweet.user.screen_name+" Hi " + c + ", I'm Dad!"
    print ("Reply:",answer)
    api.update_status(status=answer,in_reply_to_status_id=tweet.id)
    time.sleep(300) #every 5 minutes

/ ogs