在特定类别中创建频道(类别 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 的常见情况是:

机器人无法“看到”对象 传递的 id 无效(ID 是整数,而不是字符串) 对象不在缓存中或机器人未登录。

一种可能的解决方案是使用 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

如何在 NativeScript 中创建具有动态行数和列数的表?

在 ListView 中创建类别?