Discord.Py创建私人频道

时间:2020-06-17 09:31:28

标签: python discord.py

我想通过我的机器人建立私人渠道,但我有一个错误。这是我的代码:

@client.command(name='create', help="Créer un salon privé")
@commands.has_permissions(manage_channels=True, manage_roles=True)
async def create(ctx, *, nom_de_salon):
    guild = ctx.guild
    role = nom_de_salon
    await guild.create_role(name=role)
    member : ctx.author
    autorize_role = get(guild.roles, name=role)
    overwrites = {
        guild.default_role: discord.PermissionOverwrite(read_messages=False),
        guild.me: discord.PermissionOverwrite(read_messages=True),
        autorize_role: discord.PermissionOverwrite(read_messages=True)
    }
    await guild.create_text_channel(nom_de_salon, overwrites=overwrites)
    await client.add_role(member, role)

这是错误: Command raised an exception: AttributeError: 'NoneType' object has no attribute 'id'

谢谢

1 个答案:

答案 0 :(得分:1)

您的代码中有一些小错误。但是错误的原因在最后一行。角色名称没有ID,此处需要角色对象。 discord.Role 我已经更正了您的代码,因此可以正常工作。

@client.command(name='create', help="Créer un salon privé")
@commands.has_permissions(manage_channels=True, manage_roles=True)
async def create(ctx, *, nom_de_salon):
    guild = ctx.guild
    role = nom_de_salon
    autorize_role = await guild.create_role(name=role)
    overwrites = {
        guild.default_role: discord.PermissionOverwrite(read_messages=False),
        guild.me: discord.PermissionOverwrite(read_messages=True),
        autorize_role: discord.PermissionOverwrite(read_messages=True)
    }
    await guild.create_text_channel(nom_de_salon, overwrites=overwrites)
    await ctx.author.add_roles(autorize_role)