如何通过discord.py在新创建的分类中创建子频道并获取分类ID
解决方案
你调用的await ctx.guild.create_category("bot commands")异步方法执行完成后,会直接返回刚创建完成的分类频道对象,你只需要用变量接住这个返回值,就能直接获取ID、或是直接用来关联新建的子频道,完全不需要额外通过分类名称检索ID。
示例代码
# 接收创建分类后返回的分类对象 new_category = await ctx.guild.create_category("bot commands") # 如需获取分类ID,直接读取对象的id属性即可 category_id = new_category.id # 可以把ID打印出来确认,或者用于其他业务逻辑 print(f"已创建分类,ID为:{category_id}") # 创建子频道时直接把分类对象传给category参数,就能自动归入该分类下 # 创建文本子频道示例 await ctx.guild.create_text_channel("使用说明", category=new_category) # 创建语音子频道示例 await ctx.guild.create_voice_channel("讨论频道", category=new_category)
注意事项
之前通过分类名称抓取ID容易报错的核心原因是:
- 服务器内可能存在多个同名分类,检索时会命中错误的目标
- 分类刚创建时缓存可能还未同步,通过名称检索会返回空值
- 分类名称如果包含特殊字符、emoji,检索时匹配逻辑容易出问题
直接拿创建方法返回的对象是最稳定、性能最好的实现方式。
内容的提问来源于stack exchange,提问作者KipZonderKop101
相关产品推荐
相关产品推荐

