Discord.py移动成员权限



我正在制作一个discord bot,它有一个移动命令,可以将语音通道中的所有成员移动到另一个通道,主要问题是这个命令应该只适用于那些有移动成员权限的人,但它不起作用!即使用户拥有该权限,它也不起作用,而且它总是向我显示错误。这是代码:

def in_voice_channel():
def predicate(ctx):
return ctx.author.voice and ctx.author.voice.channel
return check(predicate)
@in_voice_channel()
@client.command()
@commands.has_permissions(move_members=True)
async def moveall(ctx, *, channel : discord.VoiceChannel):
author_ch = ctx.author.voice.channel.mention
for members in ctx.author.voice.channel.members:
await members.move_to(channel)
await ctx.send(f'Moved everyone in {author_ch} to {channel.mention}!')

此代码中的问题不在于权限设置。@commands.has_permissions(move_members=True)是我们要走的路。

@in_voice_channel()装饰器有什么用?据我所知,这不是来自不和谐。py

更新

在我自己测试之后,即使";移动成员";是正确的权限,取决于不和谐的.py文档,它似乎无法正常工作。

相反,您可以使用另一个检查(如@commands.has_role()(来实现这一点,或者等待错误得到修复。

@commands.has_permissions()检查通道权限,而文本通道没有move_members或mute_members权限。

您要查找的是@commands.has_guild_permissions(),它检查该用户是否具有在服务器范围内移动/静音成员的权限。

这意味着要检查用户是否有move_member,您需要将@commands.has_guild_permissions(move_members=True)放在函数/命令之前。

相关内容

最新更新