使用Tweepy取消点赞推文失败:提示无对应状态但推文未删除
解决Tweepy取消点赞返回144错误(找不到推文)的问题
嘿,我之前帮朋友排查过类似的Tweepy取消点赞问题,来给你梳理几个大概率的原因和解决办法!
1. 检查API权限是否足够
取消点赞操作需要Twitter API的读写权限,如果你的应用只有只读权限,哪怕推文存在也会触发错误。去Twitter开发者平台看看你的应用权限设置,确保是「Read and write」级别。要是权限不够,升级后重新生成访问令牌(access token),再替换到代码里的认证部分。
2. 确认推文ID的格式是否正确
Tweepy的destroy_favorite()方法要求推文ID是整数类型,如果你的代码里把ID写成了字符串,就会导致API解析错误,表面上返回“找不到推文”,实际是ID格式不对。比如:
- 错误写法:
api.destroy_favorite("987330131013308418") - 正确写法:
api.destroy_favorite(987330131013308418)
3. 排查账号是否真的点赞过该推文
这是很容易忽略的点!如果你的认证账号根本没给这条推文点过赞,调用取消点赞接口时,系统找不到对应的点赞记录,就会返回144错误。你可以先调用api.get_status(tweet_id),查看返回结果里的favorited字段,确认账号是否已经点赞过这条推文。
4. 更新Tweepy到最新版本
旧版本的Tweepy可能和Twitter API存在兼容性问题,导致一些奇怪的错误。试试升级到最新稳定版:
pip install --upgrade tweepy
5. 测试用的代码示例
给你贴个完整的测试片段,包含权限验证、点赞状态检查和取消点赞的流程:
import tweepy # 替换成你的API密钥 consumer_key = '你的Consumer Key' consumer_secret = '你的Consumer Secret' access_token = '你的Access Token' access_token_secret = '你的Access Token Secret' # 认证流程 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) # 初始化API,开启限流等待 api = tweepy.API(auth, wait_on_rate_limit=True) tweet_id = 987330131013308418 # 确保是整数 try: # 先获取推文状态,检查是否已点赞 status = api.get_status(tweet_id) if status.favorited: api.destroy_favorite(tweet_id) print("取消点赞成功!") else: print("当前账号未点赞这条推文,无需执行取消操作~") except tweepy.TweepError as e: print(f"错误详情:{e}")
内容的提问来源于stack exchange,提问作者the_t_test_1
相关产品推荐
相关产品推荐

