I would like to send a message to all channels that are in all servers that are called “labycheck-shop” at 12 midnight. I have already tried this but it did not work:
cron.schedule('0 0 * * *', () => { const channel = client.channels.cache.find(ch => ch.name === 'labycheck-shop'); channel.send('test') })``` // (cron is node-cron)
Advertisement
Answer
This feature can turn out to be spammy on the Discord API, so you might want to keep that in mind
I believe that you might be wanting to use
<Collection>.filter
instead of<Collection>.find
. The find function in the Discord.js Collections works pretty much like<Array>.find
, which returns the first result it gets true for. So what you’ll want to do is, use<Collection>.filter
to filter the guilds of that name, and then Loop through the array and send the message.
So kinda like this
cron.schedule('0 0 * * *', () => { client.channels.cache.filter((ch) => ch.name === "labycheck-shop").forEach((channel) => channel.send("Ding dong it's 12 AM")); });
That’s how it should work out, I also checked the cron expression, and that looks fine as well