Discord.py - Невозможно попробовать / кроме 403: пользователь не принимает DM - PullRequest
0 голосов
/ 19 марта 2020

Я искал повсюду это, но попытка / исключение никогда не работала для меня и приводила ко многим ошибкам. Код состоит в том, чтобы забанить каждого участника с сервера и отправить DM, что сервер был удален. Это работает, но бот останавливается на человеке с ошибкой «Не удается отправить сообщения этому пользователю», и я хотел бы справиться с этим, но всегда получал ошибки вроде: indent expected или expression expected. Код, который я имею без try / catch:

@client.command(pass_context=True)
async def abandon(ctx):
    for member in ctx.guild.members:
        if len(member.roles) < 2:
            await member.send(f"Hello {member.display_name},\n\n" + banreason + banreason2 + banreason3)
            await member.ban(reason="Executed due to deletion of the server. Invite links were sent in DMs.")
            await ctx.send(f"**{member.display_name}** was banned and invite links were sent. :white_check_mark:")
            print(f"Banned {member.display_name} and invite links were sent.")
    print("Banning complete!")

Как мне импортировать правильную скобку try / catch для await member.send?

EDIT: добавлен код с обработкой исключений:

@client.command(pass_context=True)
async def abandon(ctx):
    for member in ctx.guild.members:
        if len(member.roles) < 2:
            try:
            print(f"Debug: Targeted user is {member.display_name}")
            except CommandInvokeError:
            ctx.send(f"{member.display_name}" + resolvedmerror)
            print(f"{member.display_name} was banned with 403 Forbidden exception (No DMs accepted by user)")
            pass
            await member.send(f"Hello {member.display_name},\n\n" + banreason + banreason2 + banreason3)
            await member.ban(reason="Executed due to deletion of the server. Invite links were sent in DMs.")
            await ctx.send(f"**{member.display_name}** was banned and invite links were sent. :white_check_mark:")
            print(f"Banned {member.display_name} and invite links were sent.")
    print("Banning complete!")

1 Ответ

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

У меня просто была проблема с простым форматированием при использовании пробела вместо табуляции. Ха-ха python сверхчувствителен, и я подумал, что что-то нужно, но было только одно нажатие.

...