基于Tweepy的指定用户推文自动回复Twitter bot如何持续运行
首先你当前的代码存在两个基础问题:
- 逻辑为单次执行,拉取一次推文回复后就直接结束进程,没有循环检测逻辑
- 存在语法错误,
for tweet in tweets:下的执行语句没有缩进,运行会直接报错
可直接运行的修改版代码
以下代码加入了循环检测、去重、异常捕获、间隔等待逻辑,支持持续运行:
import tweepy import time from keys import keys CONSUMER_KEY = keys['consumer_key'] CONSUMER_SECRET = keys['consumer_secret'] ACCESS_TOKEN = keys['access_token'] ACCESS_TOKEN_SECRET = keys['access_token_secret'] auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api = tweepy.API(auth) toReply = "USER" # 记录已经回复过的最新推文ID,避免重复回复 last_replied_id = 0 # 轮询间隔,单位秒,建议不小于60避免触发速率限制 POLL_INTERVAL = 60 while True: try: # 只拉取比上次回复的ID更新的推文 tweets = api.user_timeline(screen_name = toReply, since_id=last_replied_id) for tweet in tweets: if tweet.id > last_replied_id: api.update_status("@" + toReply + " TEXT", in_reply_to_status_id = tweet.id) last_replied_id = tweet.id print(f"已回复推文ID:{tweet.id}") # 等待指定时间后再次轮询 time.sleep(POLL_INTERVAL) except Exception as e: print(f"运行出错:{e},10秒后重试") time.sleep(10)
实现自动持续运行的方案
方案1:本地设备后台常驻(适合设备可长期开机)
- Windows系统:把脚本后缀改成
.pyw,按下Win+R输入shell:startup打开开机启动文件夹,把脚本的快捷方式放进去,开机就会自动后台运行,不会弹出命令行窗口。也可以通过系统的「任务计划程序」配置,额外设置崩溃自动重启规则。 - Linux/macOS系统:临时后台运行可以直接执行命令
nohup python3 你的脚本文件名.py &,关闭终端也不会停止进程。要实现开机自启+崩溃自动重启,建议写systemd服务配置,稳定性更高。
方案2:云端部署(不需要本地设备长期开机)
- 购买最低配置的云服务器,把代码上传后按Linux系统的systemd服务配置即可,全年稳定运行,成本极低。
- 也可以使用Serverless函数服务,配置定时触发器每隔一段时间执行一次脚本,不需要维护服务器,大部分平台的免费额度就可以覆盖这个Bot的运行需求,只需要把last_replied_id存在云端存储里,避免每次执行重复回复。
额外注意事项
- 不要把轮询间隔设置得过短,严格遵守Twitter的API调用速率限制,避免账号被限流封禁。
- 回复内容建议结合推文内容做差异化,不要所有推文都回复完全相同的内容,容易被判定为垃圾账号。
- 敏感操作可以加日志记录,方便后续排查运行问题。
内容的提问来源于stack exchange,提问作者PainDeMie
相关产品推荐
相关产品推荐

