Errorhandling Indexer错误和属性错误与不一致

2024-06-28 20:48:45 发布

您现在位置:Python中文网/ 问答频道 /正文

试图解决用户试图在受限服务器或18+服务器中查找映像时出现的错误,但似乎不知道如何正确执行。我用的是一个乱七八糟的

@bot.command()
async def redditsearch(ctx, sub):
    start_time = time.time()
    listing = []
    subreddit = await reddit.subreddit(sub)
    print(subreddit.subreddit_type)
    if sub.lower() in bannedsubs:
        await ctx.send("Banned subreddit.")
        return
    elif subreddit.over18 == True:
        await ctx.send("No NSFW subreddits.")
        return
    else:
        async for submission in subreddit.hot(limit=100):
            if submission.url.endswith(("jpg", "jpeg", "png", "gifv")) and not submission.spoiler and not submission.over_18:
                listing.append(submission)
            else:
                pass
    
        random.shuffle(listing)
        post = listing[0]
        if submission.link_flair_text == None:
            await ctx.send(f"{post.title}\n{post.url}")
        else:
            await ctx.send(f"[{submission.link_flair_text}] \n{post.title}\n{post.url}")
        end_time = time.time()
        await ctx.send(f"---- Took %s seconds to lookup ----" % (end_time - start_time))

这是错误处理程序

@redditsearch.error
async def redditsearch_error(ctx, inst):
    if isinstance (inst, IndexError):
        await ctx.send(f"Exception raised. This probably means I failed to find an image.")
    else:
        await ctx.send(f"Exception raised. \n\n{inst}")

每当用户试图从禁止或限制的子Reddit中获取时,它都会返回AttributeError,当用户在公共子Reddit中找不到图像时,它会返回IndexError

如何使用errorhandler解决这些问题


Tags: 用户sendurlsubmissionasynciftimeawait
1条回答
网友
1楼 · 发布于 2024-06-28 20:48:45

您可以在代码中包含一些except。为此,您必须稍微修改代码:

@bot.command()
async def redditsearch(ctx, sub):
    try: # Must be included to use except 
    [Your code]
    except AttributeError: # except 
        await ctx.send(f"Exception raised. This probably means I failed to find an image.")
  • [Your code]=用正确的缩进插入代码
  • 您还可以使用其他except参数,建议您使用这些参数

但是,如果您有IndexError,则必须使用以下命令:

相关问题 更多 >