Discord. js Ошибка вставки Невозможно отправить пустое сообщение - PullRequest
1 голос
/ 19 июня 2020

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

Вот код

const Discord = require('discord.js');
const { prefix } = require('../config.json');

module.exports = {
  name: 'help',
  description: 'List all of my commands or info about a specific command.',
  aliases: ['commands', 'cmds'],
  usage: '[command name]',
  cooldown: 5,
  execute(msg, args) {

    const data = [];
    const { commands } = msg.client;

    if (!args.length) {

        const helpEmbed = new Discord.MessageEmbed()
            .setColor('YELLOW')
            .setTitle('Here\'s a list of all my commands:')
            .setDescription(commands.map(cmd => cmd.name).join('\n'))
            .setTimestamp()
            .setFooter(`You can send \`${prefix}help [command name]\` to get info on a specific command!`);

        msg.author.send(helpEmbed);

        return msg.author.send(data, { split: true })
            .then(() => {
                if (msg.channel.type === 'dm') return;
                msg.reply('I\'ve sent you a DM with all my commands!');
            })
            .catch(error => {
                console.error(`Could not send help DM to ${msg.author.tag}.\n`, error);
                msg.reply('it seems like I can\'t DM you! Do you have DMs disabled?');
            });
    }

    const name = args[0].toLowerCase();
    const command = commands.get(name) || commands.find(c => c.aliases && c.aliases.includes(name));

    if (!command) {
        return msg.reply('that\'s not a valid command!');
    }

    data.push(`**Name:** ${command.name}`);

    if (command.aliases) data.push(`**Aliases:** ${command.aliases.join(', ')}`);
    if (command.description) data.push(`**Description:** ${command.description}`);
    if (command.usage) data.push(`**Usage:** ${prefix}${command.name} ${command.usage}`);

    data.push(`**Cooldown:** ${command.cooldown || 3} second(s)`);

    msg.channel.send(data, { split: true });
 },
};

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Проблема в том, что указано в ошибке. Вы пытаетесь отправить куда-то пустое сообщение.

Вы можете попробовать заменить msg.channel.send(data) на msg.channel.send(data.join('\n')), так как переменная data является массивом.

Я не понимаю, почему однако отправка массива не работает.

0 голосов
/ 19 июня 2020

Вы должны попробовать заменить эту строку: msg.channel.send(data, { split: true });

на msg.channel.send(data.join(' '), { split: true });, поскольку ваша переменная данных является массивом, а не строкой

...