我正在尝试检查是否启用了该小部件以避免HTTP错误(404)。但是,即使查看API参考,我也找不到方法。你能帮我么?谢谢。
答案 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错误,这可能比使用前面介绍的功能更好和更快。