Discord.py как проверить, отключен ли виджет - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь проверить, включен ли виджет, чтобы избежать ошибок HTTP (404). Но я не могу найти способ, даже глядя на ссылку API. Не могли бы вы мне помочь? Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 марта 2020

Перезапись диска не позволяет проверить, находится ли виджет в сети. Для того, чтобы проверить это, в конце концов проверяется, можете ли вы получить действительный ответ. Таким образом, чтобы по-прежнему иметь возможность проверять, вам нужно что-то попробовать с виджетом, чтобы проверить, находится ли он в сети.

Всякий раз, когда вы получаете ошибку 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

Что-то, что также является хорошей идеей. Это использовать попробовать, кроме как в месте, где вы пытаетесь использовать виджет. Где исключение ловит исключение ошибки http. Это, вероятно, лучше и быстрее, чем использование функции, описанной ранее, для предотвращения ошибок http.

0 голосов
/ 07 марта 2020

Хотя я бы вообще не советовал использовать, кроме как без указанной ошибки c, он игнорирует исключение при использовании urllibs HTTPError. Если виджет отключен, вы должны получить ошибку Forbidden: 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!")
...