我的代码禁止成员并对其进行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)
我也再次尝试过,它可以在另一个用户上使用,但仍然不能在其他两个用户上使用。
如果发生任何错误,权限错误也会立即消失,我仍然在控制台上看到FORBIDDEN错误,并且两个成员都没有阻止该漫游器。
答案 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发送给用户。