我正在尝试使用邀请创建命令列表服务器。我想要的是该命令输出服务器邀请数组。
所以,第一件事是我不能在 .push()
块内 .then()
,因为数组返回空并且与回调有关。我会尝试使用 Promise
,特别是 Promise.all
和 .map
,以便机器人可以返回公会列表,但是如果我尝试向服务器发出邀请,它只会输出 {{ 1}}。也许是因为我没有指定要返回的内容,或者我做错了?
代码如下:
[undefined, undefined]
也许在 // headers, client.on and switch statement...
case "getservers":
var ServersEmbed = new discord.MessageEmbed()
.setColor(theme.theme.embedColours[0])
.setAuthor("Getting server list...")
;
var m = await msg.channel.send(ServersEmbed);
var l = await Promise.all(client.guilds.cache.map(guild => {
var inv = guild.channels.cache.filter(i => i.type != "category").random().createInvite();
return inv.url;
}));
console.log(l);
// m.edit(...
break;
// more cases and fun...
块内使用 return
是错误的。另外 Promise.all
在我的源代码中是异步的。
答案 0 :(得分:0)
你不必在地图上使用 Promise.all() ,如果你在地图函数中没有等待的东西,并且你没有在函数上使用异步,所以你甚至不能如果您愿意,请使用 await。