Así que tengo este extraño problema. Estoy tratando de validar que la identificación del canal existe en el gremio y, si es así, quiero que haga algo. Pero simplemente no puedo hacer que funcione.
Normalmente bot.channels.cache.get(args[0]) devolvería toda la información del canal, pero por alguna razón siempre devuelve undefined y no entiendo por qué. (Esto fue escrito en Discord.JS 1.12.5, no en la última versión)
const mongoDB = require("../../utility/mongodbFramework"); const Discord = require("discord.js"); const bot = new Discord.Client(); module.exports = { name: "welcome", aliases: ["setwelcome", "welcome"], description: "Server config", args: true, maxArgs: 2, minArgs: 2, cooldown: 1, permissions: "ADMINISTRATOR", usage: "<channelId> <message>", async execute(message, args) { const { guild } = message; if (!bot.channels.cache.get(args[0])) return message.channel.send( "Send a valid channel ID. (You can use the `.id` command. Or you could use the Discord developer tools)" ); const channelId = args[0]; args.shift(); welcomeMessage = args.join(" "); await mongoDB.setWelcome(guild.id, channelId, welcomeMessage); message.channel.send(`Channel ID: ${guild.id}, message: ${welcomeMessage}`); }, };El problema es que tu bot no es con el que has iniciado sesión, por lo que su caché siempre estará vacía. Intenta obtener al cliente de tu message :
const mongoDB = require('../../utility/mongodbFramework'); module.exports = { name: 'welcome', aliases: ['setwelcome', 'welcome'], description: 'Server config', args: true, maxArgs: 2, minArgs: 2, cooldown: 1, permissions: 'ADMINISTRATOR', usage: '<channelId> <message>', async execute(message, args) { const { client, guild } = message; const channelId = args[0]; if (!client.channels.cache.get(channelId)) return message.channel.send( 'Send a valid channel ID. (You can use the `.id` command. Or you could use the Discord developer tools)', ); args.shift(); const welcomeMessage = args.join(' '); await mongoDB.setWelcome(guild.id, channelId, welcomeMessage); message.channel.send(`Channel ID: ${guild.id}, message: ${welcomeMessage}`); }, }; PD: también podría intentar fetch el canal por su ID en lugar de confiar en el caché:
const channelId = args[0]; const channel = await client.channels.fetch(channelId); if (!channel) return message.channel.send( /* ... */)