I am using Discord.js and I have no idea how to get the value out of a Promise. Here is some context:
///File: commands/mail.js///
module.exports = {
name: 'mail',
description: 'A system of collecting, sending, and receiving mail',
async execute(client,message, args) {
const fs = require('fs');
...
...
switch(args[0]){
...
case "check":
...
var name;
var val;
/* [object Promise]--> */ var out = client.users.fetch(recipient.senders[i]);
client.users.fetch(recipient.senders[i]).then((name)=>{
console.log("name.username(inside): "+name.username);
val = name.username;
return (name);
});
console.log("name(outside): ",name);
console.log("out: ",out);
console.log("out.username: ",out.username);
console.log("val: ",val);
/* next line will get an error saying name.username is undefined */
//console.log("name.username(outside): "+name.username);
...
and I get the output:
name(outside): undefined
out: Promise {
User {
id: '1456051390970320640',
bot: false,
username: 'Sir_Ross',
discriminator: '3871',
avatar: 'a956037b05108e4971b93f3ffde97b6c',
lastMessageID: '739552900342349856',
lastMessageChannelID: '739150130339340342',
flags: UserFlags { bitfield: 0 }
}
}
val: undefined
out.username: undefined
name.username(inside): Sir_Ross
My issue is that I can obviously get my username and print it to console, but I can’t get it out of the Promise. How do I get the value out of the Promise so that I can use it elsewhere?
Full Code:
module.exports = {
name: 'mail',
description: 'A system of collecting, sending, and receiving mail',
async execute(client,message, args) {
const fs = require('fs');
var path;
if(!args.length){
//No Arguments
return 0;
}
switch(args[0]){
case "send":
// Send Mail
if(args.length<3){
message.reply('Invalid Arguments: !mail send <recipient_id> <message>');
}else{
letter = "";
spaces = 0;
for(i = 0; i<message.content.length;i++){
if(spaces<3){
if(message.content[i]===' '){
spaces++;
}
continue;
}else{
letter+=message.content[i];
}
}
const fs = require('fs');
path = 'mail/';