javascript - 为什么 `msg.mentions.users.first` 会导致 TypeError `member.roles.map is not a function`?
问题描述
我想做一个列出用户当前角色的命令。
但是当我尝试member.roles.map(roles => `${roles}`).join(', ')
or时message.member.roles.map(role => role.name).slice(1).join(", ")
,它会抛出这个错误:
TypeError: member.roles.map is not a function
at Object.exports.run (c:\Users\Flo\Desktop\Discord_Bot\commands\test.js:18:42)
at Client.<anonymous> (c:\Users\Flo\Desktop\Discord_Bot\index.js:32:14)
at Client.emit (c:\Users\Flo\Desktop\Discord_Bot\lib\events.js:388:22)
at MessageCreateAction.handle (c:\Users\Flo\Desktop\Discord_Bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (c:\Users\Flo\Desktop\Discord_Bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (c:\Users\Flo\Desktop\Discord_Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (c:\Users\Flo\Desktop\Discord_Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (c:\Users\Flo\Desktop\Discord_Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (c:\Users\Flo\Desktop\Discord_Bot\node_modules\ws\lib\event-target.js:132:16)
at WebSocket.emit (node:events:376:20) {stack: 'TypeError: member.roles.map is not a function…6)
at WebSocket.emit (node:events:376:20)', message: 'member.roles.map is not a function'}
这是创建此错误的代码:
let user;
if (msg.mentions.users.first()) {
user = msg.mentions.users.first();
} else {
user = msg.author;
}
解决方案
从 v12 开始,您需要在 guild#members.cache 和 client#users.cache 等管理器之前添加 .cache。您所要做的就是在 .map 之前添加 .cache 就可以了!
在此处阅读更多信息: https ://discordjs.guide/additional-info/changes-in-v12.html
推荐阅读
- angular - 如何使用 rxjs 操作符修改 Observable 值?
- android - 使用 Unity-ARKit 插件创建 Android AR 应用
- html - 我无法正确定位导航栏的某个项目
- rx-java2 - `Flowable.interval`和阻塞链没有`MissingBackpressureException`异常
- sql - 用于汇总特定时间段内(ID内)行中的值的SQL查询?
- apache-spark - 通过数组列加入 Dataframe
- java - 从 JSP 页面检索 JSON 时无法获取正确的字符
- software-design - 打破里氏替换原则
- css - 如何使用 CSS 更改 Ionic 4 中的工具栏颜色
- database - 从 .bcp 文件中获取信息