如何使用PRAW获取特定用户flair的当前使用者?
解决方案
你的代码报错核心原因:subreddit.flair.templates 获取的是社区的flair模板列表,并非已分配给用户的实际flair数据,所以不存在flair['user']字段,自然触发KeyError。
要实现清除所有使用含特定关键词flair的用户的该flair,正确做法是遍历社区内所有已分配flair的用户,筛选出符合条件的对象:
def clearFlairsFromPreviousHolders(subreddit): userList = [] # 遍历所有带有flair的用户条目 for flair_entry in subreddit.flair(limit=None): # flair_entry包含user、flair_text、flair_template_id等字段 if "Poster for Week" in flair_entry['flair_text']: userList.append(flair_entry['user']) # 批量清除这些用户的flair if userList: subreddit.flair.update(userList, text='')
关键说明
subreddit.flair(limit=None)会获取社区内所有已设置flair的用户(PRAW会自动处理分页,无需手动实现)- 每个
flair_entry是字典结构,包含user(用户对象)、flair_text(flair文本)等核心字段 - 批量更新前判断
userList是否为空,避免不必要的API调用
内容的提问来源于stack exchange,提问作者ConfusedCoder
相关产品推荐
相关产品推荐

