为了账号安全,请及时绑定邮箱和手机立即绑定

“无法读取未定义的属性”缓存”

“无法读取未定义的属性”缓存”

白衣非少年 2022-09-23 21:50:55

我尝试搜索此问题以及如何在StackOverflow上修复它,但在我的情况下找不到有效的答案。


我正在尝试创建我的机器人状态,以显示它所在的每个服务器中的用户数。假设,1 台服务器有 5 台,第二台服务器有 5 台。它会将用户计数加在一起,并显示“我正在2台服务器中观看10个用户”或类似的东西。


法典:


            bot.guilds.cache.forEach((guild) => {

              guild.members.fetch().then(g => {

                  let count = 0;

                  g.members.cache.forEach((member) => { <--- error occurs here

                      count++;

                  });

                  console.log(count);

              });

            });


查看完整描述

2 回答

?
心有法竹

TA贡献1551条经验 获得超5个赞

你可以使用属性公会.成员计数来做到这一点。只需映射公会集合,并获得减少的总结。


const totalMembers = bot.guilds.cache.map(guild => guild.memberCount).reduce((accumulator, currentValue) => {

    return accumulator + currentValue

}, 0)

完整的解决方案


const Discord = require('discord.js')

const bot = new Discord.Client();


bot.on('ready', () => {

    setInterval(() => {

        const totalMembers = bot.guilds.cache.map(guild => guild.memberCount).reduce((accumulator, currentValue) => {

            return accumulator + currentValue

        }, 0)

        const totalGuilds = bot.guilds.cache.size

        bot.user.setPresence({ activity: { name: `${totalMembers} members in ${totalGuilds} servers`, type: 'WATCHING' }});

    }, 1000 * 60 * 10);

})


查看完整回答
反对 回复 2022-09-23
?
慕桂英3389331

TA贡献1699条经验 获得超8个赞

您收到的错误是因为 g.成员没有成员。



bot.guilds.cache.forEach((guild) => {

              guild.members.fetch().then(g => {

                  let count = 0;

                  g?.members?.cache?.forEach((member) => {

                      count++;

                  });

                  console.log(count);

              });

            });

还要检查成员为什么不参加回迁呼叫的原因。


查看完整回答
反对 回复 2022-09-23
  • 2 回答
  • 0 关注
  • 9 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信