Discord.js v12 角色添加到提到的用户问题

Discord.js v12 Role add to mentioned user problem

所以我正在尝试制作一个像 $roletested @user 这样的命令,它应该给用户提到的特定角色。我收到错误 called:_“无法读取未定义的 属性 'roles'...请帮帮我,这是我的代码 :D

    if (message.content.startsWith(prefix + "roletested")) {
        let testedUser = message.mentions.members.first()
        if (!message.member.hasPermission('MANAGE_ROLES')) return message.channel.send('You do not have that permission! :x:').then(message.react(':x:'));
        if(!testedUser) return message.channel.send("You have to mention the person you want to assign the role to!").then((declineMsg) => { message.react('❌');
            declineMsg.delete({timeout: 5000});
            let testedRole = message.guild.roles.cache.find(role => role.id === "724676382776492113");
            testedUser.roles.add(testedRole);
            message.channel.send("Added the role `TESTED` to user.")
        })}})

您的代码已修复

  if (message.content.startsWith(prefix + "roletested")) {
    if (!message.member.hasPermission('MANAGE_ROLES')) return message.channel.send('You do not have that permission! :x:').then(message.react(':x:'))

    let testedRole = message.guild.roles.cache.get('724676382776492113');
    let testedUser = message.mentions.members.first();
    if(!testedUser) return message.channel.send("You have to mention the person you want to assign the role to!").then((declineMsg) => { message.react('❌')
    declineMsg.delete({timeout: 5000});
    });
    
    testedUser.roles.add(testedRole);
    message.channel.send("Added the role `TESTED` to user.")
  }

我修复了你的代码:

  • 我整理了一些东西(代码是一样的,我只是改变了一些东西)
  • 你不能用message.guild.roles.cache.find(...)所以我改成了message.guild.role.cache.get('Role ID')

来源:Link

代码:

    if (message.content.startsWith(prefix + 'roletested')) {
        const testedUser = message.mentions.members.first();
        if (!message.member.hasPermission('MANAGE_ROLES')) return message.channel.send('You do not have that permission! :x:').then(message.react(':x:'));
        if (!testedUser) {
            message.channel.send('You have to mention the person you want to assign the role to!').then(declineMsg => {
                message.react('❌');
                declineMsg.delete({ timeout: 5000 });
                return;
            });
        }
        const testedRole = message.guild.roles.cache.get('395671618912780289');
        testedUser.roles.add(testedRole);
        message.channel.send('Added the role `TESTED` to user.');
    }

我在我的机器人上测试了这段代码,它按预期工作。