PRAW中如何从Reddit评论获取Redditor用户名用于发送私信
问题修复与实现方案
当前报错的根因
你碰到的TabError: inconsistent use of tabs and spaces in indentation属于Python缩进语法错误,和PRAW功能逻辑完全无关:同一代码层级不能混用Tab制表符和半角空格做缩进,把整段循环块内的缩进统一为4个半角空格,即可消除该报错。
PRAW 对应接口能力说明
PRAW的Comment对象本身提供了完整的作者属性访问能力,完全可以满足自动私信的前置需求:
- 通过
comment.author可以直接获取到对应作者的Redditor类实例,这个实例本身就支持直接调用.message()方法发送私信 - 如果需要获取纯字符串格式的用户账号名,直接在实例后调用
.name属性即可,即comment.author.name,返回值就是无对象封装的纯文本用户名 - 你原代码中将
comment.author赋值后再传入reddit.redditor()初始化的写法存在冗余,且因为传入的不是字符串类型的用户名,属于非标准调用方式,长期运行容易触发类型兼容问题
修正后的可运行代码
for comment in subreddit.stream.comments(): # 增加空值校验,避免碰到已注销用户的评论触发空属性报错 if keyphrase in comment.body and comment.author is not None: # 直接调用作者实例的发信方法,省略冗余的redditor初始化步骤 comment.author.message("TEST", "BOT TESTING") # 如需保存纯文本用户名用于日志记录等场景,可通过以下方式取值 # target_username = comment.author.name
内容的提问来源于stack exchange,提问作者pyramiskyma
相关产品推荐
相关产品推荐

