提问者:小点点

是否有可能在与discord.py不一致的情况下更改特定用户的权限


我在做一个黑手党游戏机器人在Python上的不和。我是编程的初学者,我遇到了一个问题。当我在创建一个游戏时,我的机器人制作了一个有三个频道的类别:一个为每个人准备的文字频道,一个为每个人准备的语音频道,以及一个专门为黑手党玩家准备的文字频道。然后机器人给每个玩家一个带有游戏号的角色。问题是我想让黑手党聊天只对黑手党可见。我不想为它做一个单独的角色,因为如果有人检查玩家的角色,它将是可见的。

有没有一种方法可以编辑一个频道的权限,使它只有某一组人会看到这个频道。你可以用手做,但我没有找到用机器人做的方法。


共1个答案

匿名用户

下面的示例显示了如何编辑特定用户的权限:

@bot.command()
async def togglechat(ctx, member: discord.Member):
    perms = ctx.channel.overwrites_for(member)
    await ctx.channel.set_permissions(member, read_messages=not perms.read_messages)
    await ctx.send(f"Successfully toggled {member.name}'s view of this channel!")

默认情况下,成员的值很可能被设置为none,并且切换成员的通道视图几次,逻辑上如下所示:

>>> view = None
>>> view = not view
>>> view
True
>>> view = not view
>>> view
False
>>> view = not view
>>> view
True

您还可以根据它们接收的角色将其设置为特定值(true/false);

perms.read_messages = True # or False

您还可以使用ctx.guild.default_role编辑@Everyth的频道视图。这意味着您可以将他们的频道视图设置为false,然后将黑手党成员的频道视图编辑为true

参考资料:

  • textchannel.set_permissions()
  • TextChannel.Overwrites_for()
  • guild.default_role