Неправильно выводит данные команда eval (Бот на discord.js)
Тут у меня такая проблема. Я смог реализовать команду eval без всяких посторонних пакетов. Команда работает хорошо, идеально отображает ошибки в случае если она обнаружена. Но есть одна проблема с которой я столкнулся.

Вот как реализована команда:
const Discord = module.require("discord.js");
const fs = require("fs");
const {MessageEmbed} = require("discord.js");
module.exports.run = async (bot,message,args) => {
message.react("?");
if (message.deletable) {
message.delete({timeout: 10000});
}
let embed = new MessageEmbed();
const owner = "ID";
const trusted = ["ID", "ID"];
if (owner.includes(!message.author.id) || trusted.includes(!message.author.id)) {
embed.setDescription(`This command is only allowed for <@!ID>, <@!ID> and <@!ID>!`);
embed.setColor(0xff0000);
return message.channel.send(embed).then(message => message.delete({timeout: 10000}));
} else if (!args[0]) {
embed.setDescription("You need to evaluate **something**!");
embed.setColor(0xff0000)
return message.channel.send(embed).then(message => message.delete({timeout: 10000}));
} else if (owner.includes(message.author.id)) {
try {
var code = args.join(" ");
var evaled = eval(code);
embed.setColor(0x131359);
embed.setTimestamp();
embed.setFooter(bot.user.username, bot.user.displayAvatarURL);
embed.setTitle("[Owner] Eval results");
embed.addField("Input:", `\`\`\`js\n${code}\n\`\`\``, true);
embed.addField("Output:", `\`\`\`js\n${evaled}\`\`\``, true);
message.channel.send(embed).then(message => message.delete({timeout: 10000}));
} catch (error) {
embed.setColor(0x131359);
embed.setTitle("\:x: Error!");
embed.setDescription(error);
embed.setFooter(bot.user.username, bot.user.displayAvatarURL);
message.channel.send(embed).then(message => message.delete({timeout: 10000}));
}
return;
} else if (trusted.includes(message.author.id)) {
try {
var code = args.join(" ");
var evaled = eval(code);
embed.setColor(0x131359);
embed.setTimestamp();
embed.setFooter(bot.user.username, bot.user.displayAvatarURL);
embed.setTitle("[Trusted] Eval results");
embed.addField("Input:", `\`\`\`js\n${code}\n\`\`\``, true);
embed.addField("Output:", `\`\`\`js\n${evaled}\`\`\``, true);
message.channel.send(embed).then(message => message.delete({timeout: 10000}));
} catch (error) {
embed.setColor(0x131359);
embed.setTitle("\:x: Error!");
embed.setDescription(error);
embed.setFooter(bot.user.username, bot.user.displayAvatarURL);
message.channel.send(embed).then(message => message.delete({timeout: 10000}));
}
return;
} else {
return;
}
};
module.exports.help = {
name: "eval",
aliases: []
};
Можете подсказать из-за чего это может быть и можно ли это как-то исправить?
Ответы (1 шт):
Контекста маловато... Судя по-всему, Вас не устраивает, что отображается в Output? Если так - то это всего лишь отображение Promis`а. Т.е. у Вас есть какая-то асинхронная функция. Пускай test
const test = new Promise(.....
Так вы пытаетесь с помощью output вывести test(); Когда необходимо
test().then(function(_результат_выполнения_промиса_) { _обработка результата_выполнения_ })
Или объявить функцию, в которой вызывается этот промис асинхронный с помощью ключевого слова async А после, с помощью ключевого слова await дождаться результата выполнения промиса
const result = await test();