【发布时间】:2020-12-04 00:13:57
【问题描述】:
代码如下:
const mutedRole = message.guild.roles.cache.find(role => role.name === "Muted");
if (!mutedUser) return message.channel.send()
if (!message.author) return;
if (!mutedRole) {
message.guild.roles.create({
data: {
name: 'Muted',
color: '#6C877C',
permissions: ["CREATE_INSTANT_INVITE", "VIEW_CHANNEL"],
},
})
.catch(console.error);
}
mutedUser.roles.add(mutedRole).catch(console.error);
当我运行机器人时,我得到了错误:
2020-08-14T05:22:08.731213+00:00 app[Worker.1]: TypeError: Cannot read property 'add' of undefined
2020-08-14T05:22:08.731236+00:00 app[Worker.1]: at Object.execute (/app/commands/mute.js:69:29)
2020-08-14T05:22:08.731236+00:00 app[Worker.1]: at Client.<anonymous> (/app/bread.js:111:14)
2020-08-14T05:22:08.731238+00:00 app[Worker.1]: at Client.emit (events.js:315:20)
2020-08-14T05:22:08.731239+00:00 app[Worker.1]: at MessageCreateAction.handle (/app/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
2020-08-14T05:22:08.731241+00:00 app[Worker.1]: at Object.module.exports [as MESSAGE_CREATE] (/app/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
2020-08-14T05:22:08.731242+00:00 app[Worker.1]: at WebSocketManager.handlePacket (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
2020-08-14T05:22:08.731242+00:00 app[Worker.1]: at WebSocketShard.onPacket (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:436:22)
2020-08-14T05:22:08.731242+00:00 app[Worker.1]: at WebSocketShard.onMessage (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
2020-08-14T05:22:08.731243+00:00 app[Worker.1]: at WebSocket.onMessage (/app/node_modules/ws/lib/event-target.js:125:16)
2020-08-14T05:22:08.731244+00:00 app[Worker.1]: at WebSocket.emit (events.js:315:20)
如代码所示,我添加了机器人将扮演角色的部分,就像角色不可用时一样。但是,它仍然认为该角色永远不存在。
在复制之前,我也写了这样的代码:
if (!mutedRole) {
guild.roles.create({
data: {
name: 'Muted',
color: '#6C877C',
permissions: ["CREATE_INSTANT_INVITE", "VIEW_CHANNEL"],
},
})
.catch(console.error);
}
结果还是一样。 我还将机器人的角色放在我的测试服务器上所有角色的最顶端。谁能找出原因?
我目前正在使用 discord.js v12 和稳定版本的 node。
注意:完整代码在这里:https://github.com/centralomd/breadbot/blob/master/commands/mute.js
【问题讨论】:
-
mutedUser定义在哪里?
标签: javascript node.js bots discord.js typeerror