discord.py机器人Embed无法加载Reddit视频,如何过滤视频类帖子?
解决方案
核心过滤逻辑
PRAW返回的Reddit帖子对象submission自带is_video属性,值为True时即为平台原生上传的视频内容,直接过滤即可。额外增加URL后缀判断,可过滤外链的视频资源,避免漏筛。
修改后完整代码
import random import discord from discord.ext import commands import praw # 此处保留你原有praw实例初始化、bot实例初始化等代码 @commands.command(name='aww', aliases=["aw", "cute", "cutepics"]) async def aww(self, ctx): sub_submissions = reddit.subreddit('aww').hot() post_to_pick = random.randint(1, 100) # 定义需要过滤的常见视频格式后缀 video_suffix = ('.mp4', '.mov', '.webm', '.mkv', '.flv', '.avi') for i in range(0, post_to_pick): # 过滤规则:非置顶帖 + 非原生视频 + 外链不指向视频文件 submission = next(x for x in sub_submissions if not x.stickied and not x.is_video and not x.url.lower().endswith(video_suffix)) e = discord.Embed( title=f'Your request!', description=f'{submission.title}\n{submission.selftext}') e.set_image(url=submission.url) e.set_footer(text=f"OFC!Thank dove#1565 for this amazing quickie!? \nRequested by {ctx.author}") await ctx.send(embed=e)
可选优化
如果担心随机拉取的100条内容里没有符合条件的图片帖子,可以增加StopIteration异常捕获逻辑,触发时给用户发送拉取失败的提示即可,避免机器人报错。
内容的提问来源于stack exchange,提问作者Divyansh Jain
相关产品推荐
相关产品推荐

