Tweepy的api.list_direct_messages接口count参数不生效问题
Tweepy获取已发送私信为空问题修复方案
问题根因
tweepy.API.list_direct_messages()默认仅拉取当前账号收到的私信,你没有额外指定拉取范围的情况下,自然无法查询到已发送的私信内容,所以返回长度为0的空列表。
修复后的完整代码
import tweepy CONSUMER_KEY = 'private' CONSUMER_SECRET = 'private' ACCESS_KEY = 'private' ACCESS_SECRET = 'private' auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) # 新增wait_on_rate_limit参数自动处理速率限制,避免手动等待 api = tweepy.API(auth, wait_on_rate_limit=True) # 新增sent=True指定拉取已发送私信,count指定拉取数量 dms = api.list_direct_messages(count=5, sent=True) print(len(dms)) for dm in dms: # 直接调用id属性即可,无需手动解析_json字段 api.destroy_direct_message(dm.id)
额外注意事项
如果调整参数后仍然返回空列表,请检查两项配置:
- 你的Twitter开发者账号已经申请了
Direct Message Read/Write权限,权限不足会导致接口正常返回空但无报错- 如果你使用的是Tweepy v4及以上版本,部分旧接口已迁移到v2版本,若v1.1的
list_direct_messages不生效,可以切换使用api.get_dm_events()接口查询私信事件列表
内容的提问来源于stack exchange,提问作者HoshiJames
相关产品推荐
相关产品推荐

