Nano Hash - криптовалюты, майнинг, программирование

Discord.js Применяете систему?

В настоящее время я пишу систему приложений для своего бота Discord.

Система выглядит так:

Вы реагируете на сообщение и получаете сообщение через DM, затем он задает около 5 вопросов (1 вопрос, пользователь пишет ответ, затем следует следующий и т. Д.) В конце должно быть сообщение Спасибо за вашу заявку. Затем бот должен отправить ответы в канал на моем Discord, но отсортированные по вопросам.

What is your name (question 1):

I'm blah blah blah

How old are you (question 2):

Second Answer

...

после этого должна быть система реагирования, то есть вы нажимаете реакцию, бот дает кандидату роль и удаляет сообщение, но это происходит потом.

Теперь о проблеме. Мне удается отреагировать на сообщение, и человек получает DM, но как написать вопросы во встроенном сообщении, а затем отправить их по каналу, как описано выше?

Это текущий код:

bot.on("messageReactionAdd", async (reaction, user) => {
    let message = reaction.message,
        emoji = reaction.emoji;
    if (emoji.name == "????") {
        if (reaction.message.partial) await reaction.message.fetch();
        if (user === bot.user) return;
        reaction.users.remove(user);


user.send("Welcome to your Application")

const questions = [                    
    "What is your name?",                  
    "How old are you?",                  
    "Question 3?",  
    "Question 4?"            
  ];                                     
  
  const applying = [];

  bot.on("message", async message => {
    if (message.author.bot) return;
  
      if (applying.includes(message.author.id)) return;
  
      try {
        console.log(`${message.author.tag} began applying.`);
  
        applying.push(message.author.id);
        await message.channel.send(":pencil: **Application started!** Type `#cancel` to exit.");
  
        for (let i = 0, cancel = false; i < questions.length && cancel === false; i++) {
          await message.channel.send(questions[i]);
          await message.channel.awaitMessages(m => m.author.id === message.author.id, { max: 1, time: 300000, errors: ["time"] })
            .then(async collected => {

                application[questions[i]] = collected.first().content

              if (collected.first().content.toLowerCase() === "#cancel") {
                await message.channel.send(":x: **Application cancelled.**");
                applying.splice(applying.indexOf(message.author.id), 1);
                cancel = true;

                console.log(`${message.author.tag} cancelled their application.`);
              }
            }).catch(async() => {
              await message.channel.send(":hourglass: **Application timed out.**");
              applying.splice(applying.indexOf(message.author.id), 1);
              cancel = true;
  
              console.log(`${message.author.tag} let their application time out.`);
            });
        }
  
        await message.channel.send(":thumbsup: **You're all done!**")
        

        await console.log(`${message.author.tag} finished applying.`);
      } catch(err) {
        console.error(err);
      }
      


      let embed = new Discord.MessageEmbed()    
    .setColor('#1D1D1D') 
    .setAuthor('New Application',)
    .addField("What is your name?", `${}`)
    .addField("How old are you?", `${}`)
    .addField("Question 3", `${}`)
    .addField("Question 4", `${}`)
    .addField("Datum:", message.createdAt.toLocaleString())
    
      let sChannel1 = message.guild.channels.cache.get("721515009871577089")
      sChannel1.send(embed)
 
     

  });








        }     
    }
);

  • Пожалуйста, покажите текущий код. 16.07.2020
  • Добавляю текущий Код; D 16.07.2020

Ответы:


1

Вам следует взглянуть на событие MessageCollector в Discord.js. Эта статья может быть вам полезна.

Не путайте с ReactionCollector и реакцией на смайлики - это разные вещи

После этого вы должны как-то хранить данные (ответы) пользователя, например, в своей БД.

Кроме того, чтобы отправить встроенное сообщение с ответами, вы должны знать точный идентификатор вашего канала или запросить его с сервера / гильдии Discord с помощью _ 3_.

Кроме того, ваш бот должен иметь возможность (иметь разрешение) отправлять сообщения по этому каналу.

Пример отправки сообщения для Discord ~ ​​v11:

//inside async/await function
    let embed = new MessageEmbed();
    embed.setTitle("Test")
    await message.channel.send(embed );

Полезные встроенные генераторы можно найти здесь или здесь

16.07.2020
  • Спасибо, попробую позже! 16.07.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..