Команда динамической справки discord.js

#javascript #node.js #asynchronous #discord #discord.js

#javascript #node.js #асинхронный #Discord #discord.js

Вопрос:

В настоящее время я создаю бота discord, но у меня есть проблема. Я все еще новичок в discord.js и node.js . Это мой код:

 module.exports.run = async (bot, message, args) => {
 function getMenu() {
  var hpmenu = {};
  return new Promise(function(resolve, reject) {
   dashboard.readServerBoundValue(
    `${message.guild.id}`,
    'PREFIX',
    async function(output) {
     if (output) {
      var prefixxx = output;
     } else {
      var prefixxx = config.botPrefix;
     }
     //=====================================================================================================
     fs.readdir('./src/commands/', (err2, files2) => {
      files2.forEach((f2, i2) => {
       hpmenu[f2] = new discord.MessageEmbed();
       hpmenu[f2].setTitle(`${f2}`);
       console.log('Added catagory '   f2);
       //=========================================================================================
       fs.readdir(`./src/commands/${f2}`, (err, files) => {
        files.forEach((f, i) => {
         const cmd = f.replace('.js', '');
         hpmenu[f2].addField(cmd, 'test');
         console.log('Added command '   cmd);
         //=====================================================================================================
        });
        resolve(hpmenu);
       });
      });
     });
    }
   );
  });
 }

 async function main() {
  var output = await getMenu();
  message.channel.send(output['developer']);
 }
 main();
};
  

В этом коде нет ошибок, но это проблема, с которой я сталкиваюсь:

использование

Проблема в том, что она запускает основную функцию до завершения getMenu функции. Как это решить? Я прочитал несколько сообщений об этом. Спасибо всем за чтение!

Ответ №1:

После большого количества кодирования я достиг своей цели; Создание динамического меню справки с нумерацией страниц. Это код:

https://pastebin.com/QGVfutti

Он работает хорошо. Единственное, что вам нужно, это создать файл с именем config.json в корневом каталоге бота, где index.js находится и добавьте ключ с именем «embedColor», поместите ваши команды в

./src/commands/CATAGORY/COMMAND.js

и это результат:

введите описание изображения здесь

извините за плохой английский. Обратите внимание, что если вы используете его, вам все равно придется самостоятельно реализовать префикс и описание, это зависит от обработчика команд и ядра базы данных. Вы можете изменить код описания и имя команды в строке 19 в pastebin. если вам нужно изображение, вы можете добавить новую строку после строки 13:

 hmu[i].setImage("IMAGE");
  

Это просто вставка discord, и она будет работать нормально, добавлять эскизы, авторов и изменять, как вам нравится. Вам не нужно доверять мне, если вы используете его

Извините за мой плохой английский и спасибо Lioness100 за редактирование текста. Английский не мой родной язык 🙂 Всем хорошего дня, пока!