0
votes

Application bot discord.js

Donc, ce code envoie un DM à un utilisateur pose à l'utilisateur quelques questions mon objectif, puis d'envoyer la demande à un canal spécifique non sûr de savoir comment faire de l'aide, je sais que vous devez vous appeler l'ID de canal mais pas sûr Comment compiler toutes les réponses puis les renvoyer à la chaîne spécifique?

  let userApplications = {}

  bot.on("message", function(message) {
    if (message.author.equals(bot.user)) return;

    let authorId = message.author.id;

    if (message.content === "%apply") {
        console.log(`Apply begin for authorId ${authorId}`);
        // User is not already in a registration process
        if (!(authorId in userApplications)) {
            userApplications[authorId] = { "step" : 1}

            message.author.send("```We need to ask some questions so  we can know a litte bit about yourself```");
            message.author.send("```Application Started - Type '#Cancel' to cancel the application```");
            message.author.send("```Question 1: In-Game Name?```");
        }

    } else {

        if (message.channel.type === "dm" && authorId in userApplications) {
            let authorApplication = userApplications[authorId];

            if (authorApplication.step == 1 ) {
                authorApplication.answer1 = message.content;
                message.author.send("```Question 2: Age?```");
                authorApplication.step ++;
            }
            else if (authorApplication.step == 2) {
                authorApplication.answer2 = message.content;
                message.author.send("```Question 3: Timezone? NA, AU, EU, NZ, or Other? (If other, describe your timezone)```");
                authorApplication.step ++;
            }
            else if (authorApplication.step == 3) {
                authorApplication.answer3 = message.content;
                message.author.send("```Question 4: Do you have schematica?```");
                authorApplication.step ++;
            }

            else if (authorApplication.step == 4) {
                authorApplication.answer4 = message.content;
                message.author.send("```Thanks for your registration. Type %apply to register again```");
                //before deleting, you can send the answers to a specific channel by ID
                bot.channels.cache.get("616852008837709844")
                  .send(`${message.author.tag}\n${authorApplication.answer1}\n${authorApplication.answer2}\n${authorApplication.answer3}\n${authorApplication.answer4});
                delete userApplications[authorId];
            }
        }
    }
  });


}


module.exports.help = {
    name: "app"
}```


1 commentaires

Voulez-vous envoyer les réponses à la chaîne que l'utilisateur a écrit à l'origine % appliquer dans? Ou à un canal spécifique pour vous voir?


3 Réponses :


0
votes

Vous avez un bon départ ici car vous gardez l'état de tous les utilisateurs qui postulent dans un objet userApplications code>. Parce que vous souhaitez conserver les réponses de l'utilisateur, vous pouvez simplement utiliser cet objet d'état - trucs les réponses de l'utilisateur et les utiliser lorsque vous en avez besoin.

Par exemple: P>

bot.on("message", function(message) {
  if (message.author.equals(bot.user)) return;

  let authorId = message.author.id;

  if (message.content === "%apply") {
      console.log(`Apply begin for authorId ${authorId}`);
      // User is not already in a registration process    
      if (!(authorId in userApplications)) {
          userApplications[authorId] = { "step" : 1}

          message.author.send("```We need to ask some questions so  we can know a litte bit about yourself```");
          message.author.send("```Application Started - Type '#Cancel' to cancel the application```");
          message.author.send("```Question 1: In-Game Name?```");
      }

  } else {

      if (message.channel.type === "dm" && authorId in userApplications) {
          let authorApplication = userApplications[authorId];

          if (authorApplication.step == 1 ) {
              authorApplication.answer1 = message.content;
              message.author.send("```Question 2: Age?```");
              authorApplication.step ++;
          }
          else if (authorApplication.step == 2) {
              authorApplication.answer2 = message.content;
              message.author.send("```Question 3: Timezone? NA, AU, EU, NZ, or Other? (If other, describe your timezone)```");
              authorApplication.step ++;
          }
          else if (authorApplication.step == 3) {
              authorApplication.answer3 = message.content;
              message.author.send("```Question 4: Do you have schematica?```");
              authorApplication.step ++;
          }

          else if (authorApplication.step == 4) {
              authorApplication.answer4 = message.content;
              message.author.send("```Thanks for your registration. Type %apply to register again```");
              //before deleting, you can send the answers to a specific channel by ID
              bot.channels.cache.get("CHANNEL_ID_HERE")
                .send(`${message.author.tag}\n${authorApplication.answer1}\n${authorApplication.answer2}\n${authorApplication.answer3}\n${authorApplication.answer4}`);
              delete userApplications[authorId];
          }
      }
  }
});


13 commentaires

Essayer de gérer votre code mais ce n'est pas semblable de travailler


@Jameslewis obtenez-vous une erreur? Avez-vous remplacé canal_id_here avec votre identifiant de canal souhaité?


Oui Erreurs hastebin.com/unosixisad.js C'est mon article entier. Je ne sais pas pourquoi ça ne fonctionne pas.


@Jameslewis Mon réseau bloque ce site. Pouvez-vous modifier les erreurs dans la question ou les ajouter ici comme un commentaire?


@Jameslewis excuses, je viens de repérer un `dans le code. J'imagine que cela causait au moins une de vos erreurs. Sur le .send ligne à la fin, il n'y a pas de fermeture `pour le modèle littéral. Essayez le code édité.


TypeError: Impossible de lire la propriété 'Envoyer' de non défini


@Jameslewis Le canal n'a pas été trouvé. Votre identifiant de canal est incorrect ou le bot n'a pas accès à ce canal.


Mon frère je l'ai eu pour travailler! Merci beaucoup de questions quand même pour formater la réponse de Bot pour ressembler à ceci? IBB.CO/8JCRGWS Si votre PC a bloqué, il est intégré à la question suivie de la réponse des utilisateurs!


@Jameslewis Vous pouvez utiliser les propriétés autoraplication.answer1 via réponse4 Cependant, vous le souhaitez. N'hésitez pas à créer une incorporation et insérez ces propriétés où les réponses doivent apparaître. Si vous rencontrez des problèmes que vous ne pouvez pas comprendre, je vous suggère de poser une autre question. Heureux que vous ayez eu pour travailler!


@Jameslewis Je suggère de poser une nouvelle question pour que les autres puissent lancer. :)


NVM a eu pour travailler merci pour toute l'aide! @klaycon


Une dernière chose s'il vous plaît comment puis-je obtenir l'autorapplication de la propriété.Aswer1 pour s'adapter à une intégration? Ceci est Nott Working .. .addfields ({Nom: 'Question 1', valeur: 'Autoraplication.answer1'},)


@Jameslewis Posting Une réponse n'est pas une invitation à m'utiliser comme une ressource de débogage pendant plusieurs heures, veuillez poser une autre question si vous êtes coincé.



0
votes
  let userApplications = {}

  bot.on("message", function(message) {
    if (message.author.equals(bot.user)) return;

    let authorId = message.author.id;

    if (message.content === "%apply") {
        console.log(`Apply begin for authorId ${authorId}`);
        // User is not already in a registration process
        if (!(authorId in userApplications)) {
            userApplications[authorId] = { "step" : 1}

            message.author.send("```We need to ask some questions so  we can know a litte bit about yourself```");
            message.author.send("```Application Started - Type '#Cancel' to cancel the application```");
            message.author.send("```Question 1: In-Game Name?```");
        }

    } else {

        if (message.channel.type === "dm" && authorId in userApplications) {
            let authorApplication = userApplications[authorId];

            if (authorApplication.step == 1 ) {
                authorApplication.answer1 = message.content;
                message.author.send("```Question 2: Age?```");
                authorApplication.step ++;
            }
            else if (authorApplication.step == 2) {
                authorApplication.answer2 = message.content;
                message.author.send("```Question 3: Timezone? NA, AU, EU, NZ, or Other? (If other, describe your timezone)```");
                authorApplication.step ++;
            }
            else if (authorApplication.step == 3) {
                authorApplication.answer3 = message.content;
                message.author.send("```Question 4: Do you have schematica?```");
                authorApplication.step ++;
            }

            else if (authorApplication.step == 4) {
                authorApplication.answer4 = message.content;
                message.author.send("```Thanks for your registration. Type %apply to register again```");
                //before deleting, you can send the answers to a specific channel by ID
                bot.channels.cache.get("616852008837709844")
                  .send(`${message.author.tag}\n${authorApplication.answer1}\n${authorApplication.answer2}\n${authorApplication.answer3}\n${authorApplication.answer4});
                delete userApplications[authorId];
            }
        }
    }
  });


}


module.exports.help = {
    name: "app"
}```

1 commentaires

Là nous allons ceci est mon code exact que je reçois des erreurs!



0
votes

Je crée ce bot d'application discord.js, mais je souhaite ajouter plus de commandes pour les applications. Par exemple, je veux une commande! Apply1 et commande! Apply2. Lorsque je copie le code, collez-la à nouveau, modifiez le nom de la commande et tapez la commande, elle envoie deux ou trois questions au lieu d'une. Que devrais-je changer?

Si vous n'avez pas compris et que vous ne voulez pas vérifier ce que je parle de rejoindre ce faux serveur de discordement: HTTPS: // discord.gg/fvsqaa6 (il envoie 2 questions par heure, je souhaite envoyer 1 par 1. Aussi, il envoie les réponses au même canal pour les deux, j'ai vérifié si l'ID de canal est correct et est.)


0 commentaires