Задать вопрос
@mandiyama

Ошибка undefined и NaN при выполнение команды в Discord.js?

Сделал слэш команду которая выполняет при помощи библиотеки systeminformation чтобы она выдавала информацию про озу, название процессора, ОС и т.п, но вот не задача, команда работает но выдает ошибки undefined и NaN

Вот код который написал
const { SlashCommandBuilder } = require('discord.js');
const si = require ( 'systeminformation' )

module.exports = {
    data: new SlashCommandBuilder()
        .setName('uptime')
        .setDescription('Получает информацию об ОЗУ, процессоре и нагрузке ядер).'),
    async execute(interaction) {
        let osInfo = si.osInfo();
        let cpuInfo = si.cpu();
        let cpuLoad = si.currentLoad();
        let memInfo = si.mem();
        return interaction.reply({content: `**Информация о системе:**
- Операционная система: ${osInfo.platform} ${osInfo.distro}
- Версия ядра: ${osInfo.kernel}
- Архитектура процессора: ${cpuInfo.arch}
- Название процессора: ${cpuInfo.manufacturer} ${cpuInfo.brand}
- Количество ядер: ${cpuInfo.cores}
- Загрузка ЦП: ${cpuLoad.currentload}%
- Использование ОЗУ: ${((memInfo.used / memInfo.total) * 100).toFixed(2)}%
- Общий объем ОЗУ: ${Math.round(memInfo.total / 1024 / 1024)} MB`
            });
        },
    };


Версия Node.js - v20.5.0
Версия Discord.js - v14.13.0
652b0072ec6af347215345.png
  • Вопрос задан
  • 56 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
Alexandre888
@Alexandre888 Куратор тега discord.js
Javascript-разработчик
в документации к библиотеке показано, что .osInfo(), .cpu(), .currentLoad() и .mem() — это промисы.
652b0a6ae29a1045791538.png
результатом обычного указания si.osInfo() в коде будет объект Promise.
объект Promise не содержит свойств platform, distroи kernel, которые вы пытаетесь получить.
при попытке получить доступ к несуществующему свойству объекта результатом будет undefined.

то же самое касается и других —si.cpu(), si.currentLoad() и т.д.

касательно последних двух строк: любые математические операции с undefined будут давать NaN.

вывод: сначала учим язык, а потом только пишем ботов и всё остальное — никак не наоборот.

https://learn.javascript.ru/promise-basics
https://learn.javascript.ru/async-await
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы