我正在为Python上的Discord制作黑手党游戏机器人。我是编程的初学者,遇到了问题。在创建游戏时,我的机器人makes a category with three channels: a text channel for everyone, a voice channel for everybody, and a text channel specifically for mafia players.会向每个玩家赋予一个角色,其中包含游戏编号。问题是我想让黑手党聊天仅对黑手党可见。而且我不想为此单独扮演角色,因为如果有人检查玩家的角色,这将是可见的。
是否可以通过某种方式编辑频道的权限并进行设置,以使只有特定人群才能看到该频道。 You can do that by hand,但我没有设法找到一种通过机器人来实现的方法。
答案 0 :(得分: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
编辑@everyone
的频道视图。这意味着您可以将他们的频道视图设置为False
,然后将黑手党成员的频道视图编辑为True
。
参考: