如何在单个命令中将角色与通道关联?如何获得角色ID?

时间:2019-11-03 12:40:05

标签: python discord.py

我有一个根据用户传递的参数创建频道和角色的命令。我努力以仅创建角色有权访问创建频道的方式来覆盖权限。

如何从角色名称获取角色ID?这样可以解决问题。我尝试使用utils.get,但我不知道如何真正使用此功能...

这是我的代码:

@bot.command() 
@commands.has_permissions(administrator=True)
async def salon_create(ctx, arg):   
    guild = ctx.guild
    role = await guild.create_role(name=arg)
    print(role)
    cat=ctx.channel.category 
    role=discord.utils.get(guild.roles, name=arg)
    print(role)
    roles = {
    guild.default_role: discord.PermissionOverwrite(read_messages=False),
    #guild.get_role(role): discord.PermissionOverwrite(read_messages=True)
}
    await guild.create_text_channel(name=arg, overwrites=roles, category=cat)

1 个答案:

答案 0 :(得分:0)

create_role返回其创建的Role对象,您可以直接使用它:

@bot.command() 
@commands.has_permissions(administrator=True)
async def salon_create(ctx, arg):   
    guild = ctx.guild
    role = await guild.create_role(name=arg)
    cat=ctx.channel.category 
    roles = {
    guild.default_role: discord.PermissionOverwrite(read_messages=False),
    role: discord.PermissionOverwrite(read_messages=True)
    }
    await guild.create_text_channel(name=arg, overwrites=roles, category=cat)