首页 > 解决方案 > 返回未定义的消息通道名称

问题描述

您好我正在尝试获取我创建的频道的频道名称。但是,我觉得undefined我创建的频道不存在,它确实存在。

这是我的代码:

const new_channel = message.guild.channels.create("New Name").then((channel) => {
  channel.setParent(categoryId)
  channel.setTopic(topic)
})

message.channel.send(`Ticket created in ${new_channel}`);

我在这里做错了什么?

标签: javascriptnode.jsdiscord.js

解决方案


new_channel不是GuildChannel你刚刚创建的。它是一个Promise<GuildChannel>. 换句话说,它“有希望”它可以为您提供一个文本频道,并在通过创建频道后将其提供给您.then

基本上,在 Discord 中创建文本频道需要一些时间。Discord.js 必须向 Discord API 发送请求,等待 Discord 创建通道,然后获取 Discord API 的响应。只有这样,Discord.js 才会为您提供您创建的文本通道的数据。因此我们使用.then(); 一旦创建了通道,只有这样,里面的代码.then()才会被执行。

至于为什么new_channel未定义,可能是因为您没有在.then(). 因此,没有进一步的承诺。

因此,您的问题的解决方案是引用包含创建通道的实际变量;channel传递给你的参数.then()。这是一个例子:

const new_channel = message.guild.channels.create("New Name").then((channel) => {
  channel.setParent(categoryId);
  channel.setTopic(topic);

  message.channel.send(`Ticket created in ${channel.name}`);
})

如您所见,您的代码已经设置了 的父级和主题channel,而不是new_channel. 因此,从逻辑上讲,通道的名称也在 in channel,而不是new_channel.


推荐阅读