Python Discord.py при создании TextChannel перезаписывает ошибку - PullRequest
0 голосов
/ 09 июля 2020

введите описание изображения здесь

код, вызывающий ошибку:

overwrites = {
    guild.default_role: discord.PermissionOverwrite(read_messages=False),
    admin_role: discord.PermissionOverwrite(read_messages=True),
    client.get_user(MessageManager["TextChannels"][z]["personID"]): 
    discord.PermissionOverwrite(read_messages=True)
}
guild_category = discord.utils.get(guild.categories, id=orders_category_ID)
    
channel = await guild.create_text_channel(name = idorder, category=guild_category ,overwrites=overwrites)

Все работало хорошо, и мне пришлось перезапустить бота, и теперь его показывая эту ошибку. Может ли это быть проблемой с версией discord.py?

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Итак, я нашел решение:

Решение правильное, но неполное. В исходной версии, вызывающей ошибку, канал создается сразу с назначенными правами, что немного ускоряет выполнение программы. Второй вариант не такой быстрый, так как все операции по редактированию канала занимают некоторое время. Ждем дополнительных ответов, так как ошибка появилась только с сегодняшнего дня, и неизвестно, чем она вызвана.

0 голосов
/ 09 июля 2020

Итак, я нашел решение:

channel = await guild.create_text_channel(name = idorder, category=guild_category)# ,overwrites=overwrites)
    ### guild.default_role ###
    overwrite = discord.PermissionOverwrite()
    overwrite.read_messages = False
    await channel.set_permissions(guild.default_role, overwrite=overwrite)
    
    ### admin_role ###
    overwrite = discord.PermissionOverwrite()
    overwrite.read_messages = True
    await channel.set_permissions(admin_role, overwrite=overwrite)
    
    ### the worker ###
    overwrite = discord.PermissionOverwrite()
    overwrite.read_messages = True
    await channel.set_permissions(client.get_user(MessageManager["TextChannels"][z]["personID"]), overwrite=overwrite)

нам нужно сделать это вместо приведенного выше кода, если это помогло кому-то оставить свой голос; D

...