You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.py机器人如何排除含特定关键词的Reddit视频/图集帖

问题根因

你的代码有3个明显问题,导致过滤逻辑完全失效:

  1. 条件判断写法错误:if 'v.redd.it' or 'gallery' in random_post.url: 不符合Python语法逻辑,非空字符串'v.redd.it'的布尔值恒为True,这个if分支会永远触发,根本没做正确的关键词匹配。
  2. 过滤逻辑不完整:就算判断写对,你也只做了一次重抽,第二次抽到的帖子依然可能是视频或图集,还是会发出无法嵌入的内容。
  3. 索引越界风险:你拉取的250条帖子索引范围是0~249,random.randint(0, 250)有概率抽到索引250,直接触发列表越界报错。

另外你定义的strForm变量全程没有使用,属于冗余代码可以直接删除。

修复方案

最稳妥的实现是拉取帖子后先做一次全量过滤,把所有不符合要求的视频、图集帖全部排除,再从剩余有效帖子里随机选取,从根源上避免抽到不可嵌入的内容,修复后代码如下:

elif user_message.lower() == '!dog':
    sub = reddit.subreddit('rarepuppers')
    # 拉取热帖时直接过滤:排除v.redd.it视频、gallery图集
    valid_posts = [
        post for post in sub.hot(limit=250)
        if 'v.redd.it' not in post.url and 'gallery' not in post.url
    ]
    # 直接从有效帖子列表随机选1条,不用手动计算索引,避免越界
    random_post = random.choice(valid_posts)
    await message.channel.send(random_post.url)
    return
可选扩展

如果后续需要过滤更多不可嵌入的内容,直接在valid_posts的判断条件里追加规则即可:

  • 要排除Reddit纯文字自评帖,新增判断条件and not post.is_self
  • 要排除其他第三方平台外链,可以新增对应域名的关键词判断
  • 如果担心拉取的250条里有效帖太少,可以适当调大limit参数值

内容的提问来源于stack exchange,提问作者NeoFox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:39:38