动态帮助命令discord.js

时间:2020-09-26 09:43:01

标签: javascript node.js asynchronous discord discord.js

我目前正在制造一个不和谐的机器人,但是我遇到了一个问题。我对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();
};

此代码没有任何错误,但这是我遇到的问题:

the issuse

问题在于它在完成getMenu函数之前先运行main函数。 如何解决呢?我已经阅读了多篇有关此的文章。感谢您阅读大家!

1 个答案:

答案 0 :(得分:0)

经过大量编码,我达到了我的目标;通过分页制作动态帮助菜单。 这是代码:

https://pastebin.com/QGVfutti

功能不错。您唯一需要做的是在index.js所在的漫游器的根目录中创建一个名为config.json的文件,并添加一个名为“ embedColor”的键,将命令放入

./ src / commands / CATAGORY / COMMAND.js

这是结果:

enter image description here

对不起,英语不好。请注意,如果使用它,您仍然必须自己实现前缀和描述,这取决于每个命令处理程序和数据库引擎。 您可以在pastebin中的第19行更改描述代码和命令名称。如果您需要图像,可以在第13行之后添加新行:

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

它只是不和谐的嵌入,可以正常工作,添加缩略图,作者并根据您的喜好进行更改。如果您使用它,就不必相信我

对不起,我的英语不好,也谢谢Lioness100编辑文本。英语不是我的母语:)大家再见!