Это известная проблема в конце Reddit.
Некоторые поддредакторы откажутся предоставить вам произвольную отправку. Смотрите praw-dev / praw # 885 на GitHub.
По этому вопросу я углубленно изучил причину . Мои выводы были следующими: Когда модераторы субредита снимают флажок «разрешить показ этого субредита пользователям в параметрах / r / all, / r / популярный, список по умолчанию и тренды» в их настройках субредита, он запрещает субреддиту возможность предоставить случайную отправку. Например, на момент написания этой статьи https://reddit.com/r/wallpapers/random просто перенаправляет на https://www.reddit.com/r/wallpapers/ вместо какой-либо отправки.
По моему личному мнению, это ошибка Reddit, вызванная путаницей между /r/random
(которая перенаправляет на случайный subreddit) и /r/{subreddit}/random
(который перенаправляет на случайную передачу в subreddit). Как таковой, этот флажок влияет на обе настройки, когда, на мой взгляд, имеет смысл только повлиять на /r/random
.
В той же проблеме GitHub разработчик Reddit вмешался, чтобы подтвердить, что " два поведения связаны " и говорят, что это поведение " не является ошибкой само по себе . " Это было более двух лет go и ничего не изменилось Конец Reddit с тех пор.
Так что это значит для вас?
К сожалению, нет хорошего способа обойти это. Как вы обнаружили, для некоторых подредактов subreddit.random()
возвращает None
. Это отмечено в документации метода . В вашем коде вы должны убедиться, что post
не None
. В случае, если это None
, вам решать, как с этим справиться. Вы можете просто вернуть None
, или, возможно, вы можете использовать альтернативный метод для получения случайной отправки, такой как (например) получение 25 заявок из горячего списка и использование random.choice()
для выбора.