Discord.py如何检查小部件是否已禁用

时间:2020-03-06 16:44:20

标签: discord.py discord.py-rewrite

我正在尝试检查是否启用了该小部件以避免HTTP错误(404)。但是,即使查看API参考,我也找不到方法。你能帮我么?谢谢。

2 个答案:

答案 0 :(得分:0)

尽管我通常建议您使用,除非没有特定错误,但在使用urllibs HTTPError时它将忽略该异常。如果该窗口小部件已禁用,则应显示“禁止访问:403错误”,而不是404。

由于您没有提供任何代码或示例,所以我只写了一条小命令,该命令返回公会的小部件是否可用。

@bot.command()
async def check_widget(ctx):
    try:
        widget = await ctx.guild.widget()
        ctx.send("Widget Available!")
    except:
        await ctx.send("Widget unavailable!")

答案 1 :(得分:0)

Discord重写没有检查小部件是否在线的选项。为了进行检查,最终检查是否可以得到有效的响应。因此,为了仍然能够进行检查,您需要尝试使用该小部件来检查它是否在线。

每当收到HTTP错误时,您就知道它处于脱机状态(或无法运行)。

我建议创建一个简单的函数来检查它是否在线:

# Checks if the widget is online by 
# trying to access the widget through a guild object.
async def widget_is_online(guild):
    try:
        # or a function that needs online functionality
        await guild.widget()
        return True
    except:
        return False

这也是一个好主意。是在尝试使用小部件的位置使用try-except。其中except捕获http错误异常。为了防止http错误,这可能比使用前面介绍的功能更好和更快。