我如何使这个Twitter机器人正常工作? Python 3.8

问题描述 投票:0回答:1

我对此代码有各种各样的问题,这是另一个stackoverflow用户代码的很大一部分,但是我假设他们可能从未完成过,因为我遇到了各种各样的错误。众所周知,“状态”对象没有属性“替换”。我认为我已解决的问题,不知道,无法在网上找到任何内容,尽管它是变量,所以我尝试了非变量版本,但还是一无所获。现在我有这个问题。

Yes
Traceback (most recent call last):
File "C:\Users\alexo\Desktop\Twitter Dad.py", line 28, in <module>
answer="@"+tweet.user.screen_name+" Hi " + c + ", I'm Dad!"
TypeError: can only concatenate str (not "tuple") to str

不知道这有什么问题,脚本的目的是针对该机器人,搜索某人何时以“我是____”开头的推文,并以“嗨____,我是爸爸!”作为响应。只是幽默,但我完全迷失了。感谢所有帮助,谢谢!

新问题!

    import tweepy
    import tweepy as tt
    import time
    import sys
    import importlib 
    from importlib import reload
    importlib.reload(sys)

    #login credentials twitter account
    consumer_key = 'redacted'
    consumer_secret = 'redacted'
    access_token = 'redacted'
    access_secret = 'redacted'

    #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
    c = ("im ","")
    answer="@"+tweet.user.screen_name+" Hi " + c + ", I'm Dad!"
    print("Reply:",answer)
    api.update_status(status=answer)
    time.sleep(300) #every 5 minutes

Traceback (most recent call last):

文件“ C:\ Users \ alexo \ Desktop \ Twitter Dad.py”,第26行,在tweet_contents = tweet.split()#假设tweet是一个strAttributeError:“状态”对象没有属性“分割”

错误:

       Traceback (most recent call last):
       File "C:\Users\alexo\Desktop\Twitter Dad.py", line 26, in <module>
       tweet_contents = tweet.split() # assuming tweet is a str
       AttributeError: 'Status' object has no attribute 'split'

代码

import tweepy
import tweepy as tt
import time
import sys
import importlib
from importlib import reload
importlib.reload(sys)

#login credentials twitter account
consumer_key = '4QGxdJFmn4phBS0z9JTMU1S27'
consumer_secret = 'VuOkfqCEq6YcEeI2Sg6hhP4a7xrMHbhzORr9gQKyX8XfETbbnX'
access_token = '1200414502304591872-lj89lAd7r8oFbXEwDaVxg7YnH8pddO'
access_secret = '3PUfawYhaQJYDU6VYriKiVZNA9zYAAc1UOXe1UREgtWH7'

#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):
    tweet_contents = tweet.split() # assuming tweet is a str
i = tweet_contents.index("I'm")
c = tweet_contents[i + 1]
answer = "@{name} Hi {c}, I'm dad!".format(name=tweet.user.screen_name)
print("Reply:",answer)

api.update_status.(status=answer)
time.sleep(300) #every 5 minutes
python windows twitter bots
1个回答
0
投票

首先,没有明显的理由应将c分配给元组,所以我假定将其删除并替换为tweet内容。

也就是说,您应该在string formatting中使用Python的内部版本,而不是字符串连接。

# Using the .format() function:
answer = "@{name} Hi {c}, I'm dad!".format(name=tweet.user.screen_name, c=c)

# Using an "f-string":
answer = f"@{tweet.user.screen_name} Hi {c}, I'm dad!"

编辑

根据OP的评论:

好的,谢谢您,我现在就可以发布它!但这只鸣叫@JohnnyAppleseed嗨('im',``),我是爸爸!您知道我如何引用“我是”之后的内容吗?我唯一更改的是.format()行。非常感谢!

要获取源推文中字符串I'm之后的所有内容,您首先需要找到单词I'm的索引,然后拉出紧随其后的单词。原谅变量名,我正在上班。

tweet_contents = tweet.split() # assuming tweet is a str
i = tweet_contents.index("I'm")
c = tweet_contents[i + 1]

例如,如果鸣叫是“我很伤心”,这会将其拆分为一个列表["I'm", "sad"],然后将索引“ I'm”设为0,然后从索引0 +中获取“悲伤” 1。

© www.soinside.com 2019 - 2024. All rights reserved.