Help with present users with a questionnaire and assign roles and notes based on answers

I have a heuristic that I want guild users to walk through when they first join the server (and also for users who haven’t complete this stage yet). The purpose of this is to assign roles and notes for users.

For new users it goes like this:

  • The user joins the channel.
  • A new channel is created for him where only he has permission to view it (and of course the bot).
  • The bot will present him with a sequence of questions.
  • The bot will not continue to the next question in line until a valid expected answer is received.
  • The use will present with a final question regards the rules and has to react on a V reaction.
  • When the user answered every question and reacted with the approval this channel will get deleted and now the user is “free” to do whatever he likes.

What I have for now:

bot.on('guildMemberAdd', member => {
    const name = member.user.username + ' Questionnaire';
    member.guild.channels.create(name, {
        type: 'text',
        permissionOverwrites: [
            {
                id: member.guild.roles.everyone.id,
                deny: ['VIEW_CHANNEL'],
            },
            {
                id: member.user.id,
                allow: ['VIEW_CHANNEL'],
            },
        ],
    }).then(channel => {
        channel.send('Hello ' + member.user.username + '!')
            .then(message => console.log(`Sent message: ${message.content}`))
            .catch(console.error);
    }).catch(console.error);
});

My issues thus far:

I create a new channel and prevent @everyone from viewing this channel.
Then I permit the new user to view his channel. (not sure if that’s the correct way to do so).

I also want to move the new user into this newly created channel immediately.

I present him with a greeting message.
Now I need to walk him through the set of questions. Any idea of what’s the best way to do so? I’m new to JS and Discord.js so all I can think of is something like Channel.send(x).then(if (Validate(y)) Channel.send(z))) etc?

Any help would be appreciated.