Hice un comando para DM el rol.
Puedes ver mi código aquí:
const { Client, Message, MessageEmbed } = require('discord.js'); // const { join } = require('path'); module.exports = { name: 'dm-role', /** * @param {Client} client * @param {Message} message * @param {String[]} args */ run: async(client, message, args) => { if (!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send("admin only lol") if (!args[0]) return message.channel.send("where's the role?") const role = message.mentions.roles.first() message.guild.roles.cache.get(role.id).members.forEach(member => member.send(args.slice(1).join(" "))) if(!role) return message.channel.send("where's the role?") const reason = args.slice(1).join(" ") if(!reason) return message.channel.send("the message ?"); try { await role.send(reason); return message.channel.send("done"); } catch { return message.channel.send("failed"); } } }Alguien en el rol bloqueó mi bot, así que recibí un error como este
throw new DiscordAPIError(request.path, data, request.method, res.status); ^ DiscordAPIError: Cannot send messages to this userSolo quiero saber cómo puedo superar el error, y el bot sigue enviando mensajes directos a las personas que no han bloqueado el bot.
Puede usar el método .catch(...) en la función .send(...) .
Ejemplo:
role.send(reason).catch((error) => console.log(error));Ejemplo completo:
run: async(client, message, args) => { if (!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send("admin only lol") if (!args[0]) return message.channel.send("where's the role?") const role = message.mentions.roles.first() message.guild.roles.cache.get(role.id).members.forEach(member => member.send(args.slice(1).join(" "))) if (!role) return message.channel.send("where's the role?") const reason = args.slice(1).join(" ") if (!reason) return message.channel.send("the message ?"); try { // Attempt to send the message, if failed log the error and continue await role.send(reason).catch(error => console.log(error)) return message.channel.send("done"); } catch { return message.channel.send("failed"); } }