Quería crear un comando de rol en discord.js v13.6, pero... No puede leer la línea al agregar un rol. Da el error Typescript: Cannot read properties of null (reading "add") . ¿Cómo lo soluciono?
exports.run = async (client, message, args) => { const ms = require("ms"); //!tempmute @user 1s/m/h/d let tomute = message.mentions.users.first(); if (!tomute) return message.reply("Couldn't find user."); let muterole = message.guild.roles.cache.find(role => role.name === "admin"); //start of create role if (!muterole) { try { muterole = await message.guild.roles.create({ name: "admin", color: "#ff0000", permissions: [] }) message.guild.channels.cache.forEach(async (muterole, id) => { await muterole.overwritePermissions({ ADMINISTRATOR: true }) }); } catch (e) { console.log(e.stack); } } await (tomute.roles.add(muterole)); message.reply(`<@${tomute.id}> стал админом`); } let tomute = message.mentions.users.first(); Esto devuelve un objeto de usuario que no tiene administrador de roles. Necesita un objeto de miembro del gremio para poder acceder a los roles que se pueden obtener al reemplazar a users con members en el fragmento anterior
let tomute = message.mentions.members.first();lee sobre esto aquí
En lugar de usar
let tomute = message.mentions.users.first();Usar
let tomute = message.mentions.members.first();También puedes usar
let tomute = message.guild.members.cache.get(args[0]) //to use its IDO incluso usarlo a la vez
let tomute = message.mentions.members.first() || message.guild.members.cache.get(args[0]) como mencionó Arnav. El uso del user devuelve un objeto de usuario que no tiene administrador de roles.