使用Tweepy循环自动回复指定推特仅运行一次无日志输出问题求解
问题根因
- 核心错误是
print语句存在类型不兼容问题:pause是随机生成的整数类型,代码直接用pause + "s"做字符串拼接会触发类型异常,程序第一次执行到打印日志的步骤就会直接崩溃,因此仅能完成1次回复、不会输出后续日志。 - 额外冗余问题:每次循环都重复初始化Tweepy认证和API实例,属于无意义的重复操作,既降低运行效率,也可能提升接口风控拦截的概率。
- 代码规范问题:直接在函数内读取全局变量,不利于后续调试和功能扩展。
修正后可用代码
import tweepy import random import datetime import time def spam(amount, status, tweetid): # 认证逻辑移到循环外,仅初始化一次即可 auth = tweepy.OAuthHandler("xxxx", "xxxx") auth.set_access_token("xxxx-xxxx", "xxxx") api = tweepy.API(auth) for i in range(amount): send = f"{status} {i+1}" pause = random.randint(5, 12) api.update_status(send, in_reply_to_status_id = tweetid, auto_populate_reply_metadata = True) # 修复字符串拼接错误,使用f-string格式化输出更清晰 print(f"success, pause = {pause}s\t{datetime.datetime.now()}") time.sleep(pause) if __name__ == "__main__": amount = int(input("amount>> ")) status = input("status>> ") tweetid = input("id>> ") spam(amount, status, tweetid)
内容的提问来源于stack exchange,提问作者seggsyape
相关产品推荐
相关产品推荐

