首页 > 解决方案 > 无法随机化来自 reddit 的提交

问题描述

我正试图让我的不和谐机器人从 r/memes subreddit 中抓取图像。

这是我与 reddit api 接口的代码

subreddit = reddit.subreddit('memes')
hot_python = subreddit.hot(limit=100)

for submission in hot_python:
    print(submission.title)

async def meme():
    memes_submissions = reddit.subreddit('memes').hot()
    post_to_pick = random.randint(1, 10)
    for i in range(0, post_to_pick):
        submission = next(x for x in memes_submissions if not x.stickied)

这是我发送所选帖子的代码

elif message.content == "!meme":
        channel = message.channel
        await message.channel.send(submission.url)

当我运行命令时,它会一遍又一遍地发送相同的模因,而不是随机选择一个。关于如何解决这个问题的任何想法?

标签: python-3.xdiscord.py-rewritepraw

解决方案


从 subreddit 获取随机帖子是PRAW 支持的 Reddit 功能。

这是一个从指定的 subreddit 获取随机帖子的函数:

def random_post(subreddit):
    return reddit.subreddit(subreddit).random()

如果您希望帖子不被粘贴,请使用:

def random_nonsticky_post(subreddit):
    while True:
        post = reddit.subreddit(subreddit).random()
        if not post.stickied:
            return post

正如您在后续问题中所讨论的,重要的是要注意一些 subreddits 不允许随机发布。


推荐阅读