首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Discord.Py创建私有频道

Discord.Py创建私有频道
EN

Stack Overflow用户
提问于 2020-06-17 17:31:28
回答 1查看 1K关注 0票数 0

我想通过我的机器人做私人频道,但我弄错了。下面是我的代码:

代码语言:javascript
运行
复制
@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'

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-17 21:20:04

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

代码语言:javascript
运行
复制
@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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62425838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档