discord - 无法读取未定义的属性“添加”,不和谐添加角色
问题描述
所以我决定开始制作一个非常简单的 Discord 机器人,如果不同的成员具有相同的角色,它应该给一个成员一个角色,
例如;
第一个人:我有被感染的角色
人 2:我没有被感染的角色。
第 2 个人:@Person1 等等等等
现在第 2 个人应该接收到受感染的角色,但不会发生这种情况,而且我无法找到修复它的方法。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
console.log("rerararararrederasd")
var infectionStarted = true; client.on("message", message => {
if (infectionStarted) {
try{ let role = message.guild.roles.cache.find(r => r.name === 'infected');
client.users.cache.get(message.mentions.members.first().id).roles.add(role);}catch(e){console.log(e)};
}
});
client.login('my discord bots token ofc goes here i just removed for stackoverflow');
但是在控制台中我得到了这个问题报告:
at Client.emit (events.js:196:13)
at MessageCreateAction.handle (/rbd/pnpm-volume/ec7e49f1-7b76-4ef8-9653-1982138496c7/node_modules/.registry.npmjs.org/discord.js/12.3.1/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (/rbd/pnpm-volume/ec7e49f1-7b76-4ef8-9653-1982138496c7/node_modules/.registry.npmjs.org/discord.js/12.3.1/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (/rbd/pnpm-volume/ec7e49f1-7b76-4ef8-9653-1982138496c7/node_modules/.registry.npmjs.org/discord.js/12.3.1/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
at WebSocketShard.onPacket (/rbd/pnpm-volume/ec7e49f1-7b76-4ef8-9653-1982138496c7/node_modules/.registry.npmjs.org/discord.js/12.3.1/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
at WebSocketShard.onMessage (/rbd/pnpm-volume/ec7e49f1-7b76-4ef8-9653-1982138496c7/node_modules/.registry.npmjs.org/discord.js/12.3.1/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
at WebSocket.onMessage (/rbd/pnpm-volume/ec7e49f1-7b76-4ef8-9653-1982138496c7/node_modules/.registry.npmjs.org/ws/7.3.1/node_modules/ws/lib/event-target.js:125:16)
at WebSocket.emit (events.js:196:13)
at Receiver.receiverOnMessage (/rbd/pnpm-volume/ec7e49f1-7b76-4ef8-9653-1982138496c7/node_modules/.registry.npmjs.org/ws/7.3.1/node_modules/ws/lib/websocket.js:797:20)
TypeError: Cannot read property 'add' of undefined
这可能很明显,但我不知道如何解决这个问题,如果你能帮助我,我将非常感激,谢谢!
解决方案
编辑:
我建议更好地构造你的代码以及解构你的变量。
问题是
client.users.fetch()
返回的 auser
不像 amember
没有角色。因此它为什么返回undefined
client.on("message", message => {
const infectionStarted = true
const role = message.guild.roles.cache.find(r => r.name === 'infected')
// have 'member' = the mentioned member
const member = message.mentions.members.first()
// If there was a mention, add the role to the mentioned
if (member) {
// Instead of fetching the user through Discord, I add the role directly to the member object like this
member.roles.cache.add(role)
}
}
推荐阅读
- aws-amplify - 是否可以在 Firebase 上托管 Flutter Web 应用程序,同时使用 AWS amplify 的数据存储和 cognito?
- c# - 在数据库优先项目中使用 Microsoft 标识
- web-config - 将 Web.Config 中的 URL 重写规则从 page?v=data 更改为 /page/data 而无需重定向
- c# - 如何从 lambda 表达式中提取自定义属性值?
- swift - 如何在 ScrollView 中保存缩放视图
- html - 如何解决从 observable 获取数据的问题
- python - 如何限制我的服务器一次只接受一个客户端套接字连接?
- pattern-matching - 球拍图案匹配套装
- kotlin - 无法将 ArrayList 保存到 sharedpreferences
- javascript - 使用电子邮件链接登录会在 Web 应用程序上出现无效模式错误