#Fetch user from different shard (without being in the same guild)

1 messages · Page 1 of 1 (latest)

sand tinsel

I'm working on a notification function to send DM user . But I read some information online that using .broadcastEval() may result in multiple messages will be send if that user is currently in cache of multiple shards.

So in my current implementation, I'm using cron job running on shard manager to check when to send user a DM and picking random shard to send it like this:

Code in shard manager

            const totalShard = manager.totalShards;
            const rngShard = getRandomInt(totalShard);
            manager.broadcast({ name: 'dmUser', id: id, msg: msg, shard: rngShard });```

Code in client

process.on('message', async function(m) {
//...
if (m.name === 'dmUser') {
// Check if this shard is the one assigned to dm user
if (client.shard.ids[0] === Number(m.shard)) {
const user = await client.users.fetch(m.id);
if (!m.msg || m.msg === '') {
return;
}
await user.send(m.msg);
}
}
}```

but my bot is still in development and don't have enough user to spawn multiple shards yet, so I have no way to test if my shard can fetch and DM that user without being in the same guild as them