gpt4 book ai didi

python-3.x - 无法使用 PRAW 从某些 subreddits 中获得随机帖子

转载 作者:行者123 更新时间:2023-12-04 10:35:06 25 4
gpt4 key购买 nike

我正在尝试使用此代码让 disord bot 从 reddit 发送图像(只是为了不发送)

def random_post(subreddit):
while True:
post = reddit.subreddit(subreddit).random()
if not post.stickied:
return post
它通常工作正常,但每隔一段时间我就会收到此错误
AttributeError: 'NoneType' object has no attribute 'stickied'
它只发生在某些 subreddits 上。

最佳答案

这是 Reddit 端的一个已知问题。

一些 subreddits 会拒绝给你随机提交。见 praw-dev/praw#885在 GitHub 上。

关于那个问题,我went in depth关于原因。我的发现是:当 subreddit 的版主取消选中其 subreddit 设置中的“允许此 subreddit 在/r/all、/r/popular、默认和趋势列表中向用户公开”复选框时,它会阻止 subreddit 提供随机提交. 例如,在撰写本文时,https://reddit.com/r/wallpapers/random只是重定向到 https://www.reddit.com/r/wallpapers/而不是一些提交。

在我个人看来,这是由 /r/random 之间的混淆引起的 Reddit 错误。 (重定向到随机 subreddit)和 /r/{subreddit}/random (重定向到 subreddit 中的随机提交)。就目前而言,该复选框会影响这两个设置,但在我看来,它只影响 /r/random 才有意义。 .

在同一个 GitHub 问题中,一位 Reddit 开发人员插话确认 "the two behaviors are connected"并说这种行为"isn't a bug per se."那是两年多前的事了,从那以后 Reddit 的结局没有任何改变。

所以这对于你来说意味着什么?

不幸的是,没有好的方法可以解决这个问题。正如您所发现的,对于一些 subreddits,subreddit.random()返回 None .这是 noted in the documentation of the method .在您的代码中,您应该检查 post不是 None .如果是None ,这取决于你如何处理。您可以直接返回 None ,或者您可以使用替代方法来获得随机提交,例如(例如)从热门列表中获取 25 个提交并使用 random.choice() 选择一个。

关于python-3.x - 无法使用 PRAW 从某些 subreddits 中获得随机帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60216514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com