Выходит ошибка Cannot read property '1' of undefined | NodeJs

94
29 апреля 2021, 10:20
const commands = [];
const Discord = require("discord.js");
const client = new Discord.Client();
client.login("token"); 
 client.on('message', async (message) => {
    const command = commands.find(x => x[0].test(message.content));
    await command[1](message);
});
const cmd = {
    hear: (p, f) => {
        commands.push([p, f]);
    }
}

cmd.hear(/^(?:привет)$/i, async (message) => {
    message.reply(`Привет`)
});

При обработке команды "привет" выходит ошибка:Cannot read property '1' of undefined Понимаю, что 1 - не найдено. А как исправить данную ошибку, понять не могу.

Answer 1

Бот реагирует на абсолютно ВСЕ сообщения, кем-либо отправленные. Следовательно, чтобы бот не реагировал на свои сообщения необходимо добавить незамысловатую проверку: if (message.author.bot) return;

Сама ошибка вылетает уже после отправки ответа бота, т.к. команда не найдена. Чтобы ошибка не вылезала, необходимо тоже сделать проверку: if (!command) return;

Исправленный код:

const commands = [];
const Discord = require("discord.js");
const client = new Discord.Client();
client.login("token"); 
client.on('message', async (message) => {
    const command = commands.find(x => x[0].test(message.content));
    if (message.author.bot) return;
    if (!command) return;
    await command[1](message);
});
const cmd = {
    hear: (p, f) => {
        commands.push([p, f]);
    }
}
cmd.hear(/^(?:привет)$/i, async (message) => {
    message.reply(`Привет`)
});
READ ALSO
Обработка нажатия на кнопку в Alert (ReactJS + vkui) [дубликат]

Обработка нажатия на кнопку в Alert (ReactJS + vkui) [дубликат]

Cтолкнулся с проблемой, при открытии Alert меню в моём приложении, я не могу обработать нажатия кнопки в немСам алерт:

91
Универсальная AJAX-функция

Универсальная AJAX-функция

Нужна функция function getAjax(url,params), которая принимала бы аргументы: url(url get-запроса), массив данных params и возвращала бы массив или объект или строку...

97