我正在为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,但我没有设法找到一种通过机器人执行此操作的方法。
这是一个示例,显示了您如何编辑特定用户的权限:
@bot.command()
async def togglechat(ctx, member: discord.Member):
perms = ctx.channel.overwrites_for(member)
perms.update(read_messages=not perms.read_messages)
await ctx.channel.set_permissions(member, overwrite=perms)
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
。
参考:
TextChannel.set_permissions()
TextChannel.set_permissions()
TextChannel.overwrites_for()