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

如何在discord.js v14中获取创建的工单频道ID

解决Discord.js v14创建工单频道后无法获取ID并发送消息的问题

问题根源是interaction.guild.channels.create是异步操作,你没有用await等待它执行完成,导致ticketchannel只是一个Promise对象,而非实际的频道实例,因此无法获取ID和发送消息。

修改后的完整代码如下:

const { EmbedBuilder, PermissionsBitField } = require("discord.js")

module.exports = {
    data: {
        name: 'panelbutton'
    },
    async execute(interaction, client) {
        client.config = require('../../config');

        // 关键:给create方法添加await,等待频道创建完成
        const ticketchannel = await interaction.guild.channels.create({
            name: `${interaction.user.username}`,
            permissionOverwrites: [
                {
                    id: interaction.guild.id,
                    deny: [PermissionsBitField.Flags.ViewChannel]
                },
                {
                    id: interaction.user.id,
                    allow: [PermissionsBitField.Flags.ViewChannel, PermissionsBitField.Flags.SendMessages],
                    deny: [PermissionsBitField.Flags.UseApplicationCommands]
                }
            ]
        });

        // 现在可以正常获取频道ID并发送消息
        await ticketchannel.send({
            content: `${interaction.user},您的工单频道已创建,请在这里描述您的问题。`
        });

        const wait = new EmbedBuilder()
            .setTitle('Created! :white_check_mark:')
            .setDescription(`您的频道已创建:<#${ticketchannel.id}>`)
            .setTimestamp(Date.now())
            .setFooter({
                text: client.config.bot.footer
            });

        await interaction.reply({
            embeds: [wait], ephemeral: true
        });
    }
}

核心修改说明:

  • 给channels.create添加await关键字,确保频道完全创建后再执行后续逻辑
  • 新增向新频道发送初始化消息的代码,同时在回复Embed中通过<#${ticketchannel.id}>实现频道提及,方便用户快速跳转

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:18:41