discord.errors.Forbidden:FORBIDDEN(状态码:403):试图使dmordord成员失恋

时间:2018-07-24 06:30:55

标签: python python-3.x discord discord.py

我的代码禁止成员并对其进行dms处理,我在服务器上的3个不和谐成员上进行了测试,这些成员没有任何角色,只有其中一个获得dm,其余都没有。

这是错误:

discord.errors.Forbidden: FORBIDDEN (status code: 403): Missing permission...

这是我的代码:

@client.command(pass_context = True)
@has_permissions(ban_members = True)
async def ban(ctx, member : discord.Member, *, content: str = ("10")):
    if content == ("10"):
        print ("oof")
    else:
        if member.top_role < ctx.message.author.top_role:
            msg = "{} has been banned for {}".format(member, content)
            await client.ban(member)
            await client.send_message(member, "You have been banned for {}".format(content))
            await client.send_message(ctx.message.channel, msg)
        else:
            msg = "Sorry but you do not have the permissions {} as {} is a higher role than you".format(ctx.message.author.mention)
            await client.send_message(ctx.message.channel, msg)

我也再次尝试过,它可以在另一个用户上使用,但仍然不能在其他两个用户上使用。

enter image description here

如果发生任何错误,权限错误也会立即消失,我仍然在控制台上看到FORBIDDEN错误,并且两个成员都没有阻止该漫游器。

2 个答案:

答案 0 :(得分:1)

这可能是因为用户阻止了机器人,或者他们没有共享共同的服务器。

权限错误是因为您很可能执行了类似于以下的命令>

@client.event
async def on_error(ctx, error):

    ctx.send("Sorry, but you do not have the permissions")

该命令使得当出现任何错误时,发布此消息:“抱歉,您没有权限”。

如果您只想在出现权限错误时执行此操作,我建议您将该命令更改为以下内容:

@client.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
        await ctx.send(":redTick: You don't have permission to use this command.")
    else:
        await ctx.send("An error has occured, it has been logged in the bot terminal.  
        Please check if you have typed in the correct command.")
        raise error

享受你的一天!

答案 1 :(得分:0)

除非僵尸程序将用户带到共同的服务器中,或者将DM功能放置在实际的bot.ban之前,否则您将无法将DM发送给用户。