我有 5 个文本频道和 2 个语音频道。从频道到频道,我想为这些频道授予 4 个单独角色的权限。
text_channel_name = ['server-gateway', 'chatroom', 'gameplay-map', 'spectator-chat', 'log', 'staff-room']
voice_channel_name = ['player-voicechat','spectator-voicechat']
role_name = ['Mediator', 'Player', 'Ghost', 'Spectator'] # (not including admin role)
我希望我的频道设置如下:
频道名称 | 说明 |
---|---|
服务器网关 | 即使是第一次进入的人也可以看到这个频道。 |
聊天室 | 任何有角色的人都可以进入这个房间并在这里聊天。 |
游戏地图 | 任何有角色的人都可以看到这一点,但只有有“中介”和“玩家”的角色才能在这里写东西。 |
观众聊天 | 只有具有“幽灵”和“旁观者”角色的人才能访问 |
日志,员工室 | 只有服务器管理员可以访问此频道 |
玩家语音聊天 | 只能被具有“中介”或“玩家”角色和管理员的人访问 |
旁观者语音聊天 | 只能被具有“幽灵”或“旁观者”角色和管理员的人访问 |
我应该如何在 discord.py 上像这样设置我的频道?我给了 'Mediator'
角色所有权限,除了管理服务器和管理角色权限。我是否必须取消某些权限才能使我的计划生效?
编辑:有人建议在为我的机器人制作新服务器时使用服务器模板,但从长远来看,我认为这不是可行的解决方案。我想让我的机器人获得尽可能少的帮助,所以我希望我的机器人在进入新服务器时自动运行设置过程。我剩下的工作是为不同渠道指定不同角色的权限以按预期工作。
我想问的是我可以用来为一个频道批量指定角色权限的格式(最好是同时在多个频道上运行的代码行)
答案 0 :(得分:0)
如果您需要的频道集始终相同,您很可能希望在您的机器人加入的每个公会中创建自己的频道集,并具有预设权限。
频道是公会的属性,因此您可以在其中找到管理它们的方法,请查看:
API Reference 中的示例:
overwrites = {
guild.default_role: discord.PermissionOverwrite(read_messages=False),
guild.me: discord.PermissionOverwrite(read_messages=True)
}
channel = await guild.create_text_channel('secret', overwrites=overwrites)
编辑: 这是一个使用旁观者聊天的简单功能示例,如注释中所示
#!/usr/bin/env python3
import discord
from discord.ext import commands
class Setup(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_guild_join(self, guild):
perms = discord.Permissions()
perms.update(read_messages=True)
names = ['ghost', 'spectator']
overwrites = {
guild.default_role: discord.PermissionOverwrite(read_messages=False),
guild.me: discord.PermissionOverwrite(read_messages=True)
}
for n in names:
role = await guild.create_role(name=n, permissions=perms)
overwrites[role] = discord.PermissionOverwrite(read_messages=True)
await guild.create_text_channel('spectator-chat', overwrites=overwrites)