在特定类别中创建频道(类别 id 应该是可变的) discord.py
Posted
技术标签:
【中文标题】在特定类别中创建频道(类别 id 应该是可变的) discord.py【英文标题】:Creating a channel in specific category (the category id is should be variable) discord.py 【发布时间】:2021-09-15 00:25:45 【问题描述】:maincategory = discord.utils.get(guild.categories, id=858441350667698190)
所以这是正常的方法,但我想通过提供变量来做到这一点:
wanted_category_id = 858441350667698190
maincategory = discord.utils.get(guild.categories, id=wanted_category_id)
但是当我print(maincategory)
它说None
我该怎么做?
【问题讨论】:
你是如何得到分类的ID的? 尝试打印guild
【参考方案1】:
category = bot.get_channel(wanted_category_id)
brand_new_channel = await category.create_text_channel( # There's also create_voice_channel and create_stage_channel.
channel_name, # channel_name should be "general", not "#general".
# The rest are optional.
overwrites= # Used for custom channel permissions and private channels.
guild.default_role: discord.PermissionOverwrite(
send_messages=False # By default, members can't send messages...
),
guild.me: discord.PermissionOverwrite.from_pair(
discord.Permissions.all(), # But the bot has all permissions enabled...
discord.Permissions.none() # And none disabled!
)
,
reason='Because I can' # This shows up in the audit logs.
)
await brand_new_channel.send('Ooh boy! A shiny new channel!')
重要部分:
await category.create_text_channel(channel_name)
【讨论】:
【参考方案2】:你可以这样做
c = discord.utils.get(ctx.guild.categories, id=ID) # Gets the category.
await ctx.guild.create_text_channel(name="whatever", category=c)
【讨论】:
【参考方案3】:如果其他人遇到同样的问题:
导致utils.get
或任何get_x
方法返回None
的常见情况是:
一种可能的解决方案是使用 fetch_x
方法,该方法调用 API 以提取相关对象(无论它是否在缓存中)。
wanted_category_id = 858441350667698190
category = await bot.fetch_channel(wanted_category_id)
Bot.fetch_channel
【讨论】:
以上是关于在特定类别中创建频道(类别 id 应该是可变的) discord.py的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MongoDB 在 Prisma ORM 中创建类别及其子类别
如何在类别中创建 UITableViewCell 明智地排列 JSON 对象
Discord - 使用 python 显示来自特定类别的频道名称
DSharpPlus 如何在 C# 中创建或设置不和谐频道到 NSFW