Я искал повсюду это, но попытка / исключение никогда не работала для меня и приводила ко многим ошибкам. Код состоит в том, чтобы забанить каждого участника с сервера и отправить 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!")