让机器人为它所在的每个公会创建邀请

Make bot create invite for every guild it is in

我想知道如何让机器人所在的每个公会都发出邀请并将其放入控制台。它一直给我所有这些烦人的打字错误。 TypeError: Cannot read property 'first' of undefined

我尝试更改和弄乱变量。

  doopliss.on('ready', guild => {
    doopliss.guilds.channels.first().createInvite()
    .then(invite => console.log(invite.url))
    .catch(err => console.error());
  });

expect : 机器人会为它所在的每个服务器发出邀请并在控制台中发布 实际结果:机器人死亡并发出烦人的类型错误

您可以使用 forEach() 循环来获得 所有 公会邀请。例如...

doopliss.guilds.forEach(guild => {
  guild.channels.first().createInvite()
    .then(inv => console.log(`${guild.name} | ${inv.url}`));
    // Outputs the guild name + the invite URL
});

参见 Map.forEach()

2020 年更新

在使用 foreach() ofc 之前,您需要使用 .cache

doopliss.guilds.cache.forEach(guild => {
         let channel = guild.channels.cache.last();
         createLink(channel,guild,message);
});


async function createLink(chan,guild,message) {
    let invite = await chan.createInvite().catch(console.error);
    try{
        message.channel.send(guild.name + '|' + invite);
    }catch (e) {
        message.channel.send(guild.name + '|' + 'no link available');
    }
}