提问者:小点点

应用程序Bot discord.js


所以这段代码发送一个DM给用户,问用户一些问题,然后我的目标是将应用程序发送回一个特定的通道,不知道怎么做,有什么帮助吗,我知道你必须使用通道id,但不知道如何编译所有的答案,然后将它们发送回特定的通道?


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 ) {
              message.author.send("```Question 2: Age?```");
              authorApplication.step ++;
          }
          else if (authorApplication.step == 2) {
              message.author.send("```Question 3: Timezone? NA, AU, EU, NZ, or Other? (If other, describe your timezone)```");
              authorApplication.step ++;
          }
          else if (authorApplication.step == 3) {
              message.author.send("```Question 4: Do you have schematica?```");
              authorApplication.step ++;
          }

          else if (authorApplication.step == 4) {
              message.author.send("```Thanks for your registration. Type %apply to register again```");
              delete userApplications[authorId];
          }

      }
  }


});```

共2个答案

匿名用户

module.exports.run=异步(bot,message,args)=>; {

让userApplications={}

bot.on(“message”,function(message){if(message.author.equals(bot.user))返回;

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”}

匿名用户

您在这里有了一个良好的开端,因为您在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("CHANNEL_ID_HERE")
                .send(`${message.author.tag}\n${authorApplication.answer1}\n${authorApplication.answer2}\n${authorApplication.answer3}\n${authorApplication.answer4}`);
              delete userApplications[authorId];
          }
      }
  }
});

您可以对此进行许多简单,即时的改进-例如,将答案存储在数组中,而不是单独的属性中。 但是在不了解您的经验水平的情况下,我不会介绍您可能不容易理解的代码。

相关问题