使用循环自动回复推文

Reply Tweet Automatically Using Loop

我的目标是使用 tweepy 回复某条推文并稍作停顿 (time.sleep()) 回复格式为status,最后是i的值。但我的代码不工作,我不知道为什么。 (注意:它只回复一次,不打印报告)

import tweepy
import random
import datetime
import time


def spam():
    for i in range(amount):
        send = str(status) + " " + str(i+1)
        pause = random.randint(5,12)

        auth = tweepy.OAuthHandler("xxxx", "xxxx")
        auth.set_access_token("xxxx-xxxx", "xxxx")
        api = tweepy.API(auth)
        api.update_status(send, in_reply_to_status_id = tweetid , auto_populate_reply_metadata=True)
        print("succes, pause =",pause+"s\t",datetime.datetime.now()) # for report
        time.sleep(pause)

amount = int(input("amount>> "))
status = input("status>> ")
tweetid = input("id>> ")

spam()

据我所知,Twitter 会屏蔽彼此相似的推文。只有一条这样的推文可以出去。即使我尝试改变推文之间的时间,也尝试更改一两个字符,但它仍然被阻止了。您的代码没有问题,它是 Twitter 的防御机制,已启动以防止垃圾邮件。另请注意,如果您尝试发送垃圾邮件,您的 API 访问权限也可能会被阻止。

另外,你不需要在每次 运行 循环时都进行身份验证,你只需执行一次即可获得 api 对象,你可以在循环中使用它,如下所示

import tweepy
import random
import datetime
import time


def spam():
  auth = tweepy.OAuthHandler("xxxx", "xxxx")
  auth.set_access_token("xxxx-xxxx", "xxxx")
  api = tweepy.API(auth)
  for i in range(amount):
    send = str(status) + " " + str(i+1)
    pause = random.randint(5,12)
    api.update_status(send, in_reply_to_status_id = tweetid , auto_populate_reply_metadata=True)
    print("succes, pause =",pause+"s\t",datetime.datetime.now()) # for report
    time.sleep(pause)

amount = int(input("amount>> "))
status = input("status>> ")
tweetid = input("id>> ")

spam()