Creating a cooldown system that works individually per user and not for the command itself

While said above, you should probably use StackOverflow for this type of question, here is how I would approach this and create a queue command, assuming you’re using tmi.js.

This works because block can be an object of User IDs with blocking states.

if (message.toLowerCase() == '!joinqueue') {

    if (!block[user['user-id']]) {
            
        client.say(channel, `@${user.username}, Joined The Queue!`);
        queue.push(`${user.username}`);

        block[user['user-id']] = true;

        setTimeout(() => {
            delete block[user['user-id']];
        }, (60 * 10000));
        
    } else {
        client.say(channel, `@${user.username} Please Wait Before Doing This Command Again`);
    }
}