javascript - 返回未定义的消息通道名称
问题描述
您好我正在尝试获取我创建的频道的频道名称。但是,我觉得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}`);
我在这里做错了什么?
解决方案
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
.
推荐阅读
- haskell - 在 Haskell 中实现 Prim 算法
- kubernetes - 多次安装单个 Kubernetes 部署
- php - 使用一个键注册多个对象是最佳实践吗?
- ios - Swift:是否有更快、更灵敏的方式来为 UIView 实现不同的角半径?
- java - 卡车中最大单位的贪婪方法
- c - 加入气泡的算法
- mysql - MYSQL,这不断弹出错误 SQL 查询:MySQL 说:文档 #1054 - '字段列表'中的未知列 'id_D10'
- android-studio - 由于“getDay()”已被弃用,如何从 Date 对象中获取日期?
- flutter - 如何处理 google_sign_in on flutter for error NoSuchMethodError: The getter 'authentication' was called on null?
- python - 使用 matlib.plot 绘制二维图形