Моя справочная команда discord.js не работает точно - PullRequest
0 голосов
/ 10 ноября 2018

Перво-наперво, моя команда справки работает, но не так, как я хотел бы, чтобы она работала.

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

Моя вторая проблема заключается в том, что когда сообщение отправляется в виде встраивания, оно выглядит так:

  • Команда
  • Описание
  • Использование
  • Не определено

Я пробовал несколько способов избавиться от «Undefined».

Мой код:

const fs = require("fs");
const Discord = require("discord.js");

module.exports.run = async(bot, message, args, con) => {
   fs.readdir("./commands/", (err, files) => {
     if(err) console.error(err);

    let jsfiles = files.filter(f => f.split(".").pop() === "js");
    if(jsfiles.length <= 0) {
        console.log("No commands to load!");
        return;
    }

    var namelist = "";
    var desclist = "";
    var usage = "";

    let result = jsfiles((f, i) => {
        let props = require(`./${f}`);
        namelist = props.help.name;
        desclist = props.help.description;
        usage = props.help.usage;

        // send help text
        let helpembed = new Discord.RichEmbed()
        .setTitle("Commands")
        .setFooter("Please report any bugs to Vati#1662")
        .setColor("RANDOM")
        .addField(`**${namelist}** \n${desclist} \n${usage}`)  
        message.author.sendEmbed(helpembed);
    });

   })
  }
    module.exports.help = {
    name: "help",
    description: "shows all commands",
    usage: "help"
    }

1 Ответ

0 голосов
/ 10 ноября 2018

Когда вы используете RichEmbed.addField(), он ожидает как минимум два аргумента: заголовок поля и его значение.

.addField(`**${namelist}** \n${desclist} \n${usage}`) // this has only the title argument

Попробуйте поместить три "секции" в три разных поля.

.addField("Name:", namelist, true) // the 'true' means that they're inline fileds
.addField("Usage:", usage, true) // they will try to fit on the same line
.addField("Description:", desclist) // if there's no third argument, the default is 'false'

Команды отправляются в разных сообщениях, потому что вы запускаете полный код для каждой команды, а не только добавляете поля для каждой команды. Если вы не хотите тратить время на все эти вещи, вы можете использовать библиотеку discord.js-commando: это фреймворк, который работает с командами, а также обрабатывает ошибки, неполные команды и многое другое. Если вы хотите проверить это, вы можете найти документы здесь .

...