You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改discord.py工单命令,使其在指定分类下创建频道?

如何将Discord工单频道创建到指定分类下?

要实现将工单频道创建到指定分类中,核心是在调用create_text_channel方法时,新增category参数指定目标分类对象。以下是具体修改步骤和完整代码:

关键修改点

  1. 获取目标分类对象:可以通过分类ID(更稳定)或分类名称两种方式获取
  2. 创建频道时指定分类:在create_text_channel中添加category参数

修改后的完整代码

@bot.command()
async def support(ctx, *, reason = None):
    guild = ctx.guild
    user = ctx.author
    await ctx.message.delete() # 删除用户的命令消息

    # 获取目标分类(二选一即可)
    # 方式一:通过分类ID获取(替换为你的实际分类ID)
    target_category = guild.get_channel(123456789012345678)
    # 方式二:通过分类名称获取(替换为你的实际分类名称)
    # target_category = next((cat for cat in guild.categories if cat.name == "工单专区"), None)

    # 检查分类是否存在,避免报错
    if not target_category:
        await ctx.send("未找到指定的工单分类,请检查配置!", delete_after=5)
        return

    overwrites = {
        guild.default_role: discord.PermissionOverwrite(read_messages=False),
        user: discord.PermissionOverwrite(read_messages=True, send_messages=True)
    }
    # 创建频道时指定分类
    channel = await guild.create_text_channel(
        f'Ticket {user}', 
        overwrites=overwrites,
        category=target_category  # 核心:指定分类
    )
    await channel.send(f"{user.mention}")
    supem = discord.Embed(title=f"{user} 创建了工单", description= "", color=0x00ff00)
    supem.add_field(name="工单原因", value=f"``{reason or '未填写'}``")
    supem.set_footer(text=f"工作人员很快会为你提供帮助")
    await channel.send(embed=supem)

说明

  • 推荐使用分类ID方式获取分类,因为分类名称可能被修改,而ID是服务器内固定不变的
  • 添加了分类不存在的判断逻辑,避免因配置错误导致命令报错
  • 若使用名称匹配方式,next()函数会返回第一个匹配名称的分类,若没有匹配则返回None

内容的提问来源于stack exchange,提问作者Bailey Norris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:31:03