Discord.Py создать приватный канал - PullRequest
0 голосов
/ 17 июня 2020

Я бы хотел делать приватные каналы через моего бота, но у меня ошибка. Вот мой код:

@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 Ответ

1 голос
/ 17 июня 2020

В вашем коде есть несколько мелких ошибок. Но причина ошибки в последней строке. У имени роли нет идентификатора, здесь требуется объект роли. 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...