【问题标题】:Creating a category in discordpy with permissions that only a specific role can join and type in在不和谐中创建一个只有特定角色才能加入和输入的权限的类别
【发布时间】:2020-09-20 14:12:28
【问题描述】:

希望创建一个只有特定角色(在同一命令中)才能看到的具有文本和语音通道的类别...这是我到目前为止所拥有的,但在添加权限时我有点迷茫类别..

@bot.command(pass_context=True)
@commands.has_permissions(kick_members=True)
async def createfriendgroup(ctx, role_name):
    guild = ctx.guild
    await guild.create_category(role_name)
    category = discord.utils.get(ctx.guild.categories, name = role_name)
    await guild.create_role(name = role_name)
    await guild.create_text_channel(f"{role_name}-private-tc", category = category, sync_permissions=True)
    await guild.create_voice_channel(f"{role_name}-private-vc", category = category, sync_permissions=True)

所以我已经创建了类别、文本和语音通道(两者都具有同步权限),但现在知道如何在类别内设置权限,所以任何帮助都会非常棒!谢谢!

【问题讨论】:

    标签: python discord.py discord.py-rewrite


    【解决方案1】:

    您有 2 个选项,CategoryChannel.set_permissionsCategoryChannel.edit

    1. set_permissions()
    @bot.command()
    @commands.has_permissions(kick_members=True)
    async def createfriendgroup(ctx, role_name):
        guild = ctx.guild
        category = await guild.create_category(role_name)
        role = await guild.create_role(name = role_name)
        await category.set_permissions(role, read_messages=True, send_messages=True, connect=True, speak=True)
        await category.set_permissions(ctx.guild.default_role, read_messages=False, connect=False)
        await guild.create_text_channel(f"{role_name}-private-tc", category = category, sync_permissions=True)
        await guild.create_voice_channel(f"{role_name}-private-vc", category = category, sync_permissions=True)
    
    1. 使用覆盖
    @bot.command()
    @commands.has_permissions(kick_members=True)
    async def createfriendgroup(ctx, role_name):
        guild = ctx.guild
        category = await guild.create_category(role_name)
        role = await guild.create_role(name = role_name)
        overwrites = {
                        ctx.guild.default_role: discord.PermissionOverwrite(read_messages=False, connect=False),
                        role: discord.PermissionOverwrite(read_messages=True, send_messages=True, connect=True, speak=True)
                      }
        await category.edit(overwrites=overwrites)
        await guild.create_text_channel(f"{role_name}-private-tc", category = category, sync_permissions=True)
        await guild.create_voice_channel(f"{role_name}-private-vc", category = category, sync_permissions=True)
    

    【讨论】:

    • 非常感谢!这样就真的搞清楚了如何使用overwrights和category.set_permissions,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2022-01-24
    • 2022-01-14
    • 2020-07-02
    • 2018-12-29
    • 2020-12-17
    • 2020-10-16
    相关资源
    最近更新 更多