Discord.py-无法尝试/ 403除外:用户不接受DM

时间:2020-03-19 13:13:50

标签: bots discord discord.py

我一直在到处寻找这个问题,但是try / except从来没有为我工作过,并给我带来了多个错误。该代码是禁止服务器上的每个成员并向DM发送该服务器已被删除的信息。它可以正常工作,但是该机器人停在一个错误为“无法向该用户发送消息”的人身上,我想对其进行处理,但始终会收到诸如indent expectedexpression 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!")

如何在await member.send周围导入正确的try / catch括号?

编辑:添加了带有异常处理的代码:

@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 :(得分:0)

我只是通过使用空格而不是制表符来解决简单的格式问题。哈哈python过于敏感,我认为需要一些东西,但只需要按一下即可。